diff --git a/org.eclipse.osbp.xtext.entitymock.tests/org.eclipse.osbp.xtext.entitymock.tests.launch b/org.eclipse.osbp.xtext.entitymock.tests/org.eclipse.osbp.xtext.entitymock.tests.launch
deleted file mode 100644
index 46bb417..0000000
--- a/org.eclipse.osbp.xtext.entitymock.tests/org.eclipse.osbp.xtext.entitymock.tests.launch
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.osbp.xtext.entitymock.tests"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.osbp.xtext.entitymock.tests"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.xtext.entitymock.tests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLInjectorProvider.java b/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLInjectorProvider.java
deleted file mode 100644
index 8a2d625..0000000
--- a/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLInjectorProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock;
-
-import org.eclipse.xtext.junit4.GlobalRegistries;
-import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
-import org.eclipse.xtext.junit4.IInjectorProvider;
-import org.eclipse.xtext.junit4.IRegistryConfigurator;
-
-import com.google.inject.Injector;
-
-public class EntityMockDSLInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
-	
-    protected GlobalStateMemento stateBeforeInjectorCreation;
-	protected GlobalStateMemento stateAfterInjectorCreation;
-	protected Injector injector;
-
-	static {
-		GlobalRegistries.initializeDefaults();
-	}
-
-	public Injector getInjector()
-	{
-		if (injector == null) {
-			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
-			this.injector = internalCreateInjector();
-			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
-		}
-		return injector;
-	}
-	
-	protected Injector internalCreateInjector() {
-	    return new EntityMockDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
-	}
-
-	public void restoreRegistry() {
-		stateBeforeInjectorCreation.restoreGlobalState();
-	}
-
-	public void setupRegistry() {
-		getInjector();
-		stateAfterInjectorCreation.restoreGlobalState();
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLUiInjectorProvider.java b/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLUiInjectorProvider.java
deleted file mode 100644
index 0c7eadd..0000000
--- a/org.eclipse.osbp.xtext.entitymock.tests/src-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDSLUiInjectorProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock;
-
-import org.eclipse.xtext.junit4.IInjectorProvider;
-
-import com.google.inject.Injector;
-
-public class EntityMockDSLUiInjectorProvider implements IInjectorProvider {
-	
-	public Injector getInjector() {
-		return org.eclipse.osbp.xtext.entitymock.ui.internal.EntityMockDSLActivator.getInstance().getInjector("org.eclipse.osbp.xtext.entitymock.EntityMockDSL");
-	}
-	
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/EntityMockDSLParser.java b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/EntityMockDSLParser.java
deleted file mode 100644
index 5fa009c..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/EntityMockDSLParser.java
+++ /dev/null
@@ -1,718 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.HashMap;
-
-import org.antlr.runtime.RecognitionException;
-import org.eclipse.xtext.AbstractElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
-
-import com.google.inject.Inject;
-
-import org.eclipse.osbp.xtext.entitymock.services.EntityMockDSLGrammarAccess;
-
-public class EntityMockDSLParser extends AbstractContentAssistParser {
-	
-	@Inject
-	private EntityMockDSLGrammarAccess grammarAccess;
-	
-	private Map<AbstractElement, String> nameMappings;
-	
-	@Override
-	protected org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr.internal.InternalEntityMockDSLParser createParser() {
-		org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr.internal.InternalEntityMockDSLParser result = new org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr.internal.InternalEntityMockDSLParser(null);
-		result.setGrammarAccess(grammarAccess);
-		return result;
-	}
-	
-	@Override
-	protected String getRuleName(AbstractElement element) {
-		if (nameMappings == null) {
-			nameMappings = new HashMap<AbstractElement, String>() {
-				private static final long serialVersionUID = 1L;
-				{
-					put(grammarAccess.getIEntityMockObjectUsableAccess().getAlternatives(), "rule__IEntityMockObjectUsable__Alternatives");
-					put(grammarAccess.getIEntityMockObjectAttributeAccess().getAlternatives(), "rule__IEntityMockObjectAttribute__Alternatives");
-					put(grammarAccess.getPropertyFillerTypeAccess().getAlternatives(), "rule__PropertyFillerType__Alternatives");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getAlternatives_1_0(), "rule__PropertyFillerSignedDoubleRange__Alternatives_1_0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getAlternatives_1_2(), "rule__PropertyFillerSignedDoubleRange__Alternatives_1_2");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getAlternatives_2_0(), "rule__PropertyFillerSignedIntegerRange__Alternatives_2_0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getAlternatives_2_2(), "rule__PropertyFillerSignedIntegerRange__Alternatives_2_2");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getAlternatives_1_0(), "rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getAlternatives_1_2(), "rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getAlternatives_2_0(), "rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getAlternatives_2_2(), "rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2");
-					put(grammarAccess.getEntityMockEntityAccess().getAlternatives_4(), "rule__EntityMockEntity__Alternatives_4");
-					put(grammarAccess.getIIterateAccess().getAlternatives(), "rule__IIterate__Alternatives");
-					put(grammarAccess.getDateAccess().getAlternatives(), "rule__Date__Alternatives");
-					put(grammarAccess.getIEntityMockEntityUsableAccess().getAlternatives(), "rule__IEntityMockEntityUsable__Alternatives");
-					put(grammarAccess.getIEntityMockAttributeAccess().getAlternatives(), "rule__IEntityMockAttribute__Alternatives");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAlternatives(), "rule__EntityMockEntityFunctionParameter__Alternatives");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getAlternatives(), "rule__EntityMockAttributeByObject__Alternatives");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getAlternatives_3(), "rule__EntityMockAttributeByReference__Alternatives_3");
-					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives(), "rule__XAnnotationElementValueOrCommaList__Alternatives");
-					put(grammarAccess.getXAnnotationElementValueAccess().getAlternatives(), "rule__XAnnotationElementValue__Alternatives");
-					put(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives(), "rule__XAnnotationOrExpression__Alternatives");
-					put(grammarAccess.getXAssignmentAccess().getAlternatives(), "rule__XAssignment__Alternatives");
-					put(grammarAccess.getOpMultiAssignAccess().getAlternatives(), "rule__OpMultiAssign__Alternatives");
-					put(grammarAccess.getOpEqualityAccess().getAlternatives(), "rule__OpEquality__Alternatives");
-					put(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1(), "rule__XRelationalExpression__Alternatives_1");
-					put(grammarAccess.getOpCompareAccess().getAlternatives(), "rule__OpCompare__Alternatives");
-					put(grammarAccess.getOpOtherAccess().getAlternatives(), "rule__OpOther__Alternatives");
-					put(grammarAccess.getOpOtherAccess().getAlternatives_5_1(), "rule__OpOther__Alternatives_5_1");
-					put(grammarAccess.getOpOtherAccess().getAlternatives_6_1(), "rule__OpOther__Alternatives_6_1");
-					put(grammarAccess.getOpAddAccess().getAlternatives(), "rule__OpAdd__Alternatives");
-					put(grammarAccess.getOpMultiAccess().getAlternatives(), "rule__OpMulti__Alternatives");
-					put(grammarAccess.getXUnaryOperationAccess().getAlternatives(), "rule__XUnaryOperation__Alternatives");
-					put(grammarAccess.getOpUnaryAccess().getAlternatives(), "rule__OpUnary__Alternatives");
-					put(grammarAccess.getOpPostfixAccess().getAlternatives(), "rule__OpPostfix__Alternatives");
-					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1(), "rule__XMemberFeatureCall__Alternatives_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1(), "rule__XMemberFeatureCall__Alternatives_1_1_3_1");
-					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
-					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
-					put(grammarAccess.getXCollectionLiteralAccess().getAlternatives(), "rule__XCollectionLiteral__Alternatives");
-					put(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2(), "rule__XSwitchExpression__Alternatives_2");
-					put(grammarAccess.getXCasePartAccess().getAlternatives_3(), "rule__XCasePart__Alternatives_3");
-					put(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives(), "rule__XExpressionOrVarDeclaration__Alternatives");
-					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1(), "rule__XVariableDeclaration__Alternatives_1");
-					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2(), "rule__XVariableDeclaration__Alternatives_2");
-					put(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1(), "rule__XFeatureCall__Alternatives_3_1");
-					put(grammarAccess.getFeatureCallIDAccess().getAlternatives(), "rule__FeatureCallID__Alternatives");
-					put(grammarAccess.getIdOrSuperAccess().getAlternatives(), "rule__IdOrSuper__Alternatives");
-					put(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1(), "rule__XConstructorCall__Alternatives_4_1");
-					put(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1(), "rule__XBooleanLiteral__Alternatives_1");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3(), "rule__XTryCatchFinallyExpression__Alternatives_3");
-					put(grammarAccess.getNumberAccess().getAlternatives(), "rule__Number__Alternatives");
-					put(grammarAccess.getNumberAccess().getAlternatives_1_0(), "rule__Number__Alternatives_1_0");
-					put(grammarAccess.getNumberAccess().getAlternatives_1_1_1(), "rule__Number__Alternatives_1_1_1");
-					put(grammarAccess.getJvmTypeReferenceAccess().getAlternatives(), "rule__JvmTypeReference__Alternatives");
-					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
-					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1(), "rule__XImportDeclaration__Alternatives_1");
-					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1_0_3(), "rule__XImportDeclaration__Alternatives_1_0_3");
-					put(grammarAccess.getEDateStepTypeAccess().getAlternatives(), "rule__EDateStepType__Alternatives");
-					put(grammarAccess.getEntityMockPackageAccess().getGroup(), "rule__EntityMockPackage__Group__0");
-					put(grammarAccess.getEntityMockPackageAccess().getGroup_3(), "rule__EntityMockPackage__Group_3__0");
-					put(grammarAccess.getEntityMockPackageAccess().getGroup_4(), "rule__EntityMockPackage__Group_4__0");
-					put(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup(), "rule__EntityMockQualifiedNameWithWildCard__Group__0");
-					put(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup_1(), "rule__EntityMockQualifiedNameWithWildCard__Group_1__0");
-					put(grammarAccess.getRunningDataInterchangesAccess().getGroup(), "rule__RunningDataInterchanges__Group__0");
-					put(grammarAccess.getRunningDataInterchangeAccess().getGroup(), "rule__RunningDataInterchange__Group__0");
-					put(grammarAccess.getEntityMockResourcesAccess().getGroup(), "rule__EntityMockResources__Group__0");
-					put(grammarAccess.getEntityMockResourceAccess().getGroup(), "rule__EntityMockResource__Group__0");
-					put(grammarAccess.getEntityMockResourceAccess().getGroup_3(), "rule__EntityMockResource__Group_3__0");
-					put(grammarAccess.getEntityMockResourceAccess().getGroup_3_2(), "rule__EntityMockResource__Group_3_2__0");
-					put(grammarAccess.getEntityMockResourceAttributeAccess().getGroup(), "rule__EntityMockResourceAttribute__Group__0");
-					put(grammarAccess.getEntityMockResourceDataRowAccess().getGroup(), "rule__EntityMockResourceDataRow__Group__0");
-					put(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2(), "rule__EntityMockResourceDataRow__Group_2__0");
-					put(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2_1(), "rule__EntityMockResourceDataRow__Group_2_1__0");
-					put(grammarAccess.getEntityMockObjectsAccess().getGroup(), "rule__EntityMockObjects__Group__0");
-					put(grammarAccess.getEntityMockObjectAccess().getGroup(), "rule__EntityMockObject__Group__0");
-					put(grammarAccess.getEntityMockObjectEnumAccess().getGroup(), "rule__EntityMockObjectEnum__Group__0");
-					put(grammarAccess.getEntityMockDataTypesAccess().getGroup(), "rule__EntityMockDataTypes__Group__0");
-					put(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup(), "rule__EntityMockObjectPlainValue__Group__0");
-					put(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup_3(), "rule__EntityMockObjectPlainValue__Group_3__0");
-					put(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup(), "rule__EntityMockObjectResourceValue__Group__0");
-					put(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup_4(), "rule__EntityMockObjectResourceValue__Group_4__0");
-					put(grammarAccess.getEntityMockObjectArrayValueAccess().getGroup(), "rule__EntityMockObjectArrayValue__Group__0");
-					put(grammarAccess.getEntityMockObjectItemValueAccess().getGroup(), "rule__EntityMockObjectItemValue__Group__0");
-					put(grammarAccess.getEntityMockObjectItemValueAccess().getGroup_3(), "rule__EntityMockObjectItemValue__Group_3__0");
-					put(grammarAccess.getEntityMockObjectEmbedAccess().getGroup(), "rule__EntityMockObjectEmbed__Group__0");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getGroup(), "rule__EntityMockObjectFunction__Group__0");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6(), "rule__EntityMockObjectFunction__Group_6__0");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6_1(), "rule__EntityMockObjectFunction__Group_6_1__0");
-					put(grammarAccess.getEntityMockObjectFunctionParameterAccess().getGroup(), "rule__EntityMockObjectFunctionParameter__Group__0");
-					put(grammarAccess.getEntityMockObjectFillAccess().getGroup(), "rule__EntityMockObjectFill__Group__0");
-					put(grammarAccess.getPropertyFillerDateFutureAccess().getGroup(), "rule__PropertyFillerDateFuture__Group__0");
-					put(grammarAccess.getPropertyFillerDatePastAccess().getGroup(), "rule__PropertyFillerDatePast__Group__0");
-					put(grammarAccess.getPropertyFillerBooleanAccess().getGroup(), "rule__PropertyFillerBoolean__Group__0");
-					put(grammarAccess.getPropertyFillerDateRangeAccess().getGroup(), "rule__PropertyFillerDateRange__Group__0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup(), "rule__PropertyFillerSignedDoubleRange__Group__0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup_1(), "rule__PropertyFillerSignedDoubleRange__Group_1__0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup_5(), "rule__PropertyFillerSignedDoubleRange__Group_5__0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup(), "rule__PropertyFillerSignedDoubleRandom__Group__0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup(), "rule__PropertyFillerSignedIntegerRange__Group__0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup_2(), "rule__PropertyFillerSignedIntegerRange__Group_2__0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup_3(), "rule__PropertyFillerSignedIntegerRange__Group_3__0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup(), "rule__PropertyFillerSignedIntegerRandom__Group__0");
-					put(grammarAccess.getPropertyFillerTextRandomAccess().getGroup(), "rule__PropertyFillerTextRandom__Group__0");
-					put(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup(), "rule__PropertyFillerTextParagraphs__Group__0");
-					put(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup(), "rule__PropertyFillerTextSentences__Group__0");
-					put(grammarAccess.getPropertyFillerTextWordsAccess().getGroup(), "rule__PropertyFillerTextWords__Group__0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup(), "rule__PropertyFillerUnsignedDoubleRange__Group__0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup_1(), "rule__PropertyFillerUnsignedDoubleRange__Group_1__0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup_5(), "rule__PropertyFillerUnsignedDoubleRange__Group_5__0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup(), "rule__PropertyFillerUnsignedDoubleRandom__Group__0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup(), "rule__PropertyFillerUnsignedIntegerRange__Group__0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup_2(), "rule__PropertyFillerUnsignedIntegerRange__Group_2__0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup_3(), "rule__PropertyFillerUnsignedIntegerRange__Group_3__0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup(), "rule__PropertyFillerUnsignedIntegerRandom__Group__0");
-					put(grammarAccess.getEntityMockDataTypeAccess().getGroup(), "rule__EntityMockDataType__Group__0");
-					put(grammarAccess.getEntityMockEntitiesAccess().getGroup(), "rule__EntityMockEntities__Group__0");
-					put(grammarAccess.getEntityMockEntityAccess().getGroup(), "rule__EntityMockEntity__Group__0");
-					put(grammarAccess.getEntityMockEntityAccess().getGroup_4_0(), "rule__EntityMockEntity__Group_4_0__0");
-					put(grammarAccess.getEntityMockEntityAccess().getGroup_4_1(), "rule__EntityMockEntity__Group_4_1__0");
-					put(grammarAccess.getEntityMockEntityAccess().getGroup_4_2(), "rule__EntityMockEntity__Group_4_2__0");
-					put(grammarAccess.getIntegerIterateAccess().getGroup(), "rule__IntegerIterate__Group__0");
-					put(grammarAccess.getDateIterateAccess().getGroup(), "rule__DateIterate__Group__0");
-					put(grammarAccess.getDateAccess().getGroup_3(), "rule__Date__Group_3__0");
-					put(grammarAccess.getEntityMockByResourceAttributeAccess().getGroup(), "rule__EntityMockByResourceAttribute__Group__0");
-					put(grammarAccess.getEntityMockTemporaryAccess().getGroup(), "rule__EntityMockTemporary__Group__0");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getGroup(), "rule__EntityMockEntityFunction__Group__0");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getGroup_4(), "rule__EntityMockEntityFunction__Group_4__0");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getGroup_4_1(), "rule__EntityMockEntityFunction__Group_4_1__0");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getGroup_1(), "rule__EntityMockEntityFunctionParameter__Group_1__0");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getGroup_1_1(), "rule__EntityMockEntityFunctionParameter__Group_1_1__0");
-					put(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getGroup(), "rule__EntityMockReferencedObjectAttribute__Group__0");
-					put(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getGroup_2(), "rule__EntityMockReferencedObjectAttribute__Group_2__0");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_0(), "rule__EntityMockAttributeByObject__Group_0__0");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_0_2(), "rule__EntityMockAttributeByObject__Group_0_2__0");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_1(), "rule__EntityMockAttributeByObject__Group_1__0");
-					put(grammarAccess.getEntityMockAttributeFillerAccess().getGroup(), "rule__EntityMockAttributeFiller__Group__0");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getGroup(), "rule__EntityMockAttributeByReference__Group__0");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getGroup_4(), "rule__EntityMockAttributeByReference__Group_4__0");
-					put(grammarAccess.getSignedNumberAccess().getGroup(), "rule__SignedNumber__Group__0");
-					put(grammarAccess.getUnsignedNumberAccess().getGroup(), "rule__UnsignedNumber__Group__0");
-					put(grammarAccess.getUnsignedNumberAccess().getGroup_1(), "rule__UnsignedNumber__Group_1__0");
-					put(grammarAccess.getSINTAccess().getGroup(), "rule__SINT__Group__0");
-					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
-					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
-					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
-					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
-					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
-					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
-					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
-					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
-					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
-					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
-					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
-					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
-					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
-					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
-					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
-					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
-					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
-					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
-					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
-					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
-					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
-					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
-					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
-					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
-					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
-					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
-					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
-					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
-					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
-					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
-					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
-					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
-					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
-					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
-					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
-					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
-					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
-					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
-					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
-					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
-					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
-					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
-					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
-					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
-					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
-					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
-					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
-					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
-					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
-					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
-					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
-					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
-					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
-					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
-					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
-					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
-					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
-					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
-					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
-					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
-					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
-					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
-					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
-					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
-					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
-					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
-					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
-					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
-					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
-					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
-					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
-					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
-					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
-					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
-					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
-					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
-					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
-					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
-					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
-					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
-					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
-					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
-					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
-					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
-					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
-					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
-					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
-					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
-					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
-					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
-					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
-					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
-					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
-					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
-					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
-					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
-					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
-					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
-					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
-					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
-					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
-					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
-					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
-					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
-					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
-					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
-					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
-					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
-					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
-					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
-					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
-					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
-					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
-					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
-					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
-					put(grammarAccess.getXImportDeclarationAccess().getGroup_1_0(), "rule__XImportDeclaration__Group_1_0__0");
-					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
-					put(grammarAccess.getEntityMockModelAccess().getPackagesAssignment(), "rule__EntityMockModel__PackagesAssignment");
-					put(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_1(), "rule__EntityMockPackage__ImportsAssignment_1");
-					put(grammarAccess.getEntityMockPackageAccess().getRunPriorityAssignment_3_1(), "rule__EntityMockPackage__RunPriorityAssignment_3_1");
-					put(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_4_1(), "rule__EntityMockPackage__ImportsAssignment_4_1");
-					put(grammarAccess.getEntityMockPackageAccess().getDatainterchangesAssignment_5(), "rule__EntityMockPackage__DatainterchangesAssignment_5");
-					put(grammarAccess.getEntityMockPackageAccess().getResourcesAssignment_6(), "rule__EntityMockPackage__ResourcesAssignment_6");
-					put(grammarAccess.getEntityMockPackageAccess().getObjectsAssignment_7(), "rule__EntityMockPackage__ObjectsAssignment_7");
-					put(grammarAccess.getEntityMockPackageAccess().getDatatypesAssignment_8(), "rule__EntityMockPackage__DatatypesAssignment_8");
-					put(grammarAccess.getEntityMockPackageAccess().getEntitiesAssignment_9(), "rule__EntityMockPackage__EntitiesAssignment_9");
-					put(grammarAccess.getEntityModelImportAccess().getImportedNamespaceAssignment(), "rule__EntityModelImport__ImportedNamespaceAssignment");
-					put(grammarAccess.getRunningDataInterchangesAccess().getDatainterchangesAssignment_3(), "rule__RunningDataInterchanges__DatainterchangesAssignment_3");
-					put(grammarAccess.getRunningDataInterchangeAccess().getDatainterchangeRefAssignment_2(), "rule__RunningDataInterchange__DatainterchangeRefAssignment_2");
-					put(grammarAccess.getRunningDataInterchangeAccess().getFileURLAssignment_4(), "rule__RunningDataInterchange__FileURLAssignment_4");
-					put(grammarAccess.getEntityMockResourcesAccess().getResourcesAssignment_3(), "rule__EntityMockResources__ResourcesAssignment_3");
-					put(grammarAccess.getEntityMockResourceAccess().getNameAssignment_1(), "rule__EntityMockResource__NameAssignment_1");
-					put(grammarAccess.getEntityMockResourceAccess().getAttributesAssignment_3_2_0(), "rule__EntityMockResource__AttributesAssignment_3_2_0");
-					put(grammarAccess.getEntityMockResourceAccess().getDatarowsAssignment_6(), "rule__EntityMockResource__DatarowsAssignment_6");
-					put(grammarAccess.getEntityMockResourceAttributeAccess().getNameAssignment_1(), "rule__EntityMockResourceAttribute__NameAssignment_1");
-					put(grammarAccess.getEntityMockResourceDataRowAccess().getNameAssignment_1(), "rule__EntityMockResourceDataRow__NameAssignment_1");
-					put(grammarAccess.getEntityMockResourceDataRowAccess().getValuesAssignment_2_1_0(), "rule__EntityMockResourceDataRow__ValuesAssignment_2_1_0");
-					put(grammarAccess.getEntityMockObjectsAccess().getObjectsAssignment_3(), "rule__EntityMockObjects__ObjectsAssignment_3");
-					put(grammarAccess.getEntityMockObjectAccess().getNameAssignment_1(), "rule__EntityMockObject__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectAccess().getEnumerationsAssignment_3(), "rule__EntityMockObject__EnumerationsAssignment_3");
-					put(grammarAccess.getEntityMockObjectAccess().getAttributesAssignment_4(), "rule__EntityMockObject__AttributesAssignment_4");
-					put(grammarAccess.getEntityMockObjectAccess().getCalculationsAssignment_5(), "rule__EntityMockObject__CalculationsAssignment_5");
-					put(grammarAccess.getEntityMockObjectEnumAccess().getNameAssignment_1(), "rule__EntityMockObjectEnum__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectEnumAccess().getUsingResourceAssignment_3(), "rule__EntityMockObjectEnum__UsingResourceAssignment_3");
-					put(grammarAccess.getEntityMockDataTypesAccess().getDatatypesAssignment_3(), "rule__EntityMockDataTypes__DatatypesAssignment_3");
-					put(grammarAccess.getEntityMockObjectPlainValueAccess().getNameAssignment_1(), "rule__EntityMockObjectPlainValue__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectPlainValueAccess().getValuesAssignment_3_0(), "rule__EntityMockObjectPlainValue__ValuesAssignment_3_0");
-					put(grammarAccess.getEntityMockObjectResourceValueAccess().getNameAssignment_1(), "rule__EntityMockObjectResourceValue__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceEnumAssignment_3(), "rule__EntityMockObjectResourceValue__ResourceEnumAssignment_3");
-					put(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceAttributeAssignment_4_1(), "rule__EntityMockObjectResourceValue__ResourceAttributeAssignment_4_1");
-					put(grammarAccess.getEntityMockObjectArrayValueAccess().getNameAssignment_1(), "rule__EntityMockObjectArrayValue__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectArrayValueAccess().getEnumerationAssignment_3(), "rule__EntityMockObjectArrayValue__EnumerationAssignment_3");
-					put(grammarAccess.getEntityMockObjectArrayValueAccess().getItemsAssignment_5(), "rule__EntityMockObjectArrayValue__ItemsAssignment_5");
-					put(grammarAccess.getEntityMockObjectItemValueAccess().getDatarowAssignment_1(), "rule__EntityMockObjectItemValue__DatarowAssignment_1");
-					put(grammarAccess.getEntityMockObjectItemValueAccess().getValuesAssignment_3_0(), "rule__EntityMockObjectItemValue__ValuesAssignment_3_0");
-					put(grammarAccess.getEntityMockObjectEmbedAccess().getNameAssignment_2(), "rule__EntityMockObjectEmbed__NameAssignment_2");
-					put(grammarAccess.getEntityMockObjectEmbedAccess().getObjectAssignment_4(), "rule__EntityMockObjectEmbed__ObjectAssignment_4");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getNameAssignment_1(), "rule__EntityMockObjectFunction__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getOftypeAssignment_3(), "rule__EntityMockObjectFunction__OftypeAssignment_3");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_0(), "rule__EntityMockObjectFunction__ParamsAssignment_6_0");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_1_1(), "rule__EntityMockObjectFunction__ParamsAssignment_6_1_1");
-					put(grammarAccess.getEntityMockObjectFunctionAccess().getBodyAssignment_8(), "rule__EntityMockObjectFunction__BodyAssignment_8");
-					put(grammarAccess.getEntityMockObjectFunctionParameterAccess().getParameterTypeAssignment_0(), "rule__EntityMockObjectFunctionParameter__ParameterTypeAssignment_0");
-					put(grammarAccess.getEntityMockObjectFunctionParameterAccess().getNameAssignment_1(), "rule__EntityMockObjectFunctionParameter__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectFillAccess().getNameAssignment_1(), "rule__EntityMockObjectFill__NameAssignment_1");
-					put(grammarAccess.getEntityMockObjectFillAccess().getFillerTypeAssignment_3(), "rule__EntityMockObjectFill__FillerTypeAssignment_3");
-					put(grammarAccess.getPropertyFillerDateFutureAccess().getDateFutureYearsAssignment_1(), "rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1");
-					put(grammarAccess.getPropertyFillerDatePastAccess().getDatePastYearsAssignment_1(), "rule__PropertyFillerDatePast__DatePastYearsAssignment_1");
-					put(grammarAccess.getPropertyFillerDateRangeAccess().getDateBeginYearsAssignment_1(), "rule__PropertyFillerDateRange__DateBeginYearsAssignment_1");
-					put(grammarAccess.getPropertyFillerDateRangeAccess().getDateEndYearsAssignment_3(), "rule__PropertyFillerDateRange__DateEndYearsAssignment_3");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0(), "rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1(), "rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0(), "rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1(), "rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getDecimalsAssignment_3(), "rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3");
-					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getRoundedAssignment_5_1(), "rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1");
-					put(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0(), "rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1(), "rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0(), "rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1(), "rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1");
-					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getRoundedAssignment_3_1(), "rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1");
-					put(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2");
-					put(grammarAccess.getPropertyFillerTextRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerTextRandom__ItemsAssignment_2");
-					put(grammarAccess.getPropertyFillerTextParagraphsAccess().getCountAssignment_2(), "rule__PropertyFillerTextParagraphs__CountAssignment_2");
-					put(grammarAccess.getPropertyFillerTextSentencesAccess().getCountAssignment_2(), "rule__PropertyFillerTextSentences__CountAssignment_2");
-					put(grammarAccess.getPropertyFillerTextWordsAccess().getCountAssignment_2(), "rule__PropertyFillerTextWords__CountAssignment_2");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0(), "rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1(), "rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0(), "rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1(), "rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getDecimalsAssignment_3(), "rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getRoundedAssignment_5_1(), "rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1");
-					put(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0(), "rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1(), "rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0(), "rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1(), "rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getRoundedAssignment_3_1(), "rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1");
-					put(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2");
-					put(grammarAccess.getEntityMockDataTypeAccess().getNameAssignment_1(), "rule__EntityMockDataType__NameAssignment_1");
-					put(grammarAccess.getEntityMockEntitiesAccess().getEntitiesAssignment_3(), "rule__EntityMockEntities__EntitiesAssignment_3");
-					put(grammarAccess.getEntityMockEntityAccess().getNameAssignment_1(), "rule__EntityMockEntity__NameAssignment_1");
-					put(grammarAccess.getEntityMockEntityAccess().getEntityRefAssignment_3(), "rule__EntityMockEntity__EntityRefAssignment_3");
-					put(grammarAccess.getEntityMockEntityAccess().getMinRowsAssignment_4_0_1(), "rule__EntityMockEntity__MinRowsAssignment_4_0_1");
-					put(grammarAccess.getEntityMockEntityAccess().getMaxRowsAssignment_4_0_3(), "rule__EntityMockEntity__MaxRowsAssignment_4_0_3");
-					put(grammarAccess.getEntityMockEntityAccess().getTemporariesAssignment_4_0_5(), "rule__EntityMockEntity__TemporariesAssignment_4_0_5");
-					put(grammarAccess.getEntityMockEntityAccess().getAttributesAssignment_4_0_6(), "rule__EntityMockEntity__AttributesAssignment_4_0_6");
-					put(grammarAccess.getEntityMockEntityAccess().getCalculationsAssignment_4_0_7(), "rule__EntityMockEntity__CalculationsAssignment_4_0_7");
-					put(grammarAccess.getEntityMockEntityAccess().getByResourceAssignment_4_1_1(), "rule__EntityMockEntity__ByResourceAssignment_4_1_1");
-					put(grammarAccess.getEntityMockEntityAccess().getByResourceAttributesAssignment_4_1_3(), "rule__EntityMockEntity__ByResourceAttributesAssignment_4_1_3");
-					put(grammarAccess.getEntityMockEntityAccess().getCreateBlobMappingAssignment_4_1_4(), "rule__EntityMockEntity__CreateBlobMappingAssignment_4_1_4");
-					put(grammarAccess.getEntityMockEntityAccess().getIteratorAssignment_4_2_1(), "rule__EntityMockEntity__IteratorAssignment_4_2_1");
-					put(grammarAccess.getEntityMockEntityAccess().getIterateAssignment_4_2_3(), "rule__EntityMockEntity__IterateAssignment_4_2_3");
-					put(grammarAccess.getEntityMockEntityAccess().getTemporariesAssignment_4_2_5(), "rule__EntityMockEntity__TemporariesAssignment_4_2_5");
-					put(grammarAccess.getEntityMockEntityAccess().getAttributesAssignment_4_2_6(), "rule__EntityMockEntity__AttributesAssignment_4_2_6");
-					put(grammarAccess.getEntityMockEntityAccess().getCalculationsAssignment_4_2_7(), "rule__EntityMockEntity__CalculationsAssignment_4_2_7");
-					put(grammarAccess.getIntegerIterateAccess().getFromAssignment_1(), "rule__IntegerIterate__FromAssignment_1");
-					put(grammarAccess.getIntegerIterateAccess().getUntilAssignment_3(), "rule__IntegerIterate__UntilAssignment_3");
-					put(grammarAccess.getIntegerIterateAccess().getStepAssignment_5(), "rule__IntegerIterate__StepAssignment_5");
-					put(grammarAccess.getDateIterateAccess().getFromAssignment_1(), "rule__DateIterate__FromAssignment_1");
-					put(grammarAccess.getDateIterateAccess().getUntilAssignment_3(), "rule__DateIterate__UntilAssignment_3");
-					put(grammarAccess.getDateIterateAccess().getStepCountAssignment_5(), "rule__DateIterate__StepCountAssignment_5");
-					put(grammarAccess.getDateIterateAccess().getStepTypeAssignment_6(), "rule__DateIterate__StepTypeAssignment_6");
-					put(grammarAccess.getDateAccess().getYesterdayAssignment_0(), "rule__Date__YesterdayAssignment_0");
-					put(grammarAccess.getDateAccess().getTodayAssignment_1(), "rule__Date__TodayAssignment_1");
-					put(grammarAccess.getDateAccess().getTomorrowAssignment_2(), "rule__Date__TomorrowAssignment_2");
-					put(grammarAccess.getDateAccess().getYearAssignment_3_0(), "rule__Date__YearAssignment_3_0");
-					put(grammarAccess.getDateAccess().getMonthAssignment_3_2(), "rule__Date__MonthAssignment_3_2");
-					put(grammarAccess.getDateAccess().getDayAssignment_3_4(), "rule__Date__DayAssignment_3_4");
-					put(grammarAccess.getEntityMockByResourceAttributeAccess().getAttributeRefAssignment_2(), "rule__EntityMockByResourceAttribute__AttributeRefAssignment_2");
-					put(grammarAccess.getEntityMockByResourceAttributeAccess().getResourceAttributeAssignment_4(), "rule__EntityMockByResourceAttribute__ResourceAttributeAssignment_4");
-					put(grammarAccess.getEntityMockTemporaryAccess().getNameAssignment_1(), "rule__EntityMockTemporary__NameAssignment_1");
-					put(grammarAccess.getEntityMockTemporaryAccess().getObjectAssignment_3(), "rule__EntityMockTemporary__ObjectAssignment_3");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getAttributeRefAssignment_1(), "rule__EntityMockEntityFunction__AttributeRefAssignment_1");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getParamsAssignment_4_0(), "rule__EntityMockEntityFunction__ParamsAssignment_4_0");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getParamsAssignment_4_1_1(), "rule__EntityMockEntityFunction__ParamsAssignment_4_1_1");
-					put(grammarAccess.getEntityMockEntityFunctionAccess().getBodyAssignment_6(), "rule__EntityMockEntityFunction__BodyAssignment_6");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAttributeRefAssignment_0(), "rule__EntityMockEntityFunctionParameter__AttributeRefAssignment_0");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getReferencePathsAssignment_1_0(), "rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_0");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getReferencePathsAssignment_1_1_1(), "rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_1_1");
-					put(grammarAccess.getEntityMockEntityFunctionParameterAccess().getReferenceRefAssignment_1_3(), "rule__EntityMockEntityFunctionParameter__ReferenceRefAssignment_1_3");
-					put(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getTemporaryAssignment_1(), "rule__EntityMockReferencedObjectAttribute__TemporaryAssignment_1");
-					put(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getEmbeddedAssignment_2_1(), "rule__EntityMockReferencedObjectAttribute__EmbeddedAssignment_2_1");
-					put(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getAttributeAssignment_4(), "rule__EntityMockReferencedObjectAttribute__AttributeAssignment_4");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getAttributeRefAssignment_0_1(), "rule__EntityMockAttributeByObject__AttributeRefAssignment_0_1");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getReferenceAssignment_0_2_1(), "rule__EntityMockAttributeByObject__ReferenceAssignment_0_2_1");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getResourceEnumAssignment_1_1(), "rule__EntityMockAttributeByObject__ResourceEnumAssignment_1_1");
-					put(grammarAccess.getEntityMockAttributeByObjectAccess().getResourceAttributeAssignment_1_3(), "rule__EntityMockAttributeByObject__ResourceAttributeAssignment_1_3");
-					put(grammarAccess.getEntityMockAttributeFillerAccess().getAttributeRefAssignment_1(), "rule__EntityMockAttributeFiller__AttributeRefAssignment_1");
-					put(grammarAccess.getEntityMockAttributeFillerAccess().getFillerTypeAssignment_3(), "rule__EntityMockAttributeFiller__FillerTypeAssignment_3");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getAttributeRefAssignment_1(), "rule__EntityMockAttributeByReference__AttributeRefAssignment_1");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getMockedEntityAssignment_3_1(), "rule__EntityMockAttributeByReference__MockedEntityAssignment_3_1");
-					put(grammarAccess.getEntityMockAttributeByReferenceAccess().getOptionalForAssignment_4_1(), "rule__EntityMockAttributeByReference__OptionalForAssignment_4_1");
-					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
-					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
-					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
-					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
-					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
-					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
-					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
-					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
-					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
-					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
-					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
-					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
-					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
-					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
-					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
-					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
-					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
-					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
-					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
-					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
-					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
-					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
-					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
-					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
-					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
-					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
-					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
-					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
-					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
-					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
-					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
-					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
-					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
-					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
-					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
-					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
-					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
-					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
-					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
-					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
-					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
-					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
-					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
-					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
-					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
-					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
-					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
-					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
-					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
-					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
-					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
-					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
-					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
-					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
-					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
-					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
-					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
-					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
-					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
-					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
-					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
-					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
-					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
-					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
-					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
-					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
-					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
-					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
-					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
-					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
-					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
-					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
-					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
-					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
-					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
-					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
-					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
-					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
-					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
-					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
-					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
-					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
-					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
-					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
-					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
-					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
-					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
-					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
-					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
-					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
-					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
-					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
-					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
-					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
-					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
-					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
-					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
-					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
-					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
-					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
-					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
-					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
-					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
-					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
-					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
-					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
-					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
-					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
-					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
-					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
-					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
-					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
-					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
-					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
-					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
-				}
-			};
-		}
-		return nameMappings.get(element);
-	}
-	
-	@Override
-	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
-		try {
-			org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr.internal.InternalEntityMockDSLParser typedParser = (org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr.internal.InternalEntityMockDSLParser) parser;
-			typedParser.entryRuleEntityMockModel();
-			return typedParser.getFollowElements();
-		} catch(RecognitionException ex) {
-			throw new RuntimeException(ex);
-		}		
-	}
-	
-	@Override
-	protected String[] getInitialHiddenTokens() {
-		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
-	}
-	
-	public EntityMockDSLGrammarAccess getGrammarAccess() {
-		return this.grammarAccess;
-	}
-	
-	public void setGrammarAccess(EntityMockDSLGrammarAccess grammarAccess) {
-		this.grammarAccess = grammarAccess;
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/PartialEntityMockDSLContentAssistParser.java b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/PartialEntityMockDSLContentAssistParser.java
deleted file mode 100644
index 67ea992..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/PartialEntityMockDSLContentAssistParser.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock.ui.contentassist.antlr;
-
-import java.util.Collection;
-import java.util.Collections;
-
-import org.eclipse.xtext.AbstractRule;
-import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
-import org.eclipse.xtext.util.PolymorphicDispatcher;
-
-/**
- * @author Sebastian Zarnekow - Initial contribution and API
- */
-@SuppressWarnings("restriction")
-public class PartialEntityMockDSLContentAssistParser extends EntityMockDSLParser implements IPartialContentAssistParser {
-
-	private AbstractRule rule;
-
-	public void initializeFor(AbstractRule rule) {
-		this.rule = rule;
-	}
-	
-	@Override
-	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
-		if (rule == null || rule.eIsProxy())
-			return Collections.emptyList();
-		String methodName = "entryRule" + rule.getName();
-		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
-			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
-		dispatcher.invoke();
-		return parser.getFollowElements();
-	}
-
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g
deleted file mode 100644
index 4f8bd16..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g
+++ /dev/null
@@ -1,10015 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-grammar InternalEntityMockDSL;
-
-options {
-	superClass=AbstractInternalContentAssistParser;
-	backtrack=true;
-	
-}
-
-@lexer::header {
-package org.eclipse.osbp.xtext.entitymock.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.osbp.xtext.entitymock.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.osbp.xtext.entitymock.services.EntityMockDSLGrammarAccess;
-
-}
-
-@parser::members {
- 
- 	private EntityMockDSLGrammarAccess grammarAccess;
- 	
-    public void setGrammarAccess(EntityMockDSLGrammarAccess grammarAccess) {
-    	this.grammarAccess = grammarAccess;
-    }
-    
-    @Override
-    protected Grammar getGrammar() {
-    	return grammarAccess.getGrammar();
-    }
-    
-    @Override
-    protected String getValueForTokenName(String tokenName) {
-    	return tokenName;
-    }
-
-}
-
-
-
-
-// Entry rule entryRuleEntityMockModel
-entryRuleEntityMockModel 
-:
-{ before(grammarAccess.getEntityMockModelRule()); }
-	 ruleEntityMockModel
-{ after(grammarAccess.getEntityMockModelRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockModel
-ruleEntityMockModel
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockModelAccess().getPackagesAssignment()); }
-(rule__EntityMockModel__PackagesAssignment)*
-{ after(grammarAccess.getEntityMockModelAccess().getPackagesAssignment()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockPackage
-entryRuleEntityMockPackage 
-:
-{ before(grammarAccess.getEntityMockPackageRule()); }
-	 ruleEntityMockPackage
-{ after(grammarAccess.getEntityMockPackageRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockPackage
-ruleEntityMockPackage
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getGroup()); }
-(rule__EntityMockPackage__Group__0)
-{ after(grammarAccess.getEntityMockPackageAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityModelImport
-entryRuleEntityModelImport 
-:
-{ before(grammarAccess.getEntityModelImportRule()); }
-	 ruleEntityModelImport
-{ after(grammarAccess.getEntityModelImportRule()); } 
-	 EOF 
-;
-
-// Rule EntityModelImport
-ruleEntityModelImport
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityModelImportAccess().getImportedNamespaceAssignment()); }
-(rule__EntityModelImport__ImportedNamespaceAssignment)
-{ after(grammarAccess.getEntityModelImportAccess().getImportedNamespaceAssignment()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockQualifiedNameWithWildCard
-entryRuleEntityMockQualifiedNameWithWildCard 
-:
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardRule()); }
-	 ruleEntityMockQualifiedNameWithWildCard
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockQualifiedNameWithWildCard
-ruleEntityMockQualifiedNameWithWildCard
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup()); }
-(rule__EntityMockQualifiedNameWithWildCard__Group__0)
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleRunningDataInterchanges
-entryRuleRunningDataInterchanges 
-:
-{ before(grammarAccess.getRunningDataInterchangesRule()); }
-	 ruleRunningDataInterchanges
-{ after(grammarAccess.getRunningDataInterchangesRule()); } 
-	 EOF 
-;
-
-// Rule RunningDataInterchanges
-ruleRunningDataInterchanges
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getGroup()); }
-(rule__RunningDataInterchanges__Group__0)
-{ after(grammarAccess.getRunningDataInterchangesAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleRunningDataInterchange
-entryRuleRunningDataInterchange 
-:
-{ before(grammarAccess.getRunningDataInterchangeRule()); }
-	 ruleRunningDataInterchange
-{ after(grammarAccess.getRunningDataInterchangeRule()); } 
-	 EOF 
-;
-
-// Rule RunningDataInterchange
-ruleRunningDataInterchange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getGroup()); }
-(rule__RunningDataInterchange__Group__0)
-{ after(grammarAccess.getRunningDataInterchangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockResources
-entryRuleEntityMockResources 
-:
-{ before(grammarAccess.getEntityMockResourcesRule()); }
-	 ruleEntityMockResources
-{ after(grammarAccess.getEntityMockResourcesRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockResources
-ruleEntityMockResources
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getGroup()); }
-(rule__EntityMockResources__Group__0)
-{ after(grammarAccess.getEntityMockResourcesAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockResource
-entryRuleEntityMockResource 
-:
-{ before(grammarAccess.getEntityMockResourceRule()); }
-	 ruleEntityMockResource
-{ after(grammarAccess.getEntityMockResourceRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockResource
-ruleEntityMockResource
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getGroup()); }
-(rule__EntityMockResource__Group__0)
-{ after(grammarAccess.getEntityMockResourceAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockResourceAttribute
-entryRuleEntityMockResourceAttribute 
-:
-{ before(grammarAccess.getEntityMockResourceAttributeRule()); }
-	 ruleEntityMockResourceAttribute
-{ after(grammarAccess.getEntityMockResourceAttributeRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockResourceAttribute
-ruleEntityMockResourceAttribute
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockResourceAttributeAccess().getGroup()); }
-(rule__EntityMockResourceAttribute__Group__0)
-{ after(grammarAccess.getEntityMockResourceAttributeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockResourceDataRow
-entryRuleEntityMockResourceDataRow 
-:
-{ before(grammarAccess.getEntityMockResourceDataRowRule()); }
-	 ruleEntityMockResourceDataRow
-{ after(grammarAccess.getEntityMockResourceDataRowRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockResourceDataRow
-ruleEntityMockResourceDataRow
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getGroup()); }
-(rule__EntityMockResourceDataRow__Group__0)
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjects
-entryRuleEntityMockObjects 
-:
-{ before(grammarAccess.getEntityMockObjectsRule()); }
-	 ruleEntityMockObjects
-{ after(grammarAccess.getEntityMockObjectsRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjects
-ruleEntityMockObjects
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getGroup()); }
-(rule__EntityMockObjects__Group__0)
-{ after(grammarAccess.getEntityMockObjectsAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObject
-entryRuleEntityMockObject 
-:
-{ before(grammarAccess.getEntityMockObjectRule()); }
-	 ruleEntityMockObject
-{ after(grammarAccess.getEntityMockObjectRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObject
-ruleEntityMockObject
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getGroup()); }
-(rule__EntityMockObject__Group__0)
-{ after(grammarAccess.getEntityMockObjectAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectEnum
-entryRuleEntityMockObjectEnum 
-:
-{ before(grammarAccess.getEntityMockObjectEnumRule()); }
-	 ruleEntityMockObjectEnum
-{ after(grammarAccess.getEntityMockObjectEnumRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectEnum
-ruleEntityMockObjectEnum
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectEnumAccess().getGroup()); }
-(rule__EntityMockObjectEnum__Group__0)
-{ after(grammarAccess.getEntityMockObjectEnumAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockDataTypes
-entryRuleEntityMockDataTypes 
-:
-{ before(grammarAccess.getEntityMockDataTypesRule()); }
-	 ruleEntityMockDataTypes
-{ after(grammarAccess.getEntityMockDataTypesRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockDataTypes
-ruleEntityMockDataTypes
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getGroup()); }
-(rule__EntityMockDataTypes__Group__0)
-{ after(grammarAccess.getEntityMockDataTypesAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-// Entry rule entryRuleIEntityMockObjectAttribute
-entryRuleIEntityMockObjectAttribute 
-:
-{ before(grammarAccess.getIEntityMockObjectAttributeRule()); }
-	 ruleIEntityMockObjectAttribute
-{ after(grammarAccess.getIEntityMockObjectAttributeRule()); } 
-	 EOF 
-;
-
-// Rule IEntityMockObjectAttribute
-ruleIEntityMockObjectAttribute
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getAlternatives()); }
-(rule__IEntityMockObjectAttribute__Alternatives)
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectPlainValue
-entryRuleEntityMockObjectPlainValue 
-:
-{ before(grammarAccess.getEntityMockObjectPlainValueRule()); }
-	 ruleEntityMockObjectPlainValue
-{ after(grammarAccess.getEntityMockObjectPlainValueRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectPlainValue
-ruleEntityMockObjectPlainValue
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup()); }
-(rule__EntityMockObjectPlainValue__Group__0)
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectResourceValue
-entryRuleEntityMockObjectResourceValue 
-:
-{ before(grammarAccess.getEntityMockObjectResourceValueRule()); }
-	 ruleEntityMockObjectResourceValue
-{ after(grammarAccess.getEntityMockObjectResourceValueRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectResourceValue
-ruleEntityMockObjectResourceValue
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup()); }
-(rule__EntityMockObjectResourceValue__Group__0)
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectArrayValue
-entryRuleEntityMockObjectArrayValue 
-:
-{ before(grammarAccess.getEntityMockObjectArrayValueRule()); }
-	 ruleEntityMockObjectArrayValue
-{ after(grammarAccess.getEntityMockObjectArrayValueRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectArrayValue
-ruleEntityMockObjectArrayValue
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getGroup()); }
-(rule__EntityMockObjectArrayValue__Group__0)
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectItemValue
-entryRuleEntityMockObjectItemValue 
-:
-{ before(grammarAccess.getEntityMockObjectItemValueRule()); }
-	 ruleEntityMockObjectItemValue
-{ after(grammarAccess.getEntityMockObjectItemValueRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectItemValue
-ruleEntityMockObjectItemValue
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getGroup()); }
-(rule__EntityMockObjectItemValue__Group__0)
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectEmbed
-entryRuleEntityMockObjectEmbed 
-:
-{ before(grammarAccess.getEntityMockObjectEmbedRule()); }
-	 ruleEntityMockObjectEmbed
-{ after(grammarAccess.getEntityMockObjectEmbedRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectEmbed
-ruleEntityMockObjectEmbed
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getGroup()); }
-(rule__EntityMockObjectEmbed__Group__0)
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectFunction
-entryRuleEntityMockObjectFunction 
-:
-{ before(grammarAccess.getEntityMockObjectFunctionRule()); }
-	 ruleEntityMockObjectFunction
-{ after(grammarAccess.getEntityMockObjectFunctionRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectFunction
-ruleEntityMockObjectFunction
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getGroup()); }
-(rule__EntityMockObjectFunction__Group__0)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectFunctionParameter
-entryRuleEntityMockObjectFunctionParameter 
-:
-{ before(grammarAccess.getEntityMockObjectFunctionParameterRule()); }
-	 ruleEntityMockObjectFunctionParameter
-{ after(grammarAccess.getEntityMockObjectFunctionParameterRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectFunctionParameter
-ruleEntityMockObjectFunctionParameter
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionParameterAccess().getGroup()); }
-(rule__EntityMockObjectFunctionParameter__Group__0)
-{ after(grammarAccess.getEntityMockObjectFunctionParameterAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockObjectFill
-entryRuleEntityMockObjectFill 
-:
-{ before(grammarAccess.getEntityMockObjectFillRule()); }
-	 ruleEntityMockObjectFill
-{ after(grammarAccess.getEntityMockObjectFillRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockObjectFill
-ruleEntityMockObjectFill
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockObjectFillAccess().getGroup()); }
-(rule__EntityMockObjectFill__Group__0)
-{ after(grammarAccess.getEntityMockObjectFillAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerType
-entryRulePropertyFillerType 
-:
-{ before(grammarAccess.getPropertyFillerTypeRule()); }
-	 rulePropertyFillerType
-{ after(grammarAccess.getPropertyFillerTypeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerType
-rulePropertyFillerType
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getAlternatives()); }
-(rule__PropertyFillerType__Alternatives)
-{ after(grammarAccess.getPropertyFillerTypeAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerDateFuture
-entryRulePropertyFillerDateFuture 
-:
-{ before(grammarAccess.getPropertyFillerDateFutureRule()); }
-	 rulePropertyFillerDateFuture
-{ after(grammarAccess.getPropertyFillerDateFutureRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerDateFuture
-rulePropertyFillerDateFuture
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerDateFutureAccess().getGroup()); }
-(rule__PropertyFillerDateFuture__Group__0)
-{ after(grammarAccess.getPropertyFillerDateFutureAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerDatePast
-entryRulePropertyFillerDatePast 
-:
-{ before(grammarAccess.getPropertyFillerDatePastRule()); }
-	 rulePropertyFillerDatePast
-{ after(grammarAccess.getPropertyFillerDatePastRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerDatePast
-rulePropertyFillerDatePast
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerDatePastAccess().getGroup()); }
-(rule__PropertyFillerDatePast__Group__0)
-{ after(grammarAccess.getPropertyFillerDatePastAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerBoolean
-entryRulePropertyFillerBoolean 
-:
-{ before(grammarAccess.getPropertyFillerBooleanRule()); }
-	 rulePropertyFillerBoolean
-{ after(grammarAccess.getPropertyFillerBooleanRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerBoolean
-rulePropertyFillerBoolean
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerBooleanAccess().getGroup()); }
-(rule__PropertyFillerBoolean__Group__0)
-{ after(grammarAccess.getPropertyFillerBooleanAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerDateRange
-entryRulePropertyFillerDateRange 
-:
-{ before(grammarAccess.getPropertyFillerDateRangeRule()); }
-	 rulePropertyFillerDateRange
-{ after(grammarAccess.getPropertyFillerDateRangeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerDateRange
-rulePropertyFillerDateRange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerDateRangeAccess().getGroup()); }
-(rule__PropertyFillerDateRange__Group__0)
-{ after(grammarAccess.getPropertyFillerDateRangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerSignedDoubleRange
-entryRulePropertyFillerSignedDoubleRange 
-:
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeRule()); }
-	 rulePropertyFillerSignedDoubleRange
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerSignedDoubleRange
-rulePropertyFillerSignedDoubleRange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup()); }
-(rule__PropertyFillerSignedDoubleRange__Group__0)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerSignedDoubleRandom
-entryRulePropertyFillerSignedDoubleRandom 
-:
-{ before(grammarAccess.getPropertyFillerSignedDoubleRandomRule()); }
-	 rulePropertyFillerSignedDoubleRandom
-{ after(grammarAccess.getPropertyFillerSignedDoubleRandomRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerSignedDoubleRandom
-rulePropertyFillerSignedDoubleRandom
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup()); }
-(rule__PropertyFillerSignedDoubleRandom__Group__0)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerSignedIntegerRange
-entryRulePropertyFillerSignedIntegerRange 
-:
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeRule()); }
-	 rulePropertyFillerSignedIntegerRange
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerSignedIntegerRange
-rulePropertyFillerSignedIntegerRange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup()); }
-(rule__PropertyFillerSignedIntegerRange__Group__0)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerSignedIntegerRandom
-entryRulePropertyFillerSignedIntegerRandom 
-:
-{ before(grammarAccess.getPropertyFillerSignedIntegerRandomRule()); }
-	 rulePropertyFillerSignedIntegerRandom
-{ after(grammarAccess.getPropertyFillerSignedIntegerRandomRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerSignedIntegerRandom
-rulePropertyFillerSignedIntegerRandom
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup()); }
-(rule__PropertyFillerSignedIntegerRandom__Group__0)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerTextRandom
-entryRulePropertyFillerTextRandom 
-:
-{ before(grammarAccess.getPropertyFillerTextRandomRule()); }
-	 rulePropertyFillerTextRandom
-{ after(grammarAccess.getPropertyFillerTextRandomRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerTextRandom
-rulePropertyFillerTextRandom
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerTextRandomAccess().getGroup()); }
-(rule__PropertyFillerTextRandom__Group__0)
-{ after(grammarAccess.getPropertyFillerTextRandomAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerTextParagraphs
-entryRulePropertyFillerTextParagraphs 
-:
-{ before(grammarAccess.getPropertyFillerTextParagraphsRule()); }
-	 rulePropertyFillerTextParagraphs
-{ after(grammarAccess.getPropertyFillerTextParagraphsRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerTextParagraphs
-rulePropertyFillerTextParagraphs
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup()); }
-(rule__PropertyFillerTextParagraphs__Group__0)
-{ after(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerTextSentences
-entryRulePropertyFillerTextSentences 
-:
-{ before(grammarAccess.getPropertyFillerTextSentencesRule()); }
-	 rulePropertyFillerTextSentences
-{ after(grammarAccess.getPropertyFillerTextSentencesRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerTextSentences
-rulePropertyFillerTextSentences
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup()); }
-(rule__PropertyFillerTextSentences__Group__0)
-{ after(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerTextWords
-entryRulePropertyFillerTextWords 
-:
-{ before(grammarAccess.getPropertyFillerTextWordsRule()); }
-	 rulePropertyFillerTextWords
-{ after(grammarAccess.getPropertyFillerTextWordsRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerTextWords
-rulePropertyFillerTextWords
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerTextWordsAccess().getGroup()); }
-(rule__PropertyFillerTextWords__Group__0)
-{ after(grammarAccess.getPropertyFillerTextWordsAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerUnsignedDoubleRange
-entryRulePropertyFillerUnsignedDoubleRange 
-:
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()); }
-	 rulePropertyFillerUnsignedDoubleRange
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerUnsignedDoubleRange
-rulePropertyFillerUnsignedDoubleRange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup()); }
-(rule__PropertyFillerUnsignedDoubleRange__Group__0)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerUnsignedDoubleRandom
-entryRulePropertyFillerUnsignedDoubleRandom 
-:
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()); }
-	 rulePropertyFillerUnsignedDoubleRandom
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerUnsignedDoubleRandom
-rulePropertyFillerUnsignedDoubleRandom
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup()); }
-(rule__PropertyFillerUnsignedDoubleRandom__Group__0)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerUnsignedIntegerRange
-entryRulePropertyFillerUnsignedIntegerRange 
-:
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()); }
-	 rulePropertyFillerUnsignedIntegerRange
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerUnsignedIntegerRange
-rulePropertyFillerUnsignedIntegerRange
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup()); }
-(rule__PropertyFillerUnsignedIntegerRange__Group__0)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRulePropertyFillerUnsignedIntegerRandom
-entryRulePropertyFillerUnsignedIntegerRandom 
-:
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()); }
-	 rulePropertyFillerUnsignedIntegerRandom
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()); } 
-	 EOF 
-;
-
-// Rule PropertyFillerUnsignedIntegerRandom
-rulePropertyFillerUnsignedIntegerRandom
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup()); }
-(rule__PropertyFillerUnsignedIntegerRandom__Group__0)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockDataType
-entryRuleEntityMockDataType 
-:
-{ before(grammarAccess.getEntityMockDataTypeRule()); }
-	 ruleEntityMockDataType
-{ after(grammarAccess.getEntityMockDataTypeRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockDataType
-ruleEntityMockDataType
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockDataTypeAccess().getGroup()); }
-(rule__EntityMockDataType__Group__0)
-{ after(grammarAccess.getEntityMockDataTypeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockEntities
-entryRuleEntityMockEntities 
-:
-{ before(grammarAccess.getEntityMockEntitiesRule()); }
-	 ruleEntityMockEntities
-{ after(grammarAccess.getEntityMockEntitiesRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockEntities
-ruleEntityMockEntities
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockEntitiesAccess().getGroup()); }
-(rule__EntityMockEntities__Group__0)
-{ after(grammarAccess.getEntityMockEntitiesAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockEntity
-entryRuleEntityMockEntity 
-:
-{ before(grammarAccess.getEntityMockEntityRule()); }
-	 ruleEntityMockEntity
-{ after(grammarAccess.getEntityMockEntityRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockEntity
-ruleEntityMockEntity
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockEntityAccess().getGroup()); }
-(rule__EntityMockEntity__Group__0)
-{ after(grammarAccess.getEntityMockEntityAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleIIterate
-entryRuleIIterate 
-:
-{ before(grammarAccess.getIIterateRule()); }
-	 ruleIIterate
-{ after(grammarAccess.getIIterateRule()); } 
-	 EOF 
-;
-
-// Rule IIterate
-ruleIIterate
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getIIterateAccess().getAlternatives()); }
-(rule__IIterate__Alternatives)
-{ after(grammarAccess.getIIterateAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleIntegerIterate
-entryRuleIntegerIterate 
-:
-{ before(grammarAccess.getIntegerIterateRule()); }
-	 ruleIntegerIterate
-{ after(grammarAccess.getIntegerIterateRule()); } 
-	 EOF 
-;
-
-// Rule IntegerIterate
-ruleIntegerIterate
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getIntegerIterateAccess().getGroup()); }
-(rule__IntegerIterate__Group__0)
-{ after(grammarAccess.getIntegerIterateAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleDateIterate
-entryRuleDateIterate 
-:
-{ before(grammarAccess.getDateIterateRule()); }
-	 ruleDateIterate
-{ after(grammarAccess.getDateIterateRule()); } 
-	 EOF 
-;
-
-// Rule DateIterate
-ruleDateIterate
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getDateIterateAccess().getGroup()); }
-(rule__DateIterate__Group__0)
-{ after(grammarAccess.getDateIterateAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleDate
-entryRuleDate 
-:
-{ before(grammarAccess.getDateRule()); }
-	 ruleDate
-{ after(grammarAccess.getDateRule()); } 
-	 EOF 
-;
-
-// Rule Date
-ruleDate
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getDateAccess().getAlternatives()); }
-(rule__Date__Alternatives)
-{ after(grammarAccess.getDateAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockByResourceAttribute
-entryRuleEntityMockByResourceAttribute 
-:
-{ before(grammarAccess.getEntityMockByResourceAttributeRule()); }
-	 ruleEntityMockByResourceAttribute
-{ after(grammarAccess.getEntityMockByResourceAttributeRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockByResourceAttribute
-ruleEntityMockByResourceAttribute
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockByResourceAttributeAccess().getGroup()); }
-(rule__EntityMockByResourceAttribute__Group__0)
-{ after(grammarAccess.getEntityMockByResourceAttributeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockTemporary
-entryRuleEntityMockTemporary 
-:
-{ before(grammarAccess.getEntityMockTemporaryRule()); }
-	 ruleEntityMockTemporary
-{ after(grammarAccess.getEntityMockTemporaryRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockTemporary
-ruleEntityMockTemporary
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockTemporaryAccess().getGroup()); }
-(rule__EntityMockTemporary__Group__0)
-{ after(grammarAccess.getEntityMockTemporaryAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-// Entry rule entryRuleIEntityMockAttribute
-entryRuleIEntityMockAttribute 
-:
-{ before(grammarAccess.getIEntityMockAttributeRule()); }
-	 ruleIEntityMockAttribute
-{ after(grammarAccess.getIEntityMockAttributeRule()); } 
-	 EOF 
-;
-
-// Rule IEntityMockAttribute
-ruleIEntityMockAttribute
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getIEntityMockAttributeAccess().getAlternatives()); }
-(rule__IEntityMockAttribute__Alternatives)
-{ after(grammarAccess.getIEntityMockAttributeAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockEntityFunction
-entryRuleEntityMockEntityFunction 
-:
-{ before(grammarAccess.getEntityMockEntityFunctionRule()); }
-	 ruleEntityMockEntityFunction
-{ after(grammarAccess.getEntityMockEntityFunctionRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockEntityFunction
-ruleEntityMockEntityFunction
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockEntityFunctionAccess().getGroup()); }
-(rule__EntityMockEntityFunction__Group__0)
-{ after(grammarAccess.getEntityMockEntityFunctionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockEntityFunctionParameter
-entryRuleEntityMockEntityFunctionParameter 
-:
-{ before(grammarAccess.getEntityMockEntityFunctionParameterRule()); }
-	 ruleEntityMockEntityFunctionParameter
-{ after(grammarAccess.getEntityMockEntityFunctionParameterRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockEntityFunctionParameter
-ruleEntityMockEntityFunctionParameter
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAlternatives()); }
-(rule__EntityMockEntityFunctionParameter__Alternatives)
-{ after(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockReferencedObjectAttribute
-entryRuleEntityMockReferencedObjectAttribute 
-:
-{ before(grammarAccess.getEntityMockReferencedObjectAttributeRule()); }
-	 ruleEntityMockReferencedObjectAttribute
-{ after(grammarAccess.getEntityMockReferencedObjectAttributeRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockReferencedObjectAttribute
-ruleEntityMockReferencedObjectAttribute
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getGroup()); }
-(rule__EntityMockReferencedObjectAttribute__Group__0)
-{ after(grammarAccess.getEntityMockReferencedObjectAttributeAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockAttributeByObject
-entryRuleEntityMockAttributeByObject 
-:
-{ before(grammarAccess.getEntityMockAttributeByObjectRule()); }
-	 ruleEntityMockAttributeByObject
-{ after(grammarAccess.getEntityMockAttributeByObjectRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockAttributeByObject
-ruleEntityMockAttributeByObject
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockAttributeByObjectAccess().getAlternatives()); }
-(rule__EntityMockAttributeByObject__Alternatives)
-{ after(grammarAccess.getEntityMockAttributeByObjectAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockAttributeFiller
-entryRuleEntityMockAttributeFiller 
-:
-{ before(grammarAccess.getEntityMockAttributeFillerRule()); }
-	 ruleEntityMockAttributeFiller
-{ after(grammarAccess.getEntityMockAttributeFillerRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockAttributeFiller
-ruleEntityMockAttributeFiller
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockAttributeFillerAccess().getGroup()); }
-(rule__EntityMockAttributeFiller__Group__0)
-{ after(grammarAccess.getEntityMockAttributeFillerAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleEntityMockAttributeByReference
-entryRuleEntityMockAttributeByReference 
-:
-{ before(grammarAccess.getEntityMockAttributeByReferenceRule()); }
-	 ruleEntityMockAttributeByReference
-{ after(grammarAccess.getEntityMockAttributeByReferenceRule()); } 
-	 EOF 
-;
-
-// Rule EntityMockAttributeByReference
-ruleEntityMockAttributeByReference
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getEntityMockAttributeByReferenceAccess().getGroup()); }
-(rule__EntityMockAttributeByReference__Group__0)
-{ after(grammarAccess.getEntityMockAttributeByReferenceAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleSignedNumber
-entryRuleSignedNumber 
-:
-{ before(grammarAccess.getSignedNumberRule()); }
-	 ruleSignedNumber
-{ after(grammarAccess.getSignedNumberRule()); } 
-	 EOF 
-;
-
-// Rule SignedNumber
-ruleSignedNumber
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getSignedNumberAccess().getGroup()); }
-(rule__SignedNumber__Group__0)
-{ after(grammarAccess.getSignedNumberAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleUnsignedNumber
-entryRuleUnsignedNumber 
-:
-{ before(grammarAccess.getUnsignedNumberRule()); }
-	 ruleUnsignedNumber
-{ after(grammarAccess.getUnsignedNumberRule()); } 
-	 EOF 
-;
-
-// Rule UnsignedNumber
-ruleUnsignedNumber
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getUnsignedNumberAccess().getGroup()); }
-(rule__UnsignedNumber__Group__0)
-{ after(grammarAccess.getUnsignedNumberAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleSINT
-entryRuleSINT 
-:
-{ before(grammarAccess.getSINTRule()); }
-	 ruleSINT
-{ after(grammarAccess.getSINTRule()); } 
-	 EOF 
-;
-
-// Rule SINT
-ruleSINT
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getSINTAccess().getGroup()); }
-(rule__SINT__Group__0)
-{ after(grammarAccess.getSINTAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleQualifiedName
-entryRuleQualifiedName 
-:
-{ before(grammarAccess.getQualifiedNameRule()); }
-	 ruleQualifiedName
-{ after(grammarAccess.getQualifiedNameRule()); } 
-	 EOF 
-;
-
-// Rule QualifiedName
-ruleQualifiedName
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
-(rule__QualifiedName__Group__0)
-{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleValidID
-entryRuleValidID 
-:
-{ before(grammarAccess.getValidIDRule()); }
-	 ruleValidID
-{ after(grammarAccess.getValidIDRule()); } 
-	 EOF 
-;
-
-// Rule ValidID
-ruleValidID
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
-	RULE_ID
-{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAnnotation
-entryRuleXAnnotation 
-:
-{ before(grammarAccess.getXAnnotationRule()); }
-	 ruleXAnnotation
-{ after(grammarAccess.getXAnnotationRule()); } 
-	 EOF 
-;
-
-// Rule XAnnotation
-ruleXAnnotation
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
-(rule__XAnnotation__Group__0)
-{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAnnotationElementValuePair
-entryRuleXAnnotationElementValuePair 
-:
-{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
-	 ruleXAnnotationElementValuePair
-{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
-	 EOF 
-;
-
-// Rule XAnnotationElementValuePair
-ruleXAnnotationElementValuePair
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
-(rule__XAnnotationElementValuePair__Group__0)
-{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAnnotationElementValueOrCommaList
-entryRuleXAnnotationElementValueOrCommaList 
-:
-{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
-	 ruleXAnnotationElementValueOrCommaList
-{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
-	 EOF 
-;
-
-// Rule XAnnotationElementValueOrCommaList
-ruleXAnnotationElementValueOrCommaList
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
-(rule__XAnnotationElementValueOrCommaList__Alternatives)
-{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAnnotationElementValue
-entryRuleXAnnotationElementValue 
-:
-{ before(grammarAccess.getXAnnotationElementValueRule()); }
-	 ruleXAnnotationElementValue
-{ after(grammarAccess.getXAnnotationElementValueRule()); } 
-	 EOF 
-;
-
-// Rule XAnnotationElementValue
-ruleXAnnotationElementValue
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
-(rule__XAnnotationElementValue__Alternatives)
-{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAnnotationOrExpression
-entryRuleXAnnotationOrExpression 
-:
-{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
-	 ruleXAnnotationOrExpression
-{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XAnnotationOrExpression
-ruleXAnnotationOrExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
-(rule__XAnnotationOrExpression__Alternatives)
-{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXExpression
-entryRuleXExpression 
-:
-{ before(grammarAccess.getXExpressionRule()); }
-	 ruleXExpression
-{ after(grammarAccess.getXExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XExpression
-ruleXExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
-	ruleXAssignment
-{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAssignment
-entryRuleXAssignment 
-:
-{ before(grammarAccess.getXAssignmentRule()); }
-	 ruleXAssignment
-{ after(grammarAccess.getXAssignmentRule()); } 
-	 EOF 
-;
-
-// Rule XAssignment
-ruleXAssignment
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
-(rule__XAssignment__Alternatives)
-{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpSingleAssign
-entryRuleOpSingleAssign 
-:
-{ before(grammarAccess.getOpSingleAssignRule()); }
-	 ruleOpSingleAssign
-{ after(grammarAccess.getOpSingleAssignRule()); } 
-	 EOF 
-;
-
-// Rule OpSingleAssign
-ruleOpSingleAssign
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
-
-	'=' 
-
-{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpMultiAssign
-entryRuleOpMultiAssign 
-:
-{ before(grammarAccess.getOpMultiAssignRule()); }
-	 ruleOpMultiAssign
-{ after(grammarAccess.getOpMultiAssignRule()); } 
-	 EOF 
-;
-
-// Rule OpMultiAssign
-ruleOpMultiAssign
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
-(rule__OpMultiAssign__Alternatives)
-{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXOrExpression
-entryRuleXOrExpression 
-:
-{ before(grammarAccess.getXOrExpressionRule()); }
-	 ruleXOrExpression
-{ after(grammarAccess.getXOrExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XOrExpression
-ruleXOrExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
-(rule__XOrExpression__Group__0)
-{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpOr
-entryRuleOpOr 
-:
-{ before(grammarAccess.getOpOrRule()); }
-	 ruleOpOr
-{ after(grammarAccess.getOpOrRule()); } 
-	 EOF 
-;
-
-// Rule OpOr
-ruleOpOr
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
-
-	'||' 
-
-{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAndExpression
-entryRuleXAndExpression 
-:
-{ before(grammarAccess.getXAndExpressionRule()); }
-	 ruleXAndExpression
-{ after(grammarAccess.getXAndExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XAndExpression
-ruleXAndExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
-(rule__XAndExpression__Group__0)
-{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpAnd
-entryRuleOpAnd 
-:
-{ before(grammarAccess.getOpAndRule()); }
-	 ruleOpAnd
-{ after(grammarAccess.getOpAndRule()); } 
-	 EOF 
-;
-
-// Rule OpAnd
-ruleOpAnd
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
-
-	'&&' 
-
-{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXEqualityExpression
-entryRuleXEqualityExpression 
-:
-{ before(grammarAccess.getXEqualityExpressionRule()); }
-	 ruleXEqualityExpression
-{ after(grammarAccess.getXEqualityExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XEqualityExpression
-ruleXEqualityExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
-(rule__XEqualityExpression__Group__0)
-{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpEquality
-entryRuleOpEquality 
-:
-{ before(grammarAccess.getOpEqualityRule()); }
-	 ruleOpEquality
-{ after(grammarAccess.getOpEqualityRule()); } 
-	 EOF 
-;
-
-// Rule OpEquality
-ruleOpEquality
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
-(rule__OpEquality__Alternatives)
-{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXRelationalExpression
-entryRuleXRelationalExpression 
-:
-{ before(grammarAccess.getXRelationalExpressionRule()); }
-	 ruleXRelationalExpression
-{ after(grammarAccess.getXRelationalExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XRelationalExpression
-ruleXRelationalExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
-(rule__XRelationalExpression__Group__0)
-{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpCompare
-entryRuleOpCompare 
-:
-{ before(grammarAccess.getOpCompareRule()); }
-	 ruleOpCompare
-{ after(grammarAccess.getOpCompareRule()); } 
-	 EOF 
-;
-
-// Rule OpCompare
-ruleOpCompare
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
-(rule__OpCompare__Alternatives)
-{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXOtherOperatorExpression
-entryRuleXOtherOperatorExpression 
-:
-{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
-	 ruleXOtherOperatorExpression
-{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XOtherOperatorExpression
-ruleXOtherOperatorExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
-(rule__XOtherOperatorExpression__Group__0)
-{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpOther
-entryRuleOpOther 
-:
-{ before(grammarAccess.getOpOtherRule()); }
-	 ruleOpOther
-{ after(grammarAccess.getOpOtherRule()); } 
-	 EOF 
-;
-
-// Rule OpOther
-ruleOpOther
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
-(rule__OpOther__Alternatives)
-{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXAdditiveExpression
-entryRuleXAdditiveExpression 
-:
-{ before(grammarAccess.getXAdditiveExpressionRule()); }
-	 ruleXAdditiveExpression
-{ after(grammarAccess.getXAdditiveExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XAdditiveExpression
-ruleXAdditiveExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
-(rule__XAdditiveExpression__Group__0)
-{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpAdd
-entryRuleOpAdd 
-:
-{ before(grammarAccess.getOpAddRule()); }
-	 ruleOpAdd
-{ after(grammarAccess.getOpAddRule()); } 
-	 EOF 
-;
-
-// Rule OpAdd
-ruleOpAdd
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
-(rule__OpAdd__Alternatives)
-{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXMultiplicativeExpression
-entryRuleXMultiplicativeExpression 
-:
-{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
-	 ruleXMultiplicativeExpression
-{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XMultiplicativeExpression
-ruleXMultiplicativeExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
-(rule__XMultiplicativeExpression__Group__0)
-{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpMulti
-entryRuleOpMulti 
-:
-{ before(grammarAccess.getOpMultiRule()); }
-	 ruleOpMulti
-{ after(grammarAccess.getOpMultiRule()); } 
-	 EOF 
-;
-
-// Rule OpMulti
-ruleOpMulti
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
-(rule__OpMulti__Alternatives)
-{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXUnaryOperation
-entryRuleXUnaryOperation 
-:
-{ before(grammarAccess.getXUnaryOperationRule()); }
-	 ruleXUnaryOperation
-{ after(grammarAccess.getXUnaryOperationRule()); } 
-	 EOF 
-;
-
-// Rule XUnaryOperation
-ruleXUnaryOperation
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
-(rule__XUnaryOperation__Alternatives)
-{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpUnary
-entryRuleOpUnary 
-:
-{ before(grammarAccess.getOpUnaryRule()); }
-	 ruleOpUnary
-{ after(grammarAccess.getOpUnaryRule()); } 
-	 EOF 
-;
-
-// Rule OpUnary
-ruleOpUnary
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
-(rule__OpUnary__Alternatives)
-{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXCastedExpression
-entryRuleXCastedExpression 
-:
-{ before(grammarAccess.getXCastedExpressionRule()); }
-	 ruleXCastedExpression
-{ after(grammarAccess.getXCastedExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XCastedExpression
-ruleXCastedExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
-(rule__XCastedExpression__Group__0)
-{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXPostfixOperation
-entryRuleXPostfixOperation 
-:
-{ before(grammarAccess.getXPostfixOperationRule()); }
-	 ruleXPostfixOperation
-{ after(grammarAccess.getXPostfixOperationRule()); } 
-	 EOF 
-;
-
-// Rule XPostfixOperation
-ruleXPostfixOperation
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
-(rule__XPostfixOperation__Group__0)
-{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleOpPostfix
-entryRuleOpPostfix 
-:
-{ before(grammarAccess.getOpPostfixRule()); }
-	 ruleOpPostfix
-{ after(grammarAccess.getOpPostfixRule()); } 
-	 EOF 
-;
-
-// Rule OpPostfix
-ruleOpPostfix
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
-(rule__OpPostfix__Alternatives)
-{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXMemberFeatureCall
-entryRuleXMemberFeatureCall 
-:
-{ before(grammarAccess.getXMemberFeatureCallRule()); }
-	 ruleXMemberFeatureCall
-{ after(grammarAccess.getXMemberFeatureCallRule()); } 
-	 EOF 
-;
-
-// Rule XMemberFeatureCall
-ruleXMemberFeatureCall
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
-(rule__XMemberFeatureCall__Group__0)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXPrimaryExpression
-entryRuleXPrimaryExpression 
-:
-{ before(grammarAccess.getXPrimaryExpressionRule()); }
-	 ruleXPrimaryExpression
-{ after(grammarAccess.getXPrimaryExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XPrimaryExpression
-ruleXPrimaryExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
-(rule__XPrimaryExpression__Alternatives)
-{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXLiteral
-entryRuleXLiteral 
-:
-{ before(grammarAccess.getXLiteralRule()); }
-	 ruleXLiteral
-{ after(grammarAccess.getXLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XLiteral
-ruleXLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
-(rule__XLiteral__Alternatives)
-{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXCollectionLiteral
-entryRuleXCollectionLiteral 
-:
-{ before(grammarAccess.getXCollectionLiteralRule()); }
-	 ruleXCollectionLiteral
-{ after(grammarAccess.getXCollectionLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XCollectionLiteral
-ruleXCollectionLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
-(rule__XCollectionLiteral__Alternatives)
-{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXSetLiteral
-entryRuleXSetLiteral 
-:
-{ before(grammarAccess.getXSetLiteralRule()); }
-	 ruleXSetLiteral
-{ after(grammarAccess.getXSetLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XSetLiteral
-ruleXSetLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
-(rule__XSetLiteral__Group__0)
-{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXListLiteral
-entryRuleXListLiteral 
-:
-{ before(grammarAccess.getXListLiteralRule()); }
-	 ruleXListLiteral
-{ after(grammarAccess.getXListLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XListLiteral
-ruleXListLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
-(rule__XListLiteral__Group__0)
-{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXClosure
-entryRuleXClosure 
-:
-{ before(grammarAccess.getXClosureRule()); }
-	 ruleXClosure
-{ after(grammarAccess.getXClosureRule()); } 
-	 EOF 
-;
-
-// Rule XClosure
-ruleXClosure
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXClosureAccess().getGroup()); }
-(rule__XClosure__Group__0)
-{ after(grammarAccess.getXClosureAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXExpressionInClosure
-entryRuleXExpressionInClosure 
-:
-{ before(grammarAccess.getXExpressionInClosureRule()); }
-	 ruleXExpressionInClosure
-{ after(grammarAccess.getXExpressionInClosureRule()); } 
-	 EOF 
-;
-
-// Rule XExpressionInClosure
-ruleXExpressionInClosure
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
-(rule__XExpressionInClosure__Group__0)
-{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXShortClosure
-entryRuleXShortClosure 
-:
-{ before(grammarAccess.getXShortClosureRule()); }
-	 ruleXShortClosure
-{ after(grammarAccess.getXShortClosureRule()); } 
-	 EOF 
-;
-
-// Rule XShortClosure
-ruleXShortClosure
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
-(rule__XShortClosure__Group__0)
-{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXParenthesizedExpression
-entryRuleXParenthesizedExpression 
-:
-{ before(grammarAccess.getXParenthesizedExpressionRule()); }
-	 ruleXParenthesizedExpression
-{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XParenthesizedExpression
-ruleXParenthesizedExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
-(rule__XParenthesizedExpression__Group__0)
-{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXIfExpression
-entryRuleXIfExpression 
-:
-{ before(grammarAccess.getXIfExpressionRule()); }
-	 ruleXIfExpression
-{ after(grammarAccess.getXIfExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XIfExpression
-ruleXIfExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
-(rule__XIfExpression__Group__0)
-{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXSwitchExpression
-entryRuleXSwitchExpression 
-:
-{ before(grammarAccess.getXSwitchExpressionRule()); }
-	 ruleXSwitchExpression
-{ after(grammarAccess.getXSwitchExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XSwitchExpression
-ruleXSwitchExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
-(rule__XSwitchExpression__Group__0)
-{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXCasePart
-entryRuleXCasePart 
-:
-{ before(grammarAccess.getXCasePartRule()); }
-	 ruleXCasePart
-{ after(grammarAccess.getXCasePartRule()); } 
-	 EOF 
-;
-
-// Rule XCasePart
-ruleXCasePart
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXCasePartAccess().getGroup()); }
-(rule__XCasePart__Group__0)
-{ after(grammarAccess.getXCasePartAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXForLoopExpression
-entryRuleXForLoopExpression 
-:
-{ before(grammarAccess.getXForLoopExpressionRule()); }
-	 ruleXForLoopExpression
-{ after(grammarAccess.getXForLoopExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XForLoopExpression
-ruleXForLoopExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
-(rule__XForLoopExpression__Group__0)
-{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXBasicForLoopExpression
-entryRuleXBasicForLoopExpression 
-:
-{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
-	 ruleXBasicForLoopExpression
-{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XBasicForLoopExpression
-ruleXBasicForLoopExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
-(rule__XBasicForLoopExpression__Group__0)
-{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXWhileExpression
-entryRuleXWhileExpression 
-:
-{ before(grammarAccess.getXWhileExpressionRule()); }
-	 ruleXWhileExpression
-{ after(grammarAccess.getXWhileExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XWhileExpression
-ruleXWhileExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
-(rule__XWhileExpression__Group__0)
-{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXDoWhileExpression
-entryRuleXDoWhileExpression 
-:
-{ before(grammarAccess.getXDoWhileExpressionRule()); }
-	 ruleXDoWhileExpression
-{ after(grammarAccess.getXDoWhileExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XDoWhileExpression
-ruleXDoWhileExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
-(rule__XDoWhileExpression__Group__0)
-{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXBlockExpression
-entryRuleXBlockExpression 
-:
-{ before(grammarAccess.getXBlockExpressionRule()); }
-	 ruleXBlockExpression
-{ after(grammarAccess.getXBlockExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XBlockExpression
-ruleXBlockExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
-(rule__XBlockExpression__Group__0)
-{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXExpressionOrVarDeclaration
-entryRuleXExpressionOrVarDeclaration 
-:
-{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
-	 ruleXExpressionOrVarDeclaration
-{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
-	 EOF 
-;
-
-// Rule XExpressionOrVarDeclaration
-ruleXExpressionOrVarDeclaration
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
-(rule__XExpressionOrVarDeclaration__Alternatives)
-{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXVariableDeclaration
-entryRuleXVariableDeclaration 
-:
-{ before(grammarAccess.getXVariableDeclarationRule()); }
-	 ruleXVariableDeclaration
-{ after(grammarAccess.getXVariableDeclarationRule()); } 
-	 EOF 
-;
-
-// Rule XVariableDeclaration
-ruleXVariableDeclaration
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
-(rule__XVariableDeclaration__Group__0)
-{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmFormalParameter
-entryRuleJvmFormalParameter 
-:
-{ before(grammarAccess.getJvmFormalParameterRule()); }
-	 ruleJvmFormalParameter
-{ after(grammarAccess.getJvmFormalParameterRule()); } 
-	 EOF 
-;
-
-// Rule JvmFormalParameter
-ruleJvmFormalParameter
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
-(rule__JvmFormalParameter__Group__0)
-{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleFullJvmFormalParameter
-entryRuleFullJvmFormalParameter 
-:
-{ before(grammarAccess.getFullJvmFormalParameterRule()); }
-	 ruleFullJvmFormalParameter
-{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
-	 EOF 
-;
-
-// Rule FullJvmFormalParameter
-ruleFullJvmFormalParameter
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
-(rule__FullJvmFormalParameter__Group__0)
-{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXFeatureCall
-entryRuleXFeatureCall 
-:
-{ before(grammarAccess.getXFeatureCallRule()); }
-	 ruleXFeatureCall
-{ after(grammarAccess.getXFeatureCallRule()); } 
-	 EOF 
-;
-
-// Rule XFeatureCall
-ruleXFeatureCall
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
-(rule__XFeatureCall__Group__0)
-{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleFeatureCallID
-entryRuleFeatureCallID 
-:
-{ before(grammarAccess.getFeatureCallIDRule()); }
-	 ruleFeatureCallID
-{ after(grammarAccess.getFeatureCallIDRule()); } 
-	 EOF 
-;
-
-// Rule FeatureCallID
-ruleFeatureCallID
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
-(rule__FeatureCallID__Alternatives)
-{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleIdOrSuper
-entryRuleIdOrSuper 
-:
-{ before(grammarAccess.getIdOrSuperRule()); }
-	 ruleIdOrSuper
-{ after(grammarAccess.getIdOrSuperRule()); } 
-	 EOF 
-;
-
-// Rule IdOrSuper
-ruleIdOrSuper
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
-(rule__IdOrSuper__Alternatives)
-{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXConstructorCall
-entryRuleXConstructorCall 
-:
-{ before(grammarAccess.getXConstructorCallRule()); }
-	 ruleXConstructorCall
-{ after(grammarAccess.getXConstructorCallRule()); } 
-	 EOF 
-;
-
-// Rule XConstructorCall
-ruleXConstructorCall
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
-(rule__XConstructorCall__Group__0)
-{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXBooleanLiteral
-entryRuleXBooleanLiteral 
-:
-{ before(grammarAccess.getXBooleanLiteralRule()); }
-	 ruleXBooleanLiteral
-{ after(grammarAccess.getXBooleanLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XBooleanLiteral
-ruleXBooleanLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
-(rule__XBooleanLiteral__Group__0)
-{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXNullLiteral
-entryRuleXNullLiteral 
-:
-{ before(grammarAccess.getXNullLiteralRule()); }
-	 ruleXNullLiteral
-{ after(grammarAccess.getXNullLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XNullLiteral
-ruleXNullLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
-(rule__XNullLiteral__Group__0)
-{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXNumberLiteral
-entryRuleXNumberLiteral 
-:
-{ before(grammarAccess.getXNumberLiteralRule()); }
-	 ruleXNumberLiteral
-{ after(grammarAccess.getXNumberLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XNumberLiteral
-ruleXNumberLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
-(rule__XNumberLiteral__Group__0)
-{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXStringLiteral
-entryRuleXStringLiteral 
-:
-{ before(grammarAccess.getXStringLiteralRule()); }
-	 ruleXStringLiteral
-{ after(grammarAccess.getXStringLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XStringLiteral
-ruleXStringLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
-(rule__XStringLiteral__Group__0)
-{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXTypeLiteral
-entryRuleXTypeLiteral 
-:
-{ before(grammarAccess.getXTypeLiteralRule()); }
-	 ruleXTypeLiteral
-{ after(grammarAccess.getXTypeLiteralRule()); } 
-	 EOF 
-;
-
-// Rule XTypeLiteral
-ruleXTypeLiteral
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
-(rule__XTypeLiteral__Group__0)
-{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXThrowExpression
-entryRuleXThrowExpression 
-:
-{ before(grammarAccess.getXThrowExpressionRule()); }
-	 ruleXThrowExpression
-{ after(grammarAccess.getXThrowExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XThrowExpression
-ruleXThrowExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
-(rule__XThrowExpression__Group__0)
-{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXReturnExpression
-entryRuleXReturnExpression 
-:
-{ before(grammarAccess.getXReturnExpressionRule()); }
-	 ruleXReturnExpression
-{ after(grammarAccess.getXReturnExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XReturnExpression
-ruleXReturnExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
-(rule__XReturnExpression__Group__0)
-{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXTryCatchFinallyExpression
-entryRuleXTryCatchFinallyExpression 
-:
-{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
-	 ruleXTryCatchFinallyExpression
-{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XTryCatchFinallyExpression
-ruleXTryCatchFinallyExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
-(rule__XTryCatchFinallyExpression__Group__0)
-{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXSynchronizedExpression
-entryRuleXSynchronizedExpression 
-:
-{ before(grammarAccess.getXSynchronizedExpressionRule()); }
-	 ruleXSynchronizedExpression
-{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
-	 EOF 
-;
-
-// Rule XSynchronizedExpression
-ruleXSynchronizedExpression
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
-(rule__XSynchronizedExpression__Group__0)
-{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXCatchClause
-entryRuleXCatchClause 
-:
-{ before(grammarAccess.getXCatchClauseRule()); }
-	 ruleXCatchClause
-{ after(grammarAccess.getXCatchClauseRule()); } 
-	 EOF 
-;
-
-// Rule XCatchClause
-ruleXCatchClause
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
-(rule__XCatchClause__Group__0)
-{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleNumber
-entryRuleNumber 
-@init {
-	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-}
-:
-{ before(grammarAccess.getNumberRule()); }
-	 ruleNumber
-{ after(grammarAccess.getNumberRule()); } 
-	 EOF 
-;
-finally {
-	myHiddenTokenState.restore();
-}
-
-// Rule Number
-ruleNumber
-    @init {
-		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getNumberAccess().getAlternatives()); }
-(rule__Number__Alternatives)
-{ after(grammarAccess.getNumberAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-	myHiddenTokenState.restore();
-}
-
-
-
-
-
-// Entry rule entryRuleJvmTypeReference
-entryRuleJvmTypeReference 
-:
-{ before(grammarAccess.getJvmTypeReferenceRule()); }
-	 ruleJvmTypeReference
-{ after(grammarAccess.getJvmTypeReferenceRule()); } 
-	 EOF 
-;
-
-// Rule JvmTypeReference
-ruleJvmTypeReference
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
-(rule__JvmTypeReference__Alternatives)
-{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleArrayBrackets
-entryRuleArrayBrackets 
-:
-{ before(grammarAccess.getArrayBracketsRule()); }
-	 ruleArrayBrackets
-{ after(grammarAccess.getArrayBracketsRule()); } 
-	 EOF 
-;
-
-// Rule ArrayBrackets
-ruleArrayBrackets
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
-(rule__ArrayBrackets__Group__0)
-{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleXFunctionTypeRef
-entryRuleXFunctionTypeRef 
-:
-{ before(grammarAccess.getXFunctionTypeRefRule()); }
-	 ruleXFunctionTypeRef
-{ after(grammarAccess.getXFunctionTypeRefRule()); } 
-	 EOF 
-;
-
-// Rule XFunctionTypeRef
-ruleXFunctionTypeRef
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
-(rule__XFunctionTypeRef__Group__0)
-{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmParameterizedTypeReference
-entryRuleJvmParameterizedTypeReference 
-:
-{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
-	 ruleJvmParameterizedTypeReference
-{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
-	 EOF 
-;
-
-// Rule JvmParameterizedTypeReference
-ruleJvmParameterizedTypeReference
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
-(rule__JvmParameterizedTypeReference__Group__0)
-{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmArgumentTypeReference
-entryRuleJvmArgumentTypeReference 
-:
-{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
-	 ruleJvmArgumentTypeReference
-{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
-	 EOF 
-;
-
-// Rule JvmArgumentTypeReference
-ruleJvmArgumentTypeReference
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
-(rule__JvmArgumentTypeReference__Alternatives)
-{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmWildcardTypeReference
-entryRuleJvmWildcardTypeReference 
-:
-{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
-	 ruleJvmWildcardTypeReference
-{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
-	 EOF 
-;
-
-// Rule JvmWildcardTypeReference
-ruleJvmWildcardTypeReference
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
-(rule__JvmWildcardTypeReference__Group__0)
-{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmUpperBound
-entryRuleJvmUpperBound 
-:
-{ before(grammarAccess.getJvmUpperBoundRule()); }
-	 ruleJvmUpperBound
-{ after(grammarAccess.getJvmUpperBoundRule()); } 
-	 EOF 
-;
-
-// Rule JvmUpperBound
-ruleJvmUpperBound
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
-(rule__JvmUpperBound__Group__0)
-{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmUpperBoundAnded
-entryRuleJvmUpperBoundAnded 
-:
-{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
-	 ruleJvmUpperBoundAnded
-{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
-	 EOF 
-;
-
-// Rule JvmUpperBoundAnded
-ruleJvmUpperBoundAnded
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
-(rule__JvmUpperBoundAnded__Group__0)
-{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmLowerBound
-entryRuleJvmLowerBound 
-:
-{ before(grammarAccess.getJvmLowerBoundRule()); }
-	 ruleJvmLowerBound
-{ after(grammarAccess.getJvmLowerBoundRule()); } 
-	 EOF 
-;
-
-// Rule JvmLowerBound
-ruleJvmLowerBound
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
-(rule__JvmLowerBound__Group__0)
-{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleJvmLowerBoundAnded
-entryRuleJvmLowerBoundAnded 
-:
-{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
-	 ruleJvmLowerBoundAnded
-{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
-	 EOF 
-;
-
-// Rule JvmLowerBoundAnded
-ruleJvmLowerBoundAnded
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
-(rule__JvmLowerBoundAnded__Group__0)
-{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-// Entry rule entryRuleQualifiedNameWithWildcard
-entryRuleQualifiedNameWithWildcard 
-:
-{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
-	 ruleQualifiedNameWithWildcard
-{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
-	 EOF 
-;
-
-// Rule QualifiedNameWithWildcard
-ruleQualifiedNameWithWildcard
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
-(rule__QualifiedNameWithWildcard__Group__0)
-{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-// Entry rule entryRuleXImportDeclaration
-entryRuleXImportDeclaration 
-:
-{ before(grammarAccess.getXImportDeclarationRule()); }
-	 ruleXImportDeclaration
-{ after(grammarAccess.getXImportDeclarationRule()); } 
-	 EOF 
-;
-
-// Rule XImportDeclaration
-ruleXImportDeclaration
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
-(rule__XImportDeclaration__Group__0)
-{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-// Entry rule entryRuleQualifiedNameInStaticImport
-entryRuleQualifiedNameInStaticImport 
-:
-{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
-	 ruleQualifiedNameInStaticImport
-{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
-	 EOF 
-;
-
-// Rule QualifiedNameInStaticImport
-ruleQualifiedNameInStaticImport
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-(
-{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
-(rule__QualifiedNameInStaticImport__Group__0)
-{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
-)
-(
-{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
-(rule__QualifiedNameInStaticImport__Group__0)*
-{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
-)
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-// Rule EDateStepType
-ruleEDateStepType
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEDateStepTypeAccess().getAlternatives()); }
-(rule__EDateStepType__Alternatives)
-{ after(grammarAccess.getEDateStepTypeAccess().getAlternatives()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-rule__IEntityMockObjectAttribute__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectResourceValueParserRuleCall_0()); }
-	ruleEntityMockObjectResourceValue
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectResourceValueParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectPlainValueParserRuleCall_1()); }
-	ruleEntityMockObjectPlainValue
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectPlainValueParserRuleCall_1()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectArrayValueParserRuleCall_2()); }
-	ruleEntityMockObjectArrayValue
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectArrayValueParserRuleCall_2()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectEmbedParserRuleCall_3()); }
-	ruleEntityMockObjectEmbed
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectEmbedParserRuleCall_3()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectFillParserRuleCall_4()); }
-	ruleEntityMockObjectFill
-{ after(grammarAccess.getIEntityMockObjectAttributeAccess().getEntityMockObjectFillParserRuleCall_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerType__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateFutureParserRuleCall_0()); }
-	rulePropertyFillerDateFuture
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateFutureParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDatePastParserRuleCall_1()); }
-	rulePropertyFillerDatePast
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDatePastParserRuleCall_1()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateRangeParserRuleCall_2()); }
-	rulePropertyFillerDateRange
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateRangeParserRuleCall_2()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerBooleanParserRuleCall_3()); }
-	rulePropertyFillerBoolean
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerBooleanParserRuleCall_3()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRangeParserRuleCall_4()); }
-	rulePropertyFillerSignedDoubleRange
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRangeParserRuleCall_4()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRandomParserRuleCall_5()); }
-	rulePropertyFillerSignedDoubleRandom
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRandomParserRuleCall_5()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRangeParserRuleCall_6()); }
-	rulePropertyFillerSignedIntegerRange
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRangeParserRuleCall_6()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRandomParserRuleCall_7()); }
-	rulePropertyFillerSignedIntegerRandom
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRandomParserRuleCall_7()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextRandomParserRuleCall_8()); }
-	rulePropertyFillerTextRandom
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextRandomParserRuleCall_8()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextParagraphsParserRuleCall_9()); }
-	rulePropertyFillerTextParagraphs
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextParagraphsParserRuleCall_9()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextSentencesParserRuleCall_10()); }
-	rulePropertyFillerTextSentences
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextSentencesParserRuleCall_10()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextWordsParserRuleCall_11()); }
-	rulePropertyFillerTextWords
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextWordsParserRuleCall_11()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRangeParserRuleCall_12()); }
-	rulePropertyFillerUnsignedDoubleRange
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRangeParserRuleCall_12()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRandomParserRuleCall_13()); }
-	rulePropertyFillerUnsignedDoubleRandom
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRandomParserRuleCall_13()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRangeParserRuleCall_14()); }
-	rulePropertyFillerUnsignedIntegerRange
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRangeParserRuleCall_14()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRandomParserRuleCall_15()); }
-	rulePropertyFillerUnsignedIntegerRandom
-{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRandomParserRuleCall_15()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerSignedDoubleRange__Alternatives_1_0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
-(rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
-(rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerSignedDoubleRange__Alternatives_1_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
-(rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
-(rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1)
-{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerSignedIntegerRange__Alternatives_2_0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
-(rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
-(rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerSignedIntegerRange__Alternatives_2_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
-(rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
-(rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1)
-{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
-(rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
-(rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
-(rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
-(rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1)
-{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
-(rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
-(rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
-(rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
-(rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1)
-{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockEntity__Alternatives_4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockEntityAccess().getGroup_4_0()); }
-(rule__EntityMockEntity__Group_4_0__0)
-{ after(grammarAccess.getEntityMockEntityAccess().getGroup_4_0()); }
-)
-
-    |(
-{ before(grammarAccess.getEntityMockEntityAccess().getGroup_4_1()); }
-(rule__EntityMockEntity__Group_4_1__0)
-{ after(grammarAccess.getEntityMockEntityAccess().getGroup_4_1()); }
-)
-
-    |(
-{ before(grammarAccess.getEntityMockEntityAccess().getGroup_4_2()); }
-(rule__EntityMockEntity__Group_4_2__0)
-{ after(grammarAccess.getEntityMockEntityAccess().getGroup_4_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__IIterate__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getIIterateAccess().getIntegerIterateParserRuleCall_0()); }
-	ruleIntegerIterate
-{ after(grammarAccess.getIIterateAccess().getIntegerIterateParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getIIterateAccess().getDateIterateParserRuleCall_1()); }
-	ruleDateIterate
-{ after(grammarAccess.getIIterateAccess().getDateIterateParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__Date__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getDateAccess().getYesterdayAssignment_0()); }
-(rule__Date__YesterdayAssignment_0)
-{ after(grammarAccess.getDateAccess().getYesterdayAssignment_0()); }
-)
-
-    |(
-{ before(grammarAccess.getDateAccess().getTodayAssignment_1()); }
-(rule__Date__TodayAssignment_1)
-{ after(grammarAccess.getDateAccess().getTodayAssignment_1()); }
-)
-
-    |(
-{ before(grammarAccess.getDateAccess().getTomorrowAssignment_2()); }
-(rule__Date__TomorrowAssignment_2)
-{ after(grammarAccess.getDateAccess().getTomorrowAssignment_2()); }
-)
-
-    |(
-{ before(grammarAccess.getDateAccess().getGroup_3()); }
-(rule__Date__Group_3__0)
-{ after(grammarAccess.getDateAccess().getGroup_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__IEntityMockAttribute__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeByObjectParserRuleCall_0()); }
-	ruleEntityMockAttributeByObject
-{ after(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeByObjectParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeFillerParserRuleCall_1()); }
-	ruleEntityMockAttributeFiller
-{ after(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeFillerParserRuleCall_1()); }
-)
-
-    |(
-{ before(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeByReferenceParserRuleCall_2()); }
-	ruleEntityMockAttributeByReference
-{ after(grammarAccess.getIEntityMockAttributeAccess().getEntityMockAttributeByReferenceParserRuleCall_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockEntityFunctionParameter__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAttributeRefAssignment_0()); }
-(rule__EntityMockEntityFunctionParameter__AttributeRefAssignment_0)
-{ after(grammarAccess.getEntityMockEntityFunctionParameterAccess().getAttributeRefAssignment_0()); }
-)
-
-    |(
-{ before(grammarAccess.getEntityMockEntityFunctionParameterAccess().getGroup_1()); }
-(rule__EntityMockEntityFunctionParameter__Group_1__0)
-{ after(grammarAccess.getEntityMockEntityFunctionParameterAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockAttributeByObject__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_0()); }
-(rule__EntityMockAttributeByObject__Group_0__0)
-{ after(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_1()); }
-(rule__EntityMockAttributeByObject__Group_1__0)
-{ after(grammarAccess.getEntityMockAttributeByObjectAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockAttributeByReference__Alternatives_3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockAttributeByReferenceAccess().getExistingEntitiesKeyword_3_0()); }
-
-	'existing entities' 
-
-{ after(grammarAccess.getEntityMockAttributeByReferenceAccess().getExistingEntitiesKeyword_3_0()); }
-)
-
-    |(
-{ before(grammarAccess.getEntityMockAttributeByReferenceAccess().getMockedEntityAssignment_3_1()); }
-(rule__EntityMockAttributeByReference__MockedEntityAssignment_3_1)
-{ after(grammarAccess.getEntityMockAttributeByReferenceAccess().getMockedEntityAssignment_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XAnnotation__Alternatives_3_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
-(rule__XAnnotation__Group_3_1_0__0)
-{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
-(rule__XAnnotation__ValueAssignment_3_1_1)
-{ after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XAnnotationElementValueOrCommaList__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
-(rule__XAnnotationElementValueOrCommaList__Group_0__0)
-{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
-(rule__XAnnotationElementValueOrCommaList__Group_1__0)
-{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XAnnotationElementValue__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
-(rule__XAnnotationElementValue__Group_0__0)
-{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
-	ruleXAnnotationOrExpression
-{ after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XAnnotationOrExpression__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
-	ruleXAnnotation
-{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
-	ruleXExpression
-{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XAssignment__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXAssignmentAccess().getGroup_0()); }
-(rule__XAssignment__Group_0__0)
-{ after(grammarAccess.getXAssignmentAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXAssignmentAccess().getGroup_1()); }
-(rule__XAssignment__Group_1__0)
-{ after(grammarAccess.getXAssignmentAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpMultiAssign__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
-
-	'+=' 
-
-{ after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
-
-	'-=' 
-
-{ after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
-
-	'*=' 
-
-{ after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
-
-	'/=' 
-
-{ after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
-
-	'%=' 
-
-{ after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
-(rule__OpMultiAssign__Group_5__0)
-{ after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
-(rule__OpMultiAssign__Group_6__0)
-{ after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpEquality__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
-
-	'==' 
-
-{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
-
-	'!=' 
-
-{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
-
-	'===' 
-
-{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
-)
-
-    |(
-{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
-
-	'!==' 
-
-{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XRelationalExpression__Alternatives_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
-(rule__XRelationalExpression__Group_1_0__0)
-{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
-(rule__XRelationalExpression__Group_1_1__0)
-{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpCompare__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
-
-	'>=' 
-
-{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpCompareAccess().getGroup_1()); }
-(rule__OpCompare__Group_1__0)
-{ after(grammarAccess.getOpCompareAccess().getGroup_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
-
-	'>' 
-
-{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
-)
-
-    |(
-{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
-
-	'<' 
-
-{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpOther__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
-
-	'->' 
-
-{ after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
-
-	'..<' 
-
-{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getGroup_2()); }
-(rule__OpOther__Group_2__0)
-{ after(grammarAccess.getOpOtherAccess().getGroup_2()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
-
-	'..' 
-
-{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
-
-	'=>' 
-
-{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getGroup_5()); }
-(rule__OpOther__Group_5__0)
-{ after(grammarAccess.getOpOtherAccess().getGroup_5()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getGroup_6()); }
-(rule__OpOther__Group_6__0)
-{ after(grammarAccess.getOpOtherAccess().getGroup_6()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
-
-	'<>' 
-
-{ after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
-
-	'?:' 
-
-{ after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpOther__Alternatives_5_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
-(rule__OpOther__Group_5_1_0__0)
-{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
-
-	'>' 
-
-{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpOther__Alternatives_6_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
-(rule__OpOther__Group_6_1_0__0)
-{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
-
-	'<' 
-
-{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
-
-	'=>' 
-
-{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpAdd__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
-
-	'+' 
-
-{ after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
-
-	'-' 
-
-{ after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpMulti__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
-
-	'*' 
-
-{ after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
-
-	'**' 
-
-{ after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
-
-	'/' 
-
-{ after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
-)
-
-    |(
-{ before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
-
-	'%' 
-
-{ after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XUnaryOperation__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
-(rule__XUnaryOperation__Group_0__0)
-{ after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
-	ruleXCastedExpression
-{ after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpUnary__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
-
-	'!' 
-
-{ after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
-
-	'-' 
-
-{ after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
-
-	'+' 
-
-{ after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OpPostfix__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
-
-	'++' 
-
-{ after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
-)
-
-    |(
-{ before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
-
-	'--' 
-
-{ after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XMemberFeatureCall__Alternatives_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
-(rule__XMemberFeatureCall__Group_1_0__0)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
-(rule__XMemberFeatureCall__Group_1_1__0)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
-
-	'.' 
-
-{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
-(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
-
-	'.' 
-
-{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
-(rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
-)
-
-    |(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
-(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XMemberFeatureCall__Alternatives_1_1_3_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
-(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
-(rule__XMemberFeatureCall__Group_1_1_3_1_1__0)
-{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XPrimaryExpression__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
-	ruleXConstructorCall
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
-	ruleXBlockExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
-	ruleXSwitchExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
-(	ruleXSynchronizedExpression)
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
-	ruleXFeatureCall
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
-	ruleXLiteral
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
-	ruleXIfExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
-(	ruleXForLoopExpression)
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
-	ruleXBasicForLoopExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
-	ruleXWhileExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
-	ruleXDoWhileExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
-	ruleXThrowExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
-	ruleXReturnExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
-	ruleXTryCatchFinallyExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
-)
-
-    |(
-{ before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
-	ruleXParenthesizedExpression
-{ after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XLiteral__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
-	ruleXCollectionLiteral
-{ after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
-(	ruleXClosure)
-{ after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
-	ruleXBooleanLiteral
-{ after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
-	ruleXNumberLiteral
-{ after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
-	ruleXNullLiteral
-{ after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
-	ruleXStringLiteral
-{ after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
-)
-
-    |(
-{ before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
-	ruleXTypeLiteral
-{ after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XCollectionLiteral__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
-	ruleXSetLiteral
-{ after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
-	ruleXListLiteral
-{ after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XSwitchExpression__Alternatives_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
-(rule__XSwitchExpression__Group_2_0__0)
-{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
-(rule__XSwitchExpression__Group_2_1__0)
-{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XCasePart__Alternatives_3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
-(rule__XCasePart__Group_3_0__0)
-{ after(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
-(rule__XCasePart__FallThroughAssignment_3_1)
-{ after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XExpressionOrVarDeclaration__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
-	ruleXVariableDeclaration
-{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
-	ruleXExpression
-{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XVariableDeclaration__Alternatives_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
-(rule__XVariableDeclaration__WriteableAssignment_1_0)
-{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
-
-	'val' 
-
-{ after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XVariableDeclaration__Alternatives_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
-(rule__XVariableDeclaration__Group_2_0__0)
-{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
-(rule__XVariableDeclaration__NameAssignment_2_1)
-{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XFeatureCall__Alternatives_3_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
-(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0)
-{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
-(rule__XFeatureCall__Group_3_1_1__0)
-{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__FeatureCallID__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
-	ruleValidID
-{ after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
-
-	'extends' 
-
-{ after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
-)
-
-    |(
-{ before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
-
-	'static' 
-
-{ after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
-)
-
-    |(
-{ before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
-
-	'import' 
-
-{ after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
-)
-
-    |(
-{ before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
-
-	'extension' 
-
-{ after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__IdOrSuper__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
-	ruleFeatureCallID
-{ after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
-
-	'super' 
-
-{ after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XConstructorCall__Alternatives_4_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
-(rule__XConstructorCall__ArgumentsAssignment_4_1_0)
-{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
-(rule__XConstructorCall__Group_4_1_1__0)
-{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XBooleanLiteral__Alternatives_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
-
-	'false' 
-
-{ after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
-(rule__XBooleanLiteral__IsTrueAssignment_1_1)
-{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XTryCatchFinallyExpression__Alternatives_3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
-(rule__XTryCatchFinallyExpression__Group_3_0__0)
-{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
-(rule__XTryCatchFinallyExpression__Group_3_1__0)
-{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__Number__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
-	RULE_HEX
-{ after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getNumberAccess().getGroup_1()); }
-(rule__Number__Group_1__0)
-{ after(grammarAccess.getNumberAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__Number__Alternatives_1_0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
-	RULE_INT
-{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
-)
-
-    |(
-{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
-	RULE_DECIMAL
-{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__Number__Alternatives_1_1_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
-	RULE_INT
-{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
-	RULE_DECIMAL
-{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__JvmTypeReference__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
-(rule__JvmTypeReference__Group_0__0)
-{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
-)
-
-    |(
-{ before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
-	ruleXFunctionTypeRef
-{ after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__JvmArgumentTypeReference__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
-	ruleJvmTypeReference
-{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
-)
-
-    |(
-{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
-	ruleJvmWildcardTypeReference
-{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__JvmWildcardTypeReference__Alternatives_2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
-(rule__JvmWildcardTypeReference__Group_2_0__0)
-{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
-)
-
-    |(
-{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
-(rule__JvmWildcardTypeReference__Group_2_1__0)
-{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XImportDeclaration__Alternatives_1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
-(rule__XImportDeclaration__Group_1_0__0)
-{ after(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
-(rule__XImportDeclaration__ImportedTypeAssignment_1_1)
-{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
-)
-
-    |(
-{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
-(rule__XImportDeclaration__ImportedNamespaceAssignment_1_2)
-{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__XImportDeclaration__Alternatives_1_0_3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
-(rule__XImportDeclaration__WildcardAssignment_1_0_3_0)
-{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
-)
-
-    |(
-{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
-(rule__XImportDeclaration__MemberNameAssignment_1_0_3_1)
-{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EDateStepType__Alternatives
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEDateStepTypeAccess().getDAYSEnumLiteralDeclaration_0()); }
-(	'days' 
-)
-{ after(grammarAccess.getEDateStepTypeAccess().getDAYSEnumLiteralDeclaration_0()); }
-)
-
-    |(
-{ before(grammarAccess.getEDateStepTypeAccess().getWEEKSEnumLiteralDeclaration_1()); }
-(	'weeks' 
-)
-{ after(grammarAccess.getEDateStepTypeAccess().getWEEKSEnumLiteralDeclaration_1()); }
-)
-
-    |(
-{ before(grammarAccess.getEDateStepTypeAccess().getMONTHSEnumLiteralDeclaration_2()); }
-(	'months' 
-)
-{ after(grammarAccess.getEDateStepTypeAccess().getMONTHSEnumLiteralDeclaration_2()); }
-)
-
-    |(
-{ before(grammarAccess.getEDateStepTypeAccess().getYEARSEnumLiteralDeclaration_3()); }
-(	'years' 
-)
-{ after(grammarAccess.getEDateStepTypeAccess().getYEARSEnumLiteralDeclaration_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-rule__EntityMockPackage__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__0__Impl
-	rule__EntityMockPackage__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getMockEntitymodelForKeyword_0()); }
-
-	'mock entitymodel for' 
-
-{ after(grammarAccess.getEntityMockPackageAccess().getMockEntitymodelForKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__1__Impl
-	rule__EntityMockPackage__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_1()); }
-(rule__EntityMockPackage__ImportsAssignment_1)
-{ after(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__2__Impl
-	rule__EntityMockPackage__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockPackageAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__3__Impl
-	rule__EntityMockPackage__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getGroup_3()); }
-(rule__EntityMockPackage__Group_3__0)?
-{ after(grammarAccess.getEntityMockPackageAccess().getGroup_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__4__Impl
-	rule__EntityMockPackage__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getGroup_4()); }
-(rule__EntityMockPackage__Group_4__0)*
-{ after(grammarAccess.getEntityMockPackageAccess().getGroup_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__5
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__5__Impl
-	rule__EntityMockPackage__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__5__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getDatainterchangesAssignment_5()); }
-(rule__EntityMockPackage__DatainterchangesAssignment_5)?
-{ after(grammarAccess.getEntityMockPackageAccess().getDatainterchangesAssignment_5()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__6
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__6__Impl
-	rule__EntityMockPackage__Group__7
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__6__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getResourcesAssignment_6()); }
-(rule__EntityMockPackage__ResourcesAssignment_6)?
-{ after(grammarAccess.getEntityMockPackageAccess().getResourcesAssignment_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__7
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__7__Impl
-	rule__EntityMockPackage__Group__8
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__7__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getObjectsAssignment_7()); }
-(rule__EntityMockPackage__ObjectsAssignment_7)?
-{ after(grammarAccess.getEntityMockPackageAccess().getObjectsAssignment_7()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__8
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__8__Impl
-	rule__EntityMockPackage__Group__9
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__8__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getDatatypesAssignment_8()); }
-(rule__EntityMockPackage__DatatypesAssignment_8)?
-{ after(grammarAccess.getEntityMockPackageAccess().getDatatypesAssignment_8()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__9
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__9__Impl
-	rule__EntityMockPackage__Group__10
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__9__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getEntitiesAssignment_9()); }
-(rule__EntityMockPackage__EntitiesAssignment_9)
-{ after(grammarAccess.getEntityMockPackageAccess().getEntitiesAssignment_9()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group__10
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group__10__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group__10__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getRightCurlyBracketKeyword_10()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockPackageAccess().getRightCurlyBracketKeyword_10()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockPackage__Group_3__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group_3__0__Impl
-	rule__EntityMockPackage__Group_3__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group_3__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getRunWithPriorityKeyword_3_0()); }
-
-	'run with priority' 
-
-{ after(grammarAccess.getEntityMockPackageAccess().getRunWithPriorityKeyword_3_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group_3__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group_3__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group_3__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getRunPriorityAssignment_3_1()); }
-(rule__EntityMockPackage__RunPriorityAssignment_3_1)
-{ after(grammarAccess.getEntityMockPackageAccess().getRunPriorityAssignment_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockPackage__Group_4__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group_4__0__Impl
-	rule__EntityMockPackage__Group_4__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group_4__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getImportKeyword_4_0()); }
-
-	'import' 
-
-{ after(grammarAccess.getEntityMockPackageAccess().getImportKeyword_4_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockPackage__Group_4__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockPackage__Group_4__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockPackage__Group_4__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_4_1()); }
-(rule__EntityMockPackage__ImportsAssignment_4_1)
-{ after(grammarAccess.getEntityMockPackageAccess().getImportsAssignment_4_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockQualifiedNameWithWildCard__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockQualifiedNameWithWildCard__Group__0__Impl
-	rule__EntityMockQualifiedNameWithWildCard__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockQualifiedNameWithWildCard__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
-	ruleQualifiedName
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockQualifiedNameWithWildCard__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockQualifiedNameWithWildCard__Group__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockQualifiedNameWithWildCard__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup_1()); }
-(rule__EntityMockQualifiedNameWithWildCard__Group_1__0)?
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getGroup_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockQualifiedNameWithWildCard__Group_1__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockQualifiedNameWithWildCard__Group_1__0__Impl
-	rule__EntityMockQualifiedNameWithWildCard__Group_1__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockQualifiedNameWithWildCard__Group_1__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
-
-	'.' 
-
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockQualifiedNameWithWildCard__Group_1__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockQualifiedNameWithWildCard__Group_1__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockQualifiedNameWithWildCard__Group_1__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); }
-
-	'*' 
-
-{ after(grammarAccess.getEntityMockQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__RunningDataInterchanges__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchanges__Group__0__Impl
-	rule__RunningDataInterchanges__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchanges__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getRunningDataInterchangesAction_0()); }
-(
-
-)
-{ after(grammarAccess.getRunningDataInterchangesAccess().getRunningDataInterchangesAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchanges__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchanges__Group__1__Impl
-	rule__RunningDataInterchanges__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchanges__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getDatainterchangesKeyword_1()); }
-
-	'datainterchanges' 
-
-{ after(grammarAccess.getRunningDataInterchangesAccess().getDatainterchangesKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchanges__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchanges__Group__2__Impl
-	rule__RunningDataInterchanges__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchanges__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getRunningDataInterchangesAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchanges__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchanges__Group__3__Impl
-	rule__RunningDataInterchanges__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchanges__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getDatainterchangesAssignment_3()); }
-(rule__RunningDataInterchanges__DatainterchangesAssignment_3)*
-{ after(grammarAccess.getRunningDataInterchangesAccess().getDatainterchangesAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchanges__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchanges__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchanges__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangesAccess().getRightCurlyBracketKeyword_4()); }
-
-	'}' 
-
-{ after(grammarAccess.getRunningDataInterchangesAccess().getRightCurlyBracketKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__RunningDataInterchange__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchange__Group__0__Impl
-	rule__RunningDataInterchange__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchange__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getRunningDataInterchangeAction_0()); }
-(
-
-)
-{ after(grammarAccess.getRunningDataInterchangeAccess().getRunningDataInterchangeAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchange__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchange__Group__1__Impl
-	rule__RunningDataInterchange__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchange__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getDatainterchangeImportKeyword_1()); }
-
-	'datainterchange import' 
-
-{ after(grammarAccess.getRunningDataInterchangeAccess().getDatainterchangeImportKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchange__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchange__Group__2__Impl
-	rule__RunningDataInterchange__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchange__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getDatainterchangeRefAssignment_2()); }
-(rule__RunningDataInterchange__DatainterchangeRefAssignment_2)
-{ after(grammarAccess.getRunningDataInterchangeAccess().getDatainterchangeRefAssignment_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchange__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchange__Group__3__Impl
-	rule__RunningDataInterchange__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchange__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getFromFileKeyword_3()); }
-
-	'from file' 
-
-{ after(grammarAccess.getRunningDataInterchangeAccess().getFromFileKeyword_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__RunningDataInterchange__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__RunningDataInterchange__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__RunningDataInterchange__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getRunningDataInterchangeAccess().getFileURLAssignment_4()); }
-(rule__RunningDataInterchange__FileURLAssignment_4)
-{ after(grammarAccess.getRunningDataInterchangeAccess().getFileURLAssignment_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockResources__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResources__Group__0__Impl
-	rule__EntityMockResources__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResources__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getEntityMockResourcesAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockResourcesAccess().getEntityMockResourcesAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResources__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResources__Group__1__Impl
-	rule__EntityMockResources__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResources__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getResourcesKeyword_1()); }
-
-	'resources' 
-
-{ after(grammarAccess.getEntityMockResourcesAccess().getResourcesKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResources__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResources__Group__2__Impl
-	rule__EntityMockResources__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResources__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockResourcesAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResources__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResources__Group__3__Impl
-	rule__EntityMockResources__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResources__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getResourcesAssignment_3()); }
-(rule__EntityMockResources__ResourcesAssignment_3)*
-{ after(grammarAccess.getEntityMockResourcesAccess().getResourcesAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResources__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResources__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResources__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourcesAccess().getRightCurlyBracketKeyword_4()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockResourcesAccess().getRightCurlyBracketKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockResource__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__0__Impl
-	rule__EntityMockResource__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getResourceKeyword_0()); }
-
-	'resource' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getResourceKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__1__Impl
-	rule__EntityMockResource__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getNameAssignment_1()); }
-(rule__EntityMockResource__NameAssignment_1)
-{ after(grammarAccess.getEntityMockResourceAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__2__Impl
-	rule__EntityMockResource__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__3__Impl
-	rule__EntityMockResource__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getGroup_3()); }
-(rule__EntityMockResource__Group_3__0)?
-{ after(grammarAccess.getEntityMockResourceAccess().getGroup_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__4__Impl
-	rule__EntityMockResource__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getItemsKeyword_4()); }
-
-	'items' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getItemsKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__5
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__5__Impl
-	rule__EntityMockResource__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__5__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getLeftCurlyBracketKeyword_5()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getLeftCurlyBracketKeyword_5()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__6
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__6__Impl
-	rule__EntityMockResource__Group__7
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__6__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getDatarowsAssignment_6()); }
-(rule__EntityMockResource__DatarowsAssignment_6)*
-{ after(grammarAccess.getEntityMockResourceAccess().getDatarowsAssignment_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__7
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__7__Impl
-	rule__EntityMockResource__Group__8
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__7__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getRightCurlyBracketKeyword_7()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getRightCurlyBracketKeyword_7()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group__8
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group__8__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group__8__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getRightCurlyBracketKeyword_8()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getRightCurlyBracketKeyword_8()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockResource__Group_3__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3__0__Impl
-	rule__EntityMockResource__Group_3__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getAttributesKeyword_3_0()); }
-
-	'attributes' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getAttributesKeyword_3_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group_3__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3__1__Impl
-	rule__EntityMockResource__Group_3__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getLeftParenthesisKeyword_3_1()); }
-
-	'(' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getLeftParenthesisKeyword_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group_3__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3__2__Impl
-	rule__EntityMockResource__Group_3__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getGroup_3_2()); }
-(rule__EntityMockResource__Group_3_2__0)*
-{ after(grammarAccess.getEntityMockResourceAccess().getGroup_3_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group_3__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3__3__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getRightParenthesisKeyword_3_3()); }
-
-	')' 
-
-{ after(grammarAccess.getEntityMockResourceAccess().getRightParenthesisKeyword_3_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockResource__Group_3_2__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3_2__0__Impl
-	rule__EntityMockResource__Group_3_2__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3_2__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getAttributesAssignment_3_2_0()); }
-(rule__EntityMockResource__AttributesAssignment_3_2_0)
-{ after(grammarAccess.getEntityMockResourceAccess().getAttributesAssignment_3_2_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResource__Group_3_2__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResource__Group_3_2__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResource__Group_3_2__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAccess().getCommaKeyword_3_2_1()); }
-(
-	',' 
-)?
-{ after(grammarAccess.getEntityMockResourceAccess().getCommaKeyword_3_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockResourceAttribute__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceAttribute__Group__0__Impl
-	rule__EntityMockResourceAttribute__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceAttribute__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAttributeAccess().getEntityMockResourceAttributeAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockResourceAttributeAccess().getEntityMockResourceAttributeAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceAttribute__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceAttribute__Group__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceAttribute__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceAttributeAccess().getNameAssignment_1()); }
-(rule__EntityMockResourceAttribute__NameAssignment_1)
-{ after(grammarAccess.getEntityMockResourceAttributeAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockResourceDataRow__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group__0__Impl
-	rule__EntityMockResourceDataRow__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getEntityMockResourceDataRowAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getEntityMockResourceDataRowAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceDataRow__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group__1__Impl
-	rule__EntityMockResourceDataRow__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getNameAssignment_1()); }
-(rule__EntityMockResourceDataRow__NameAssignment_1)
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceDataRow__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group__2__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2()); }
-(rule__EntityMockResourceDataRow__Group_2__0)?
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-rule__EntityMockResourceDataRow__Group_2__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group_2__0__Impl
-	rule__EntityMockResourceDataRow__Group_2__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group_2__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getLeftParenthesisKeyword_2_0()); }
-
-	'(' 
-
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getLeftParenthesisKeyword_2_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceDataRow__Group_2__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group_2__1__Impl
-	rule__EntityMockResourceDataRow__Group_2__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group_2__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2_1()); }
-(rule__EntityMockResourceDataRow__Group_2_1__0)*
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getGroup_2_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceDataRow__Group_2__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group_2__2__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group_2__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getRightParenthesisKeyword_2_2()); }
-
-	')' 
-
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getRightParenthesisKeyword_2_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-rule__EntityMockResourceDataRow__Group_2_1__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group_2_1__0__Impl
-	rule__EntityMockResourceDataRow__Group_2_1__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group_2_1__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getValuesAssignment_2_1_0()); }
-(rule__EntityMockResourceDataRow__ValuesAssignment_2_1_0)
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getValuesAssignment_2_1_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockResourceDataRow__Group_2_1__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockResourceDataRow__Group_2_1__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockResourceDataRow__Group_2_1__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockResourceDataRowAccess().getCommaKeyword_2_1_1()); }
-(
-	',' 
-)?
-{ after(grammarAccess.getEntityMockResourceDataRowAccess().getCommaKeyword_2_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjects__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjects__Group__0__Impl
-	rule__EntityMockObjects__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjects__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getEntityMockObjectsAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockObjectsAccess().getEntityMockObjectsAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjects__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjects__Group__1__Impl
-	rule__EntityMockObjects__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjects__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getObjectsKeyword_1()); }
-
-	'objects' 
-
-{ after(grammarAccess.getEntityMockObjectsAccess().getObjectsKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjects__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjects__Group__2__Impl
-	rule__EntityMockObjects__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjects__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockObjectsAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjects__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjects__Group__3__Impl
-	rule__EntityMockObjects__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjects__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getObjectsAssignment_3()); }
-(rule__EntityMockObjects__ObjectsAssignment_3)*
-{ after(grammarAccess.getEntityMockObjectsAccess().getObjectsAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjects__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjects__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjects__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectsAccess().getRightCurlyBracketKeyword_4()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockObjectsAccess().getRightCurlyBracketKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObject__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__0__Impl
-	rule__EntityMockObject__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getObjectKeyword_0()); }
-
-	'object' 
-
-{ after(grammarAccess.getEntityMockObjectAccess().getObjectKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__1__Impl
-	rule__EntityMockObject__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getNameAssignment_1()); }
-(rule__EntityMockObject__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__2__Impl
-	rule__EntityMockObject__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockObjectAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__3__Impl
-	rule__EntityMockObject__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getEnumerationsAssignment_3()); }
-(rule__EntityMockObject__EnumerationsAssignment_3)*
-{ after(grammarAccess.getEntityMockObjectAccess().getEnumerationsAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__4__Impl
-	rule__EntityMockObject__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getAttributesAssignment_4()); }
-(rule__EntityMockObject__AttributesAssignment_4)*
-{ after(grammarAccess.getEntityMockObjectAccess().getAttributesAssignment_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__5
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__5__Impl
-	rule__EntityMockObject__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__5__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getCalculationsAssignment_5()); }
-(rule__EntityMockObject__CalculationsAssignment_5)*
-{ after(grammarAccess.getEntityMockObjectAccess().getCalculationsAssignment_5()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObject__Group__6
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObject__Group__6__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObject__Group__6__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectAccess().getRightCurlyBracketKeyword_6()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockObjectAccess().getRightCurlyBracketKeyword_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectEnum__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEnum__Group__0__Impl
-	rule__EntityMockObjectEnum__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEnum__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEnumAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectEnumAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEnum__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEnum__Group__1__Impl
-	rule__EntityMockObjectEnum__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEnum__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEnumAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectEnum__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectEnumAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEnum__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEnum__Group__2__Impl
-	rule__EntityMockObjectEnum__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEnum__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEnumAccess().getByEnumKeyword_2()); }
-
-	'by enum' 
-
-{ after(grammarAccess.getEntityMockObjectEnumAccess().getByEnumKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEnum__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEnum__Group__3__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEnum__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEnumAccess().getUsingResourceAssignment_3()); }
-(rule__EntityMockObjectEnum__UsingResourceAssignment_3)
-{ after(grammarAccess.getEntityMockObjectEnumAccess().getUsingResourceAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockDataTypes__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockDataTypes__Group__0__Impl
-	rule__EntityMockDataTypes__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockDataTypes__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getEntityMockDataTypesAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockDataTypesAccess().getEntityMockDataTypesAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockDataTypes__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockDataTypes__Group__1__Impl
-	rule__EntityMockDataTypes__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockDataTypes__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getDatatypesKeyword_1()); }
-
-	'datatypes' 
-
-{ after(grammarAccess.getEntityMockDataTypesAccess().getDatatypesKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockDataTypes__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockDataTypes__Group__2__Impl
-	rule__EntityMockDataTypes__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockDataTypes__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getLeftCurlyBracketKeyword_2()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockDataTypesAccess().getLeftCurlyBracketKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockDataTypes__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockDataTypes__Group__3__Impl
-	rule__EntityMockDataTypes__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockDataTypes__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getDatatypesAssignment_3()); }
-(rule__EntityMockDataTypes__DatatypesAssignment_3)*
-{ after(grammarAccess.getEntityMockDataTypesAccess().getDatatypesAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockDataTypes__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockDataTypes__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockDataTypes__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockDataTypesAccess().getRightCurlyBracketKeyword_4()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockDataTypesAccess().getRightCurlyBracketKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectPlainValue__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group__0__Impl
-	rule__EntityMockObjectPlainValue__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectPlainValue__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group__1__Impl
-	rule__EntityMockObjectPlainValue__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectPlainValue__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectPlainValue__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group__2__Impl
-	rule__EntityMockObjectPlainValue__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getLeftParenthesisKeyword_2()); }
-
-	'(' 
-
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getLeftParenthesisKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectPlainValue__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group__3__Impl
-	rule__EntityMockObjectPlainValue__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup_3()); }
-(rule__EntityMockObjectPlainValue__Group_3__0)*
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getGroup_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectPlainValue__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getRightParenthesisKeyword_4()); }
-
-	')' 
-
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getRightParenthesisKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectPlainValue__Group_3__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group_3__0__Impl
-	rule__EntityMockObjectPlainValue__Group_3__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group_3__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getValuesAssignment_3_0()); }
-(rule__EntityMockObjectPlainValue__ValuesAssignment_3_0)
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getValuesAssignment_3_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectPlainValue__Group_3__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectPlainValue__Group_3__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectPlainValue__Group_3__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectPlainValueAccess().getCommaKeyword_3_1()); }
-(
-	',' 
-)?
-{ after(grammarAccess.getEntityMockObjectPlainValueAccess().getCommaKeyword_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectResourceValue__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group__0__Impl
-	rule__EntityMockObjectResourceValue__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectResourceValue__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group__1__Impl
-	rule__EntityMockObjectResourceValue__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectResourceValue__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectResourceValue__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group__2__Impl
-	rule__EntityMockObjectResourceValue__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getWithKeyword_2()); }
-
-	'with' 
-
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getWithKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectResourceValue__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group__3__Impl
-	rule__EntityMockObjectResourceValue__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceEnumAssignment_3()); }
-(rule__EntityMockObjectResourceValue__ResourceEnumAssignment_3)
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceEnumAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectResourceValue__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup_4()); }
-(rule__EntityMockObjectResourceValue__Group_4__0)?
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getGroup_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectResourceValue__Group_4__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group_4__0__Impl
-	rule__EntityMockObjectResourceValue__Group_4__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group_4__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getFullStopKeyword_4_0()); }
-
-	'.' 
-
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getFullStopKeyword_4_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectResourceValue__Group_4__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectResourceValue__Group_4__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectResourceValue__Group_4__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceAttributeAssignment_4_1()); }
-(rule__EntityMockObjectResourceValue__ResourceAttributeAssignment_4_1)
-{ after(grammarAccess.getEntityMockObjectResourceValueAccess().getResourceAttributeAssignment_4_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectArrayValue__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__0__Impl
-	rule__EntityMockObjectArrayValue__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__1__Impl
-	rule__EntityMockObjectArrayValue__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectArrayValue__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__2__Impl
-	rule__EntityMockObjectArrayValue__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getSwitchOnKeyword_2()); }
-
-	'switch on' 
-
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getSwitchOnKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__3__Impl
-	rule__EntityMockObjectArrayValue__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getEnumerationAssignment_3()); }
-(rule__EntityMockObjectArrayValue__EnumerationAssignment_3)
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getEnumerationAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__4__Impl
-	rule__EntityMockObjectArrayValue__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getLeftCurlyBracketKeyword_4()); }
-
-	'{' 
-
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getLeftCurlyBracketKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__5
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__5__Impl
-	rule__EntityMockObjectArrayValue__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__5__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getItemsAssignment_5()); }
-(rule__EntityMockObjectArrayValue__ItemsAssignment_5)*
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getItemsAssignment_5()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectArrayValue__Group__6
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectArrayValue__Group__6__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectArrayValue__Group__6__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectArrayValueAccess().getRightCurlyBracketKeyword_6()); }
-
-	'}' 
-
-{ after(grammarAccess.getEntityMockObjectArrayValueAccess().getRightCurlyBracketKeyword_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectItemValue__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group__0__Impl
-	rule__EntityMockObjectItemValue__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getWhenKeyword_0()); }
-
-	'when' 
-
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getWhenKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectItemValue__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group__1__Impl
-	rule__EntityMockObjectItemValue__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getDatarowAssignment_1()); }
-(rule__EntityMockObjectItemValue__DatarowAssignment_1)
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getDatarowAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectItemValue__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group__2__Impl
-	rule__EntityMockObjectItemValue__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getLeftParenthesisKeyword_2()); }
-
-	'(' 
-
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getLeftParenthesisKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectItemValue__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group__3__Impl
-	rule__EntityMockObjectItemValue__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getGroup_3()); }
-(rule__EntityMockObjectItemValue__Group_3__0)*
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getGroup_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectItemValue__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getRightParenthesisKeyword_4()); }
-
-	')' 
-
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getRightParenthesisKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectItemValue__Group_3__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group_3__0__Impl
-	rule__EntityMockObjectItemValue__Group_3__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group_3__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getValuesAssignment_3_0()); }
-(rule__EntityMockObjectItemValue__ValuesAssignment_3_0)
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getValuesAssignment_3_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectItemValue__Group_3__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectItemValue__Group_3__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectItemValue__Group_3__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectItemValueAccess().getCommaKeyword_3_1()); }
-(
-	',' 
-)?
-{ after(grammarAccess.getEntityMockObjectItemValueAccess().getCommaKeyword_3_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectEmbed__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEmbed__Group__0__Impl
-	rule__EntityMockObjectEmbed__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEmbed__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getEntityMockObjectEmbedAction_0()); }
-(
-
-)
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getEntityMockObjectEmbedAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEmbed__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEmbed__Group__1__Impl
-	rule__EntityMockObjectEmbed__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEmbed__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getEmbedKeyword_1()); }
-
-	'embed' 
-
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getEmbedKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEmbed__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEmbed__Group__2__Impl
-	rule__EntityMockObjectEmbed__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEmbed__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getNameAssignment_2()); }
-(rule__EntityMockObjectEmbed__NameAssignment_2)
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getNameAssignment_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEmbed__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEmbed__Group__3__Impl
-	rule__EntityMockObjectEmbed__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEmbed__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getDefinedAsKeyword_3()); }
-
-	'defined as' 
-
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getDefinedAsKeyword_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectEmbed__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectEmbed__Group__4__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectEmbed__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectEmbedAccess().getObjectAssignment_4()); }
-(rule__EntityMockObjectEmbed__ObjectAssignment_4)
-{ after(grammarAccess.getEntityMockObjectEmbedAccess().getObjectAssignment_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectFunction__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__0__Impl
-	rule__EntityMockObjectFunction__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__1__Impl
-	rule__EntityMockObjectFunction__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectFunction__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__2__Impl
-	rule__EntityMockObjectFunction__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getCalculateAsKeyword_2()); }
-
-	'calculate as' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getCalculateAsKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__3__Impl
-	rule__EntityMockObjectFunction__Group__4
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__3__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getOftypeAssignment_3()); }
-(rule__EntityMockObjectFunction__OftypeAssignment_3)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getOftypeAssignment_3()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__4
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__4__Impl
-	rule__EntityMockObjectFunction__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__4__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getBasedOnKeyword_4()); }
-
-	'based on' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getBasedOnKeyword_4()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__5
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__5__Impl
-	rule__EntityMockObjectFunction__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__5__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getLeftParenthesisKeyword_5()); }
-
-	'(' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getLeftParenthesisKeyword_5()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__6
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__6__Impl
-	rule__EntityMockObjectFunction__Group__7
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__6__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6()); }
-(rule__EntityMockObjectFunction__Group_6__0)?
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__7
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__7__Impl
-	rule__EntityMockObjectFunction__Group__8
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__7__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getRightParenthesisKeyword_7()); }
-
-	')' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getRightParenthesisKeyword_7()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group__8
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group__8__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group__8__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getBodyAssignment_8()); }
-(rule__EntityMockObjectFunction__BodyAssignment_8)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getBodyAssignment_8()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rule__EntityMockObjectFunction__Group_6__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group_6__0__Impl
-	rule__EntityMockObjectFunction__Group_6__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group_6__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_0()); }
-(rule__EntityMockObjectFunction__ParamsAssignment_6_0)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group_6__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group_6__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group_6__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6_1()); }
-(rule__EntityMockObjectFunction__Group_6_1__0)*
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getGroup_6_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectFunction__Group_6_1__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group_6_1__0__Impl
-	rule__EntityMockObjectFunction__Group_6_1__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group_6_1__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getCommaKeyword_6_1_0()); }
-
-	',' 
-
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getCommaKeyword_6_1_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunction__Group_6_1__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunction__Group_6_1__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunction__Group_6_1__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_1_1()); }
-(rule__EntityMockObjectFunction__ParamsAssignment_6_1_1)
-{ after(grammarAccess.getEntityMockObjectFunctionAccess().getParamsAssignment_6_1_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectFunctionParameter__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunctionParameter__Group__0__Impl
-	rule__EntityMockObjectFunctionParameter__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunctionParameter__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionParameterAccess().getParameterTypeAssignment_0()); }
-(rule__EntityMockObjectFunctionParameter__ParameterTypeAssignment_0)
-{ after(grammarAccess.getEntityMockObjectFunctionParameterAccess().getParameterTypeAssignment_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFunctionParameter__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFunctionParameter__Group__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFunctionParameter__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFunctionParameterAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectFunctionParameter__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectFunctionParameterAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__EntityMockObjectFill__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFill__Group__0__Impl
-	rule__EntityMockObjectFill__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFill__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFillAccess().getVarKeyword_0()); }
-
-	'var' 
-
-{ after(grammarAccess.getEntityMockObjectFillAccess().getVarKeyword_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFill__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFill__Group__1__Impl
-	rule__EntityMockObjectFill__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFill__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFillAccess().getNameAssignment_1()); }
-(rule__EntityMockObjectFill__NameAssignment_1)
-{ after(grammarAccess.getEntityMockObjectFillAccess().getNameAssignment_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFill__Group__2
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__EntityMockObjectFill__Group__2__Impl
-	rule__EntityMockObjectFill__Group__3
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityMockObjectFill__Group__2__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getEntityMockObjectFillAccess().getRandomizeKeyword_2()); }
-
-	'randomize' 
-
-{ after(grammarAccess.getEntityMockObjectFillAccess().getRandomizeKeyword_2()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__EntityMockObjectFill__Group__3
-    @init {
-		int stackSize = keepStackSize();
-    }
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.tokens b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.tokens
deleted file mode 100644
index 9f53ca1..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.tokens
+++ /dev/null
@@ -1,297 +0,0 @@
-'!'=41
-'!='=23
-'!=='=25
-'#'=125
-'%'=40
-'%='=21
-'&&'=15
-'&'=148
-'('=67
-')'=68
-'*'=37
-'**'=38
-'*='=19
-'+'=35
-'++'=42
-'+='=17
-','=69
-'-'=36
-'--'=43
-'-='=18
-'->'=29
-'.'=44
-'..'=31
-'..<'=30
-'/'=39
-'/='=20
-':'=132
-'::'=153
-';'=128
-'<'=28
-'<>'=33
-'='=13
-'=='=22
-'==='=24
-'=>'=32
-'>'=27
-'>='=26
-'?'=147
-'?.'=154
-'?:'=34
-'@'=123
-'['=126
-']'=124
-'as'=115
-'attributes'=66
-'based on'=81
-'boolean'=85
-'by enum'=73
-'by object'=117
-'by resource'=108
-'calculate as'=80
-'calculate based on'=118
-'case'=134
-'catch'=146
-'createBlobMapping'=149
-'datainterchange import'=61
-'datainterchanges'=60
-'datatype'=102
-'datatypes'=74
-'date from'=113
-'date in range'=86
-'days'=52
-'decimals'=89
-'default'=133
-'defined as'=79
-'do'=137
-'else'=130
-'embed'=78
-'every'=114
-'existing entities'=16
-'extends'=46
-'extension'=49
-'false'=51
-'finally'=144
-'for entity'=105
-'for'=135
-'from file'=62
-'future date'=83
-'if'=129
-'import'=48
-'instanceof'=127
-'integer from'=110
-'items'=65
-'iterate'=109
-'mock entities'=103
-'mock entitymodel for'=56
-'mocking'=104
-'months'=54
-'new'=138
-'null'=139
-'object'=71
-'objects'=70
-'optional for'=121
-'paragraps'=95
-'past date'=84
-'percent'=122
-'randomize'=82
-'ref'=120
-'resource'=64
-'resources'=63
-'return'=142
-'round to'=90
-'rows'=106
-'run with priority'=59
-'sentences'=96
-'signed double from'=91
-'signed double in range'=88
-'signed integer from'=93
-'signed integer in range'=92
-'static'=47
-'step'=112
-'super'=50
-'switch on'=76
-'switch'=131
-'synchronized'=145
-'temporary'=116
-'text from'=94
-'throw'=141
-'to'=107
-'today'=151
-'tomorrow'=152
-'true'=156
-'try'=143
-'typeof'=140
-'unsigned double from'=99
-'unsigned double in range'=98
-'unsigned integer from'=101
-'unsigned integer in range'=100
-'until'=111
-'up to and including'=87
-'using'=119
-'val'=45
-'var'=72
-'weeks'=53
-'when'=77
-'while'=136
-'with'=75
-'words'=97
-'years'=55
-'yesterday'=150
-'{'=57
-'|'=155
-'||'=14
-'}'=58
-RULE_ANY_OTHER=12
-RULE_DECIMAL=7
-RULE_HEX=5
-RULE_ID=4
-RULE_INT=6
-RULE_ML_COMMENT=9
-RULE_SL_COMMENT=10
-RULE_STRING=8
-RULE_WS=11
-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__135=135
-T__136=136
-T__137=137
-T__138=138
-T__139=139
-T__13=13
-T__140=140
-T__141=141
-T__142=142
-T__143=143
-T__144=144
-T__145=145
-T__146=146
-T__147=147
-T__148=148
-T__149=149
-T__14=14
-T__150=150
-T__151=151
-T__152=152
-T__153=153
-T__154=154
-T__155=155
-T__156=156
-T__15=15
-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/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLLexer.java b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLLexer.java
deleted file mode 100644
index dafaf19..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLLexer.java
+++ /dev/null
@@ -1,6120 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock.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;
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
-@SuppressWarnings("all")
-public class InternalEntityMockDSLLexer extends Lexer {
-    public static final int T__144=144;
-    public static final int T__143=143;
-    public static final int T__146=146;
-    public static final int RULE_HEX=5;
-    public static final int T__50=50;
-    public static final int T__145=145;
-    public static final int T__140=140;
-    public static final int T__142=142;
-    public static final int T__141=141;
-    public static final int T__59=59;
-    public static final int T__55=55;
-    public static final int T__56=56;
-    public static final int T__57=57;
-    public static final int T__58=58;
-    public static final int T__51=51;
-    public static final int T__137=137;
-    public static final int T__52=52;
-    public static final int T__136=136;
-    public static final int T__53=53;
-    public static final int T__139=139;
-    public static final int T__54=54;
-    public static final int T__138=138;
-    public static final int T__133=133;
-    public static final int T__132=132;
-    public static final int T__60=60;
-    public static final int T__135=135;
-    public static final int T__61=61;
-    public static final int T__134=134;
-    public static final int RULE_ID=4;
-    public static final int T__131=131;
-    public static final int T__130=130;
-    public static final int RULE_INT=6;
-    public static final int T__66=66;
-    public static final int RULE_ML_COMMENT=9;
-    public static final int T__67=67;
-    public static final int T__129=129;
-    public static final int T__68=68;
-    public static final int T__69=69;
-    public static final int T__62=62;
-    public static final int T__126=126;
-    public static final int T__63=63;
-    public static final int T__125=125;
-    public static final int T__64=64;
-    public static final int T__128=128;
-    public static final int T__65=65;
-    public static final int T__127=127;
-    public static final int T__37=37;
-    public static final int T__38=38;
-    public static final int T__39=39;
-    public static final int T__33=33;
-    public static final int T__34=34;
-    public static final int T__35=35;
-    public static final int T__36=36;
-    public static final int T__30=30;
-    public static final int T__31=31;
-    public static final int T__32=32;
-    public static final int T__155=155;
-    public static final int T__154=154;
-    public static final int T__156=156;
-    public static final int T__151=151;
-    public static final int T__150=150;
-    public static final int T__153=153;
-    public static final int T__152=152;
-    public static final int T__48=48;
-    public static final int T__49=49;
-    public static final int T__44=44;
-    public static final int T__45=45;
-    public static final int T__46=46;
-    public static final int T__47=47;
-    public static final int T__40=40;
-    public static final int T__148=148;
-    public static final int T__41=41;
-    public static final int T__147=147;
-    public static final int T__42=42;
-    public static final int T__43=43;
-    public static final int T__149=149;
-    public static final int T__91=91;
-    public static final int T__100=100;
-    public static final int T__92=92;
-    public static final int T__93=93;
-    public static final int T__102=102;
-    public static final int T__94=94;
-    public static final int T__101=101;
-    public static final int T__90=90;
-    public static final int T__19=19;
-    public static final int T__15=15;
-    public static final int T__16=16;
-    public static final int T__17=17;
-    public static final int T__18=18;
-    public static final int T__99=99;
-    public static final int T__13=13;
-    public static final int T__14=14;
-    public static final int T__95=95;
-    public static final int T__96=96;
-    public static final int T__97=97;
-    public static final int T__98=98;
-    public static final int RULE_DECIMAL=7;
-    public static final int T__26=26;
-    public static final int T__27=27;
-    public static final int T__28=28;
-    public static final int T__29=29;
-    public static final int T__22=22;
-    public static final int T__23=23;
-    public static final int T__24=24;
-    public static final int T__25=25;
-    public static final int T__20=20;
-    public static final int T__21=21;
-    public static final int T__122=122;
-    public static final int T__70=70;
-    public static final int T__121=121;
-    public static final int T__71=71;
-    public static final int T__124=124;
-    public static final int T__72=72;
-    public static final int T__123=123;
-    public static final int T__120=120;
-    public static final int RULE_STRING=8;
-    public static final int RULE_SL_COMMENT=10;
-    public static final int T__77=77;
-    public static final int T__119=119;
-    public static final int T__78=78;
-    public static final int T__118=118;
-    public static final int T__79=79;
-    public static final int T__73=73;
-    public static final int T__115=115;
-    public static final int EOF=-1;
-    public static final int T__74=74;
-    public static final int T__114=114;
-    public static final int T__75=75;
-    public static final int T__117=117;
-    public static final int T__76=76;
-    public static final int T__116=116;
-    public static final int T__80=80;
-    public static final int T__111=111;
-    public static final int T__81=81;
-    public static final int T__110=110;
-    public static final int T__82=82;
-    public static final int T__113=113;
-    public static final int T__83=83;
-    public static final int T__112=112;
-    public static final int RULE_WS=11;
-    public static final int RULE_ANY_OTHER=12;
-    public static final int T__88=88;
-    public static final int T__108=108;
-    public static final int T__89=89;
-    public static final int T__107=107;
-    public static final int T__109=109;
-    public static final int T__84=84;
-    public static final int T__104=104;
-    public static final int T__85=85;
-    public static final int T__103=103;
-    public static final int T__86=86;
-    public static final int T__106=106;
-    public static final int T__87=87;
-    public static final int T__105=105;
-
-    // delegates
-    // delegators
-
-    public InternalEntityMockDSLLexer() {;} 
-    public InternalEntityMockDSLLexer(CharStream input) {
-        this(input, new RecognizerSharedState());
-    }
-    public InternalEntityMockDSLLexer(CharStream input, RecognizerSharedState state) {
-        super(input,state);
-
-    }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g"; }
-
-    // $ANTLR start "T__13"
-    public final void mT__13() throws RecognitionException {
-        try {
-            int _type = T__13;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:11:7: ( '=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:11:9: '='
-            {
-            match('='); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__13"
-
-    // $ANTLR start "T__14"
-    public final void mT__14() throws RecognitionException {
-        try {
-            int _type = T__14;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:12:7: ( '||' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:12:9: '||'
-            {
-            match("||"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__14"
-
-    // $ANTLR start "T__15"
-    public final void mT__15() throws RecognitionException {
-        try {
-            int _type = T__15;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:13:7: ( '&&' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:13:9: '&&'
-            {
-            match("&&"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__15"
-
-    // $ANTLR start "T__16"
-    public final void mT__16() throws RecognitionException {
-        try {
-            int _type = T__16;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:14:7: ( 'existing entities' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:14:9: 'existing entities'
-            {
-            match("existing entities"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__16"
-
-    // $ANTLR start "T__17"
-    public final void mT__17() throws RecognitionException {
-        try {
-            int _type = T__17;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:15:7: ( '+=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:15:9: '+='
-            {
-            match("+="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__17"
-
-    // $ANTLR start "T__18"
-    public final void mT__18() throws RecognitionException {
-        try {
-            int _type = T__18;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:16:7: ( '-=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:16:9: '-='
-            {
-            match("-="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__18"
-
-    // $ANTLR start "T__19"
-    public final void mT__19() throws RecognitionException {
-        try {
-            int _type = T__19;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:17:7: ( '*=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:17:9: '*='
-            {
-            match("*="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__19"
-
-    // $ANTLR start "T__20"
-    public final void mT__20() throws RecognitionException {
-        try {
-            int _type = T__20;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:18:7: ( '/=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:18:9: '/='
-            {
-            match("/="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__20"
-
-    // $ANTLR start "T__21"
-    public final void mT__21() throws RecognitionException {
-        try {
-            int _type = T__21;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:19:7: ( '%=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:19:9: '%='
-            {
-            match("%="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__21"
-
-    // $ANTLR start "T__22"
-    public final void mT__22() throws RecognitionException {
-        try {
-            int _type = T__22;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:20:7: ( '==' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:20:9: '=='
-            {
-            match("=="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__22"
-
-    // $ANTLR start "T__23"
-    public final void mT__23() throws RecognitionException {
-        try {
-            int _type = T__23;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:21:7: ( '!=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:21:9: '!='
-            {
-            match("!="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__23"
-
-    // $ANTLR start "T__24"
-    public final void mT__24() throws RecognitionException {
-        try {
-            int _type = T__24;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:22:7: ( '===' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:22:9: '==='
-            {
-            match("==="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__24"
-
-    // $ANTLR start "T__25"
-    public final void mT__25() throws RecognitionException {
-        try {
-            int _type = T__25;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:23:7: ( '!==' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:23:9: '!=='
-            {
-            match("!=="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__25"
-
-    // $ANTLR start "T__26"
-    public final void mT__26() throws RecognitionException {
-        try {
-            int _type = T__26;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:24:7: ( '>=' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:24:9: '>='
-            {
-            match(">="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__26"
-
-    // $ANTLR start "T__27"
-    public final void mT__27() throws RecognitionException {
-        try {
-            int _type = T__27;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:25:7: ( '>' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:25:9: '>'
-            {
-            match('>'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__27"
-
-    // $ANTLR start "T__28"
-    public final void mT__28() throws RecognitionException {
-        try {
-            int _type = T__28;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:26:7: ( '<' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:26:9: '<'
-            {
-            match('<'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__28"
-
-    // $ANTLR start "T__29"
-    public final void mT__29() throws RecognitionException {
-        try {
-            int _type = T__29;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:27:7: ( '->' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:27:9: '->'
-            {
-            match("->"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__29"
-
-    // $ANTLR start "T__30"
-    public final void mT__30() throws RecognitionException {
-        try {
-            int _type = T__30;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:28:7: ( '..<' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:28:9: '..<'
-            {
-            match("..<"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__30"
-
-    // $ANTLR start "T__31"
-    public final void mT__31() throws RecognitionException {
-        try {
-            int _type = T__31;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:29:7: ( '..' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:29:9: '..'
-            {
-            match(".."); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__31"
-
-    // $ANTLR start "T__32"
-    public final void mT__32() throws RecognitionException {
-        try {
-            int _type = T__32;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:30:7: ( '=>' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:30:9: '=>'
-            {
-            match("=>"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__32"
-
-    // $ANTLR start "T__33"
-    public final void mT__33() throws RecognitionException {
-        try {
-            int _type = T__33;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:31:7: ( '<>' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:31:9: '<>'
-            {
-            match("<>"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__33"
-
-    // $ANTLR start "T__34"
-    public final void mT__34() throws RecognitionException {
-        try {
-            int _type = T__34;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:32:7: ( '?:' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:32:9: '?:'
-            {
-            match("?:"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__34"
-
-    // $ANTLR start "T__35"
-    public final void mT__35() throws RecognitionException {
-        try {
-            int _type = T__35;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:33:7: ( '+' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:33:9: '+'
-            {
-            match('+'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__35"
-
-    // $ANTLR start "T__36"
-    public final void mT__36() throws RecognitionException {
-        try {
-            int _type = T__36;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:34:7: ( '-' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:34:9: '-'
-            {
-            match('-'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__36"
-
-    // $ANTLR start "T__37"
-    public final void mT__37() throws RecognitionException {
-        try {
-            int _type = T__37;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:35:7: ( '*' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:35:9: '*'
-            {
-            match('*'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__37"
-
-    // $ANTLR start "T__38"
-    public final void mT__38() throws RecognitionException {
-        try {
-            int _type = T__38;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36:7: ( '**' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36:9: '**'
-            {
-            match("**"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__38"
-
-    // $ANTLR start "T__39"
-    public final void mT__39() throws RecognitionException {
-        try {
-            int _type = T__39;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:37:7: ( '/' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:37:9: '/'
-            {
-            match('/'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__39"
-
-    // $ANTLR start "T__40"
-    public final void mT__40() throws RecognitionException {
-        try {
-            int _type = T__40;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:38:7: ( '%' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:38:9: '%'
-            {
-            match('%'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__40"
-
-    // $ANTLR start "T__41"
-    public final void mT__41() throws RecognitionException {
-        try {
-            int _type = T__41;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:39:7: ( '!' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:39:9: '!'
-            {
-            match('!'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__41"
-
-    // $ANTLR start "T__42"
-    public final void mT__42() throws RecognitionException {
-        try {
-            int _type = T__42;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:40:7: ( '++' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:40:9: '++'
-            {
-            match("++"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__42"
-
-    // $ANTLR start "T__43"
-    public final void mT__43() throws RecognitionException {
-        try {
-            int _type = T__43;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:41:7: ( '--' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:41:9: '--'
-            {
-            match("--"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__43"
-
-    // $ANTLR start "T__44"
-    public final void mT__44() throws RecognitionException {
-        try {
-            int _type = T__44;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:42:7: ( '.' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:42:9: '.'
-            {
-            match('.'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__44"
-
-    // $ANTLR start "T__45"
-    public final void mT__45() throws RecognitionException {
-        try {
-            int _type = T__45;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:43:7: ( 'val' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:43:9: 'val'
-            {
-            match("val"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__45"
-
-    // $ANTLR start "T__46"
-    public final void mT__46() throws RecognitionException {
-        try {
-            int _type = T__46;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:44:7: ( 'extends' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:44:9: 'extends'
-            {
-            match("extends"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__46"
-
-    // $ANTLR start "T__47"
-    public final void mT__47() throws RecognitionException {
-        try {
-            int _type = T__47;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:45:7: ( 'static' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:45:9: 'static'
-            {
-            match("static"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__47"
-
-    // $ANTLR start "T__48"
-    public final void mT__48() throws RecognitionException {
-        try {
-            int _type = T__48;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:46:7: ( 'import' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:46:9: 'import'
-            {
-            match("import"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__48"
-
-    // $ANTLR start "T__49"
-    public final void mT__49() throws RecognitionException {
-        try {
-            int _type = T__49;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:47:7: ( 'extension' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:47:9: 'extension'
-            {
-            match("extension"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__49"
-
-    // $ANTLR start "T__50"
-    public final void mT__50() throws RecognitionException {
-        try {
-            int _type = T__50;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:48:7: ( 'super' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:48:9: 'super'
-            {
-            match("super"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__50"
-
-    // $ANTLR start "T__51"
-    public final void mT__51() throws RecognitionException {
-        try {
-            int _type = T__51;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:49:7: ( 'false' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:49:9: 'false'
-            {
-            match("false"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__51"
-
-    // $ANTLR start "T__52"
-    public final void mT__52() throws RecognitionException {
-        try {
-            int _type = T__52;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:50:7: ( 'days' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:50:9: 'days'
-            {
-            match("days"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__52"
-
-    // $ANTLR start "T__53"
-    public final void mT__53() throws RecognitionException {
-        try {
-            int _type = T__53;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:51:7: ( 'weeks' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:51:9: 'weeks'
-            {
-            match("weeks"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__53"
-
-    // $ANTLR start "T__54"
-    public final void mT__54() throws RecognitionException {
-        try {
-            int _type = T__54;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:52:7: ( 'months' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:52:9: 'months'
-            {
-            match("months"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__54"
-
-    // $ANTLR start "T__55"
-    public final void mT__55() throws RecognitionException {
-        try {
-            int _type = T__55;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:53:7: ( 'years' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:53:9: 'years'
-            {
-            match("years"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__55"
-
-    // $ANTLR start "T__56"
-    public final void mT__56() throws RecognitionException {
-        try {
-            int _type = T__56;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:54:7: ( 'mock entitymodel for' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:54:9: 'mock entitymodel for'
-            {
-            match("mock entitymodel for"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__56"
-
-    // $ANTLR start "T__57"
-    public final void mT__57() throws RecognitionException {
-        try {
-            int _type = T__57;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:55:7: ( '{' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:55:9: '{'
-            {
-            match('{'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__57"
-
-    // $ANTLR start "T__58"
-    public final void mT__58() throws RecognitionException {
-        try {
-            int _type = T__58;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:56:7: ( '}' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:56:9: '}'
-            {
-            match('}'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__58"
-
-    // $ANTLR start "T__59"
-    public final void mT__59() throws RecognitionException {
-        try {
-            int _type = T__59;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:57:7: ( 'run with priority' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:57:9: 'run with priority'
-            {
-            match("run with priority"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__59"
-
-    // $ANTLR start "T__60"
-    public final void mT__60() throws RecognitionException {
-        try {
-            int _type = T__60;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:58:7: ( 'datainterchanges' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:58:9: 'datainterchanges'
-            {
-            match("datainterchanges"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__60"
-
-    // $ANTLR start "T__61"
-    public final void mT__61() throws RecognitionException {
-        try {
-            int _type = T__61;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:59:7: ( 'datainterchange import' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:59:9: 'datainterchange import'
-            {
-            match("datainterchange import"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__61"
-
-    // $ANTLR start "T__62"
-    public final void mT__62() throws RecognitionException {
-        try {
-            int _type = T__62;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:60:7: ( 'from file' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:60:9: 'from file'
-            {
-            match("from file"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__62"
-
-    // $ANTLR start "T__63"
-    public final void mT__63() throws RecognitionException {
-        try {
-            int _type = T__63;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:61:7: ( 'resources' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:61:9: 'resources'
-            {
-            match("resources"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__63"
-
-    // $ANTLR start "T__64"
-    public final void mT__64() throws RecognitionException {
-        try {
-            int _type = T__64;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:62:7: ( 'resource' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:62:9: 'resource'
-            {
-            match("resource"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__64"
-
-    // $ANTLR start "T__65"
-    public final void mT__65() throws RecognitionException {
-        try {
-            int _type = T__65;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:63:7: ( 'items' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:63:9: 'items'
-            {
-            match("items"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__65"
-
-    // $ANTLR start "T__66"
-    public final void mT__66() throws RecognitionException {
-        try {
-            int _type = T__66;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:64:7: ( 'attributes' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:64:9: 'attributes'
-            {
-            match("attributes"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__66"
-
-    // $ANTLR start "T__67"
-    public final void mT__67() throws RecognitionException {
-        try {
-            int _type = T__67;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:65:7: ( '(' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:65:9: '('
-            {
-            match('('); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__67"
-
-    // $ANTLR start "T__68"
-    public final void mT__68() throws RecognitionException {
-        try {
-            int _type = T__68;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:66:7: ( ')' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:66:9: ')'
-            {
-            match(')'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__68"
-
-    // $ANTLR start "T__69"
-    public final void mT__69() throws RecognitionException {
-        try {
-            int _type = T__69;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:67:7: ( ',' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:67:9: ','
-            {
-            match(','); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__69"
-
-    // $ANTLR start "T__70"
-    public final void mT__70() throws RecognitionException {
-        try {
-            int _type = T__70;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:68:7: ( 'objects' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:68:9: 'objects'
-            {
-            match("objects"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__70"
-
-    // $ANTLR start "T__71"
-    public final void mT__71() throws RecognitionException {
-        try {
-            int _type = T__71;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:69:7: ( 'object' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:69:9: 'object'
-            {
-            match("object"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__71"
-
-    // $ANTLR start "T__72"
-    public final void mT__72() throws RecognitionException {
-        try {
-            int _type = T__72;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:70:7: ( 'var' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:70:9: 'var'
-            {
-            match("var"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__72"
-
-    // $ANTLR start "T__73"
-    public final void mT__73() throws RecognitionException {
-        try {
-            int _type = T__73;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:71:7: ( 'by enum' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:71:9: 'by enum'
-            {
-            match("by enum"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__73"
-
-    // $ANTLR start "T__74"
-    public final void mT__74() throws RecognitionException {
-        try {
-            int _type = T__74;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:72:7: ( 'datatypes' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:72:9: 'datatypes'
-            {
-            match("datatypes"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__74"
-
-    // $ANTLR start "T__75"
-    public final void mT__75() throws RecognitionException {
-        try {
-            int _type = T__75;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:73:7: ( 'with' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:73:9: 'with'
-            {
-            match("with"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__75"
-
-    // $ANTLR start "T__76"
-    public final void mT__76() throws RecognitionException {
-        try {
-            int _type = T__76;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:74:7: ( 'switch on' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:74:9: 'switch on'
-            {
-            match("switch on"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__76"
-
-    // $ANTLR start "T__77"
-    public final void mT__77() throws RecognitionException {
-        try {
-            int _type = T__77;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:75:7: ( 'when' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:75:9: 'when'
-            {
-            match("when"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__77"
-
-    // $ANTLR start "T__78"
-    public final void mT__78() throws RecognitionException {
-        try {
-            int _type = T__78;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:76:7: ( 'embed' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:76:9: 'embed'
-            {
-            match("embed"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__78"
-
-    // $ANTLR start "T__79"
-    public final void mT__79() throws RecognitionException {
-        try {
-            int _type = T__79;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:77:7: ( 'defined as' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:77:9: 'defined as'
-            {
-            match("defined as"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__79"
-
-    // $ANTLR start "T__80"
-    public final void mT__80() throws RecognitionException {
-        try {
-            int _type = T__80;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:78:7: ( 'calculate as' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:78:9: 'calculate as'
-            {
-            match("calculate as"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__80"
-
-    // $ANTLR start "T__81"
-    public final void mT__81() throws RecognitionException {
-        try {
-            int _type = T__81;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:79:7: ( 'based on' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:79:9: 'based on'
-            {
-            match("based on"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__81"
-
-    // $ANTLR start "T__82"
-    public final void mT__82() throws RecognitionException {
-        try {
-            int _type = T__82;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:80:7: ( 'randomize' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:80:9: 'randomize'
-            {
-            match("randomize"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__82"
-
-    // $ANTLR start "T__83"
-    public final void mT__83() throws RecognitionException {
-        try {
-            int _type = T__83;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:81:7: ( 'future date' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:81:9: 'future date'
-            {
-            match("future date"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__83"
-
-    // $ANTLR start "T__84"
-    public final void mT__84() throws RecognitionException {
-        try {
-            int _type = T__84;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:82:7: ( 'past date' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:82:9: 'past date'
-            {
-            match("past date"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__84"
-
-    // $ANTLR start "T__85"
-    public final void mT__85() throws RecognitionException {
-        try {
-            int _type = T__85;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:83:7: ( 'boolean' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:83:9: 'boolean'
-            {
-            match("boolean"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__85"
-
-    // $ANTLR start "T__86"
-    public final void mT__86() throws RecognitionException {
-        try {
-            int _type = T__86;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:84:7: ( 'date in range' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:84:9: 'date in range'
-            {
-            match("date in range"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__86"
-
-    // $ANTLR start "T__87"
-    public final void mT__87() throws RecognitionException {
-        try {
-            int _type = T__87;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:85:7: ( 'up to and including' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:85:9: 'up to and including'
-            {
-            match("up to and including"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__87"
-
-    // $ANTLR start "T__88"
-    public final void mT__88() throws RecognitionException {
-        try {
-            int _type = T__88;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:86:7: ( 'signed double in range' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:86:9: 'signed double in range'
-            {
-            match("signed double in range"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__88"
-
-    // $ANTLR start "T__89"
-    public final void mT__89() throws RecognitionException {
-        try {
-            int _type = T__89;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:87:7: ( 'decimals' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:87:9: 'decimals'
-            {
-            match("decimals"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__89"
-
-    // $ANTLR start "T__90"
-    public final void mT__90() throws RecognitionException {
-        try {
-            int _type = T__90;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:88:7: ( 'round to' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:88:9: 'round to'
-            {
-            match("round to"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__90"
-
-    // $ANTLR start "T__91"
-    public final void mT__91() throws RecognitionException {
-        try {
-            int _type = T__91;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:89:7: ( 'signed double from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:89:9: 'signed double from'
-            {
-            match("signed double from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__91"
-
-    // $ANTLR start "T__92"
-    public final void mT__92() throws RecognitionException {
-        try {
-            int _type = T__92;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:90:7: ( 'signed integer in range' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:90:9: 'signed integer in range'
-            {
-            match("signed integer in range"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__92"
-
-    // $ANTLR start "T__93"
-    public final void mT__93() throws RecognitionException {
-        try {
-            int _type = T__93;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:91:7: ( 'signed integer from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:91:9: 'signed integer from'
-            {
-            match("signed integer from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__93"
-
-    // $ANTLR start "T__94"
-    public final void mT__94() throws RecognitionException {
-        try {
-            int _type = T__94;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:92:7: ( 'text from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:92:9: 'text from'
-            {
-            match("text from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__94"
-
-    // $ANTLR start "T__95"
-    public final void mT__95() throws RecognitionException {
-        try {
-            int _type = T__95;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:93:7: ( 'paragraps' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:93:9: 'paragraps'
-            {
-            match("paragraps"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__95"
-
-    // $ANTLR start "T__96"
-    public final void mT__96() throws RecognitionException {
-        try {
-            int _type = T__96;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:94:7: ( 'sentences' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:94:9: 'sentences'
-            {
-            match("sentences"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__96"
-
-    // $ANTLR start "T__97"
-    public final void mT__97() throws RecognitionException {
-        try {
-            int _type = T__97;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:95:7: ( 'words' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:95:9: 'words'
-            {
-            match("words"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__97"
-
-    // $ANTLR start "T__98"
-    public final void mT__98() throws RecognitionException {
-        try {
-            int _type = T__98;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:96:7: ( 'unsigned double in range' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:96:9: 'unsigned double in range'
-            {
-            match("unsigned double in range"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__98"
-
-    // $ANTLR start "T__99"
-    public final void mT__99() throws RecognitionException {
-        try {
-            int _type = T__99;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:97:7: ( 'unsigned double from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:97:9: 'unsigned double from'
-            {
-            match("unsigned double from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__99"
-
-    // $ANTLR start "T__100"
-    public final void mT__100() throws RecognitionException {
-        try {
-            int _type = T__100;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:98:8: ( 'unsigned integer in range' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:98:10: 'unsigned integer in range'
-            {
-            match("unsigned integer in range"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__100"
-
-    // $ANTLR start "T__101"
-    public final void mT__101() throws RecognitionException {
-        try {
-            int _type = T__101;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:99:8: ( 'unsigned integer from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:99:10: 'unsigned integer from'
-            {
-            match("unsigned integer from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__101"
-
-    // $ANTLR start "T__102"
-    public final void mT__102() throws RecognitionException {
-        try {
-            int _type = T__102;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:100:8: ( 'datatype' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:100:10: 'datatype'
-            {
-            match("datatype"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__102"
-
-    // $ANTLR start "T__103"
-    public final void mT__103() throws RecognitionException {
-        try {
-            int _type = T__103;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:101:8: ( 'mock entities' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:101:10: 'mock entities'
-            {
-            match("mock entities"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__103"
-
-    // $ANTLR start "T__104"
-    public final void mT__104() throws RecognitionException {
-        try {
-            int _type = T__104;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:102:8: ( 'mocking' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:102:10: 'mocking'
-            {
-            match("mocking"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__104"
-
-    // $ANTLR start "T__105"
-    public final void mT__105() throws RecognitionException {
-        try {
-            int _type = T__105;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:103:8: ( 'for entity' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:103:10: 'for entity'
-            {
-            match("for entity"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__105"
-
-    // $ANTLR start "T__106"
-    public final void mT__106() throws RecognitionException {
-        try {
-            int _type = T__106;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:104:8: ( 'rows' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:104:10: 'rows'
-            {
-            match("rows"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__106"
-
-    // $ANTLR start "T__107"
-    public final void mT__107() throws RecognitionException {
-        try {
-            int _type = T__107;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:105:8: ( 'to' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:105:10: 'to'
-            {
-            match("to"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__107"
-
-    // $ANTLR start "T__108"
-    public final void mT__108() throws RecognitionException {
-        try {
-            int _type = T__108;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:106:8: ( 'by resource' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:106:10: 'by resource'
-            {
-            match("by resource"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__108"
-
-    // $ANTLR start "T__109"
-    public final void mT__109() throws RecognitionException {
-        try {
-            int _type = T__109;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:107:8: ( 'iterate' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:107:10: 'iterate'
-            {
-            match("iterate"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__109"
-
-    // $ANTLR start "T__110"
-    public final void mT__110() throws RecognitionException {
-        try {
-            int _type = T__110;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:108:8: ( 'integer from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:108:10: 'integer from'
-            {
-            match("integer from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__110"
-
-    // $ANTLR start "T__111"
-    public final void mT__111() throws RecognitionException {
-        try {
-            int _type = T__111;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:109:8: ( 'until' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:109:10: 'until'
-            {
-            match("until"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__111"
-
-    // $ANTLR start "T__112"
-    public final void mT__112() throws RecognitionException {
-        try {
-            int _type = T__112;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:110:8: ( 'step' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:110:10: 'step'
-            {
-            match("step"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__112"
-
-    // $ANTLR start "T__113"
-    public final void mT__113() throws RecognitionException {
-        try {
-            int _type = T__113;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:111:8: ( 'date from' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:111:10: 'date from'
-            {
-            match("date from"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__113"
-
-    // $ANTLR start "T__114"
-    public final void mT__114() throws RecognitionException {
-        try {
-            int _type = T__114;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:112:8: ( 'every' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:112:10: 'every'
-            {
-            match("every"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__114"
-
-    // $ANTLR start "T__115"
-    public final void mT__115() throws RecognitionException {
-        try {
-            int _type = T__115;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:113:8: ( 'as' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:113:10: 'as'
-            {
-            match("as"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__115"
-
-    // $ANTLR start "T__116"
-    public final void mT__116() throws RecognitionException {
-        try {
-            int _type = T__116;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:114:8: ( 'temporary' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:114:10: 'temporary'
-            {
-            match("temporary"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__116"
-
-    // $ANTLR start "T__117"
-    public final void mT__117() throws RecognitionException {
-        try {
-            int _type = T__117;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:115:8: ( 'by object' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:115:10: 'by object'
-            {
-            match("by object"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__117"
-
-    // $ANTLR start "T__118"
-    public final void mT__118() throws RecognitionException {
-        try {
-            int _type = T__118;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:116:8: ( 'calculate based on' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:116:10: 'calculate based on'
-            {
-            match("calculate based on"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__118"
-
-    // $ANTLR start "T__119"
-    public final void mT__119() throws RecognitionException {
-        try {
-            int _type = T__119;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:117:8: ( 'using' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:117:10: 'using'
-            {
-            match("using"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__119"
-
-    // $ANTLR start "T__120"
-    public final void mT__120() throws RecognitionException {
-        try {
-            int _type = T__120;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:118:8: ( 'ref' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:118:10: 'ref'
-            {
-            match("ref"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__120"
-
-    // $ANTLR start "T__121"
-    public final void mT__121() throws RecognitionException {
-        try {
-            int _type = T__121;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:119:8: ( 'optional for' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:119:10: 'optional for'
-            {
-            match("optional for"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__121"
-
-    // $ANTLR start "T__122"
-    public final void mT__122() throws RecognitionException {
-        try {
-            int _type = T__122;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:120:8: ( 'percent' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:120:10: 'percent'
-            {
-            match("percent"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__122"
-
-    // $ANTLR start "T__123"
-    public final void mT__123() throws RecognitionException {
-        try {
-            int _type = T__123;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:121:8: ( '@' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:121:10: '@'
-            {
-            match('@'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__123"
-
-    // $ANTLR start "T__124"
-    public final void mT__124() throws RecognitionException {
-        try {
-            int _type = T__124;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:122:8: ( ']' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:122:10: ']'
-            {
-            match(']'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__124"
-
-    // $ANTLR start "T__125"
-    public final void mT__125() throws RecognitionException {
-        try {
-            int _type = T__125;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:123:8: ( '#' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:123:10: '#'
-            {
-            match('#'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__125"
-
-    // $ANTLR start "T__126"
-    public final void mT__126() throws RecognitionException {
-        try {
-            int _type = T__126;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:124:8: ( '[' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:124:10: '['
-            {
-            match('['); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__126"
-
-    // $ANTLR start "T__127"
-    public final void mT__127() throws RecognitionException {
-        try {
-            int _type = T__127;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:125:8: ( 'instanceof' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:125:10: 'instanceof'
-            {
-            match("instanceof"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__127"
-
-    // $ANTLR start "T__128"
-    public final void mT__128() throws RecognitionException {
-        try {
-            int _type = T__128;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:126:8: ( ';' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:126:10: ';'
-            {
-            match(';'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__128"
-
-    // $ANTLR start "T__129"
-    public final void mT__129() throws RecognitionException {
-        try {
-            int _type = T__129;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:127:8: ( 'if' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:127:10: 'if'
-            {
-            match("if"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__129"
-
-    // $ANTLR start "T__130"
-    public final void mT__130() throws RecognitionException {
-        try {
-            int _type = T__130;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:128:8: ( 'else' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:128:10: 'else'
-            {
-            match("else"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__130"
-
-    // $ANTLR start "T__131"
-    public final void mT__131() throws RecognitionException {
-        try {
-            int _type = T__131;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:129:8: ( 'switch' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:129:10: 'switch'
-            {
-            match("switch"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__131"
-
-    // $ANTLR start "T__132"
-    public final void mT__132() throws RecognitionException {
-        try {
-            int _type = T__132;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:130:8: ( ':' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:130:10: ':'
-            {
-            match(':'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__132"
-
-    // $ANTLR start "T__133"
-    public final void mT__133() throws RecognitionException {
-        try {
-            int _type = T__133;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:131:8: ( 'default' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:131:10: 'default'
-            {
-            match("default"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__133"
-
-    // $ANTLR start "T__134"
-    public final void mT__134() throws RecognitionException {
-        try {
-            int _type = T__134;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:132:8: ( 'case' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:132:10: 'case'
-            {
-            match("case"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__134"
-
-    // $ANTLR start "T__135"
-    public final void mT__135() throws RecognitionException {
-        try {
-            int _type = T__135;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:133:8: ( 'for' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:133:10: 'for'
-            {
-            match("for"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__135"
-
-    // $ANTLR start "T__136"
-    public final void mT__136() throws RecognitionException {
-        try {
-            int _type = T__136;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:134:8: ( 'while' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:134:10: 'while'
-            {
-            match("while"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__136"
-
-    // $ANTLR start "T__137"
-    public final void mT__137() throws RecognitionException {
-        try {
-            int _type = T__137;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:135:8: ( 'do' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:135:10: 'do'
-            {
-            match("do"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__137"
-
-    // $ANTLR start "T__138"
-    public final void mT__138() throws RecognitionException {
-        try {
-            int _type = T__138;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:136:8: ( 'new' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:136:10: 'new'
-            {
-            match("new"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__138"
-
-    // $ANTLR start "T__139"
-    public final void mT__139() throws RecognitionException {
-        try {
-            int _type = T__139;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:137:8: ( 'null' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:137:10: 'null'
-            {
-            match("null"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__139"
-
-    // $ANTLR start "T__140"
-    public final void mT__140() throws RecognitionException {
-        try {
-            int _type = T__140;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:138:8: ( 'typeof' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:138:10: 'typeof'
-            {
-            match("typeof"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__140"
-
-    // $ANTLR start "T__141"
-    public final void mT__141() throws RecognitionException {
-        try {
-            int _type = T__141;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:139:8: ( 'throw' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:139:10: 'throw'
-            {
-            match("throw"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__141"
-
-    // $ANTLR start "T__142"
-    public final void mT__142() throws RecognitionException {
-        try {
-            int _type = T__142;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:140:8: ( 'return' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:140:10: 'return'
-            {
-            match("return"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__142"
-
-    // $ANTLR start "T__143"
-    public final void mT__143() throws RecognitionException {
-        try {
-            int _type = T__143;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:141:8: ( 'try' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:141:10: 'try'
-            {
-            match("try"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__143"
-
-    // $ANTLR start "T__144"
-    public final void mT__144() throws RecognitionException {
-        try {
-            int _type = T__144;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:142:8: ( 'finally' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:142:10: 'finally'
-            {
-            match("finally"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__144"
-
-    // $ANTLR start "T__145"
-    public final void mT__145() throws RecognitionException {
-        try {
-            int _type = T__145;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:143:8: ( 'synchronized' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:143:10: 'synchronized'
-            {
-            match("synchronized"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__145"
-
-    // $ANTLR start "T__146"
-    public final void mT__146() throws RecognitionException {
-        try {
-            int _type = T__146;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:144:8: ( 'catch' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:144:10: 'catch'
-            {
-            match("catch"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__146"
-
-    // $ANTLR start "T__147"
-    public final void mT__147() throws RecognitionException {
-        try {
-            int _type = T__147;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:145:8: ( '?' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:145:10: '?'
-            {
-            match('?'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__147"
-
-    // $ANTLR start "T__148"
-    public final void mT__148() throws RecognitionException {
-        try {
-            int _type = T__148;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:146:8: ( '&' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:146:10: '&'
-            {
-            match('&'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__148"
-
-    // $ANTLR start "T__149"
-    public final void mT__149() throws RecognitionException {
-        try {
-            int _type = T__149;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:147:8: ( 'createBlobMapping' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:147:10: 'createBlobMapping'
-            {
-            match("createBlobMapping"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__149"
-
-    // $ANTLR start "T__150"
-    public final void mT__150() throws RecognitionException {
-        try {
-            int _type = T__150;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:148:8: ( 'yesterday' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:148:10: 'yesterday'
-            {
-            match("yesterday"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__150"
-
-    // $ANTLR start "T__151"
-    public final void mT__151() throws RecognitionException {
-        try {
-            int _type = T__151;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:149:8: ( 'today' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:149:10: 'today'
-            {
-            match("today"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__151"
-
-    // $ANTLR start "T__152"
-    public final void mT__152() throws RecognitionException {
-        try {
-            int _type = T__152;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:150:8: ( 'tomorrow' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:150:10: 'tomorrow'
-            {
-            match("tomorrow"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__152"
-
-    // $ANTLR start "T__153"
-    public final void mT__153() throws RecognitionException {
-        try {
-            int _type = T__153;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:151:8: ( '::' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:151:10: '::'
-            {
-            match("::"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__153"
-
-    // $ANTLR start "T__154"
-    public final void mT__154() throws RecognitionException {
-        try {
-            int _type = T__154;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:152:8: ( '?.' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:152:10: '?.'
-            {
-            match("?."); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__154"
-
-    // $ANTLR start "T__155"
-    public final void mT__155() throws RecognitionException {
-        try {
-            int _type = T__155;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:153:8: ( '|' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:153:10: '|'
-            {
-            match('|'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__155"
-
-    // $ANTLR start "T__156"
-    public final void mT__156() throws RecognitionException {
-        try {
-            int _type = T__156;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:154:8: ( 'true' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:154:10: 'true'
-            {
-            match("true"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__156"
-
-    // $ANTLR start "RULE_ID"
-    public final void mRULE_ID() throws RecognitionException {
-        try {
-            int _type = RULE_ID;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36050:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36050:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
-            {
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36050:11: ( '^' )?
-            int alt1=2;
-            int LA1_0 = input.LA(1);
-
-            if ( (LA1_0=='^') ) {
-                alt1=1;
-            }
-            switch (alt1) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36050:11: '^'
-                    {
-                    match('^'); 
-
-                    }
-                    break;
-
-            }
-
-            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
-                input.consume();
-
-            }
-            else {
-                MismatchedSetException mse = new MismatchedSetException(null,input);
-                recover(mse);
-                throw mse;}
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36050:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
-            loop2:
-            do {
-                int alt2=2;
-                int LA2_0 = input.LA(1);
-
-                if ( (LA2_0=='$'||(LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
-                    alt2=1;
-                }
-
-
-                switch (alt2) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:
-            	    {
-            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop2;
-                }
-            } while (true);
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_ID"
-
-    // $ANTLR start "RULE_HEX"
-    public final void mRULE_HEX() throws RecognitionException {
-        try {
-            int _type = RULE_HEX;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
-            {
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:12: ( '0x' | '0X' )
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-
-            if ( (LA3_0=='0') ) {
-                int LA3_1 = input.LA(2);
-
-                if ( (LA3_1=='x') ) {
-                    alt3=1;
-                }
-                else if ( (LA3_1=='X') ) {
-                    alt3=2;
-                }
-                else {
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 3, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("", 3, 0, input);
-
-                throw nvae;
-            }
-            switch (alt3) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:13: '0x'
-                    {
-                    match("0x"); 
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:18: '0X'
-                    {
-                    match("0X"); 
-
-
-                    }
-                    break;
-
-            }
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
-            int cnt4=0;
-            loop4:
-            do {
-                int alt4=2;
-                int LA4_0 = input.LA(1);
-
-                if ( ((LA4_0>='0' && LA4_0<='9')||(LA4_0>='A' && LA4_0<='F')||LA4_0=='_'||(LA4_0>='a' && LA4_0<='f')) ) {
-                    alt4=1;
-                }
-
-
-                switch (alt4) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:
-            	    {
-            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt4 >= 1 ) break loop4;
-                        EarlyExitException eee =
-                            new EarlyExitException(4, input);
-                        throw eee;
-                }
-                cnt4++;
-            } while (true);
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
-
-            if ( (LA6_0=='#') ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
-                    {
-                    match('#'); 
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
-                    int alt5=2;
-                    int LA5_0 = input.LA(1);
-
-                    if ( (LA5_0=='B'||LA5_0=='b') ) {
-                        alt5=1;
-                    }
-                    else if ( (LA5_0=='L'||LA5_0=='l') ) {
-                        alt5=2;
-                    }
-                    else {
-                        NoViableAltException nvae =
-                            new NoViableAltException("", 5, 0, input);
-
-                        throw nvae;
-                    }
-                    switch (alt5) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:64: ( 'b' | 'B' ) ( 'i' | 'I' )
-                            {
-                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
-                                input.consume();
-
-                            }
-                            else {
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                recover(mse);
-                                throw mse;}
-
-                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
-                                input.consume();
-
-                            }
-                            else {
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                recover(mse);
-                                throw mse;}
-
-
-                            }
-                            break;
-                        case 2 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36052:84: ( 'l' | 'L' )
-                            {
-                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
-                                input.consume();
-
-                            }
-                            else {
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                recover(mse);
-                                throw mse;}
-
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_HEX"
-
-    // $ANTLR start "RULE_INT"
-    public final void mRULE_INT() throws RecognitionException {
-        try {
-            int _type = RULE_INT;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36054:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36054:12: '0' .. '9' ( '0' .. '9' | '_' )*
-            {
-            matchRange('0','9'); 
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36054:21: ( '0' .. '9' | '_' )*
-            loop7:
-            do {
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-
-                if ( ((LA7_0>='0' && LA7_0<='9')||LA7_0=='_') ) {
-                    alt7=1;
-                }
-
-
-                switch (alt7) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:
-            	    {
-            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop7;
-                }
-            } while (true);
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_INT"
-
-    // $ANTLR start "RULE_DECIMAL"
-    public final void mRULE_DECIMAL() throws RecognitionException {
-        try {
-            int _type = RULE_DECIMAL;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
-            {
-            mRULE_INT(); 
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
-            int alt9=2;
-            int LA9_0 = input.LA(1);
-
-            if ( (LA9_0=='E'||LA9_0=='e') ) {
-                alt9=1;
-            }
-            switch (alt9) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
-                    {
-                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:36: ( '+' | '-' )?
-                    int alt8=2;
-                    int LA8_0 = input.LA(1);
-
-                    if ( (LA8_0=='+'||LA8_0=='-') ) {
-                        alt8=1;
-                    }
-                    switch (alt8) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:
-                            {
-                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
-                                input.consume();
-
-                            }
-                            else {
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                recover(mse);
-                                throw mse;}
-
-
-                            }
-                            break;
-
-                    }
-
-                    mRULE_INT(); 
-
-                    }
-                    break;
-
-            }
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
-            int alt10=3;
-            int LA10_0 = input.LA(1);
-
-            if ( (LA10_0=='B'||LA10_0=='b') ) {
-                alt10=1;
-            }
-            else if ( (LA10_0=='D'||LA10_0=='F'||LA10_0=='L'||LA10_0=='d'||LA10_0=='f'||LA10_0=='l') ) {
-                alt10=2;
-            }
-            switch (alt10) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
-                    {
-                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36056:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
-                    {
-                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_DECIMAL"
-
-    // $ANTLR start "RULE_STRING"
-    public final void mRULE_STRING() throws RecognitionException {
-        try {
-            int _type = RULE_STRING;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
-            {
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
-            int alt15=2;
-            int LA15_0 = input.LA(1);
-
-            if ( (LA15_0=='\"') ) {
-                alt15=1;
-            }
-            else if ( (LA15_0=='\'') ) {
-                alt15=2;
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
-
-                throw nvae;
-            }
-            switch (alt15) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
-                    {
-                    match('\"'); 
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
-                    loop11:
-                    do {
-                        int alt11=3;
-                        int LA11_0 = input.LA(1);
-
-                        if ( (LA11_0=='\\') ) {
-                            alt11=1;
-                        }
-                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
-                            alt11=2;
-                        }
-
-
-                        switch (alt11) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:21: '\\\\' .
-                    	    {
-                    	    match('\\'); 
-                    	    matchAny(); 
-
-                    	    }
-                    	    break;
-                    	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:28: ~ ( ( '\\\\' | '\"' ) )
-                    	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
-                    	        input.consume();
-
-                    	    }
-                    	    else {
-                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
-                    	        recover(mse);
-                    	        throw mse;}
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop11;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:44: ( '\"' )?
-                    int alt12=2;
-                    int LA12_0 = input.LA(1);
-
-                    if ( (LA12_0=='\"') ) {
-                        alt12=1;
-                    }
-                    switch (alt12) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:44: '\"'
-                            {
-                            match('\"'); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
-                    {
-                    match('\''); 
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
-                    loop13:
-                    do {
-                        int alt13=3;
-                        int LA13_0 = input.LA(1);
-
-                        if ( (LA13_0=='\\') ) {
-                            alt13=1;
-                        }
-                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
-                            alt13=2;
-                        }
-
-
-                        switch (alt13) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:55: '\\\\' .
-                    	    {
-                    	    match('\\'); 
-                    	    matchAny(); 
-
-                    	    }
-                    	    break;
-                    	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:62: ~ ( ( '\\\\' | '\\'' ) )
-                    	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
-                    	        input.consume();
-
-                    	    }
-                    	    else {
-                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
-                    	        recover(mse);
-                    	        throw mse;}
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop13;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:79: ( '\\'' )?
-                    int alt14=2;
-                    int LA14_0 = input.LA(1);
-
-                    if ( (LA14_0=='\'') ) {
-                        alt14=1;
-                    }
-                    switch (alt14) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36058:79: '\\''
-                            {
-                            match('\''); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_STRING"
-
-    // $ANTLR start "RULE_ML_COMMENT"
-    public final void mRULE_ML_COMMENT() throws RecognitionException {
-        try {
-            int _type = RULE_ML_COMMENT;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36060:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36060:19: '/*' ( options {greedy=false; } : . )* '*/'
-            {
-            match("/*"); 
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36060:24: ( options {greedy=false; } : . )*
-            loop16:
-            do {
-                int alt16=2;
-                int LA16_0 = input.LA(1);
-
-                if ( (LA16_0=='*') ) {
-                    int LA16_1 = input.LA(2);
-
-                    if ( (LA16_1=='/') ) {
-                        alt16=2;
-                    }
-                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
-                        alt16=1;
-                    }
-
-
-                }
-                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
-                    alt16=1;
-                }
-
-
-                switch (alt16) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36060:52: .
-            	    {
-            	    matchAny(); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop16;
-                }
-            } while (true);
-
-            match("*/"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_ML_COMMENT"
-
-    // $ANTLR start "RULE_SL_COMMENT"
-    public final void mRULE_SL_COMMENT() throws RecognitionException {
-        try {
-            int _type = RULE_SL_COMMENT;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
-            {
-            match("//"); 
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:24: (~ ( ( '\\n' | '\\r' ) ) )*
-            loop17:
-            do {
-                int alt17=2;
-                int LA17_0 = input.LA(1);
-
-                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
-                    alt17=1;
-                }
-
-
-                switch (alt17) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:24: ~ ( ( '\\n' | '\\r' ) )
-            	    {
-            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop17;
-                }
-            } while (true);
-
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:40: ( ( '\\r' )? '\\n' )?
-            int alt19=2;
-            int LA19_0 = input.LA(1);
-
-            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
-                alt19=1;
-            }
-            switch (alt19) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:41: ( '\\r' )? '\\n'
-                    {
-                    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:41: ( '\\r' )?
-                    int alt18=2;
-                    int LA18_0 = input.LA(1);
-
-                    if ( (LA18_0=='\r') ) {
-                        alt18=1;
-                    }
-                    switch (alt18) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36062:41: '\\r'
-                            {
-                            match('\r'); 
-
-                            }
-                            break;
-
-                    }
-
-                    match('\n'); 
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_SL_COMMENT"
-
-    // $ANTLR start "RULE_WS"
-    public final void mRULE_WS() throws RecognitionException {
-        try {
-            int _type = RULE_WS;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36064:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36064:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
-            {
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36064:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
-            int cnt20=0;
-            loop20:
-            do {
-                int alt20=2;
-                int LA20_0 = input.LA(1);
-
-                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
-                    alt20=1;
-                }
-
-
-                switch (alt20) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:
-            	    {
-            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt20 >= 1 ) break loop20;
-                        EarlyExitException eee =
-                            new EarlyExitException(20, input);
-                        throw eee;
-                }
-                cnt20++;
-            } while (true);
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_WS"
-
-    // $ANTLR start "RULE_ANY_OTHER"
-    public final void mRULE_ANY_OTHER() throws RecognitionException {
-        try {
-            int _type = RULE_ANY_OTHER;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36066:16: ( . )
-            // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:36066:18: .
-            {
-            matchAny(); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "RULE_ANY_OTHER"
-
-    public void mTokens() throws RecognitionException {
-        // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=153;
-        alt21 = dfa21.predict(input);
-        switch (alt21) {
-            case 1 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:10: T__13
-                {
-                mT__13(); 
-
-                }
-                break;
-            case 2 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:16: T__14
-                {
-                mT__14(); 
-
-                }
-                break;
-            case 3 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:22: T__15
-                {
-                mT__15(); 
-
-                }
-                break;
-            case 4 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:28: T__16
-                {
-                mT__16(); 
-
-                }
-                break;
-            case 5 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:34: T__17
-                {
-                mT__17(); 
-
-                }
-                break;
-            case 6 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:40: T__18
-                {
-                mT__18(); 
-
-                }
-                break;
-            case 7 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:46: T__19
-                {
-                mT__19(); 
-
-                }
-                break;
-            case 8 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:52: T__20
-                {
-                mT__20(); 
-
-                }
-                break;
-            case 9 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:58: T__21
-                {
-                mT__21(); 
-
-                }
-                break;
-            case 10 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:64: T__22
-                {
-                mT__22(); 
-
-                }
-                break;
-            case 11 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:70: T__23
-                {
-                mT__23(); 
-
-                }
-                break;
-            case 12 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:76: T__24
-                {
-                mT__24(); 
-
-                }
-                break;
-            case 13 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:82: T__25
-                {
-                mT__25(); 
-
-                }
-                break;
-            case 14 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:88: T__26
-                {
-                mT__26(); 
-
-                }
-                break;
-            case 15 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:94: T__27
-                {
-                mT__27(); 
-
-                }
-                break;
-            case 16 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:100: T__28
-                {
-                mT__28(); 
-
-                }
-                break;
-            case 17 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:106: T__29
-                {
-                mT__29(); 
-
-                }
-                break;
-            case 18 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:112: T__30
-                {
-                mT__30(); 
-
-                }
-                break;
-            case 19 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:118: T__31
-                {
-                mT__31(); 
-
-                }
-                break;
-            case 20 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:124: T__32
-                {
-                mT__32(); 
-
-                }
-                break;
-            case 21 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:130: T__33
-                {
-                mT__33(); 
-
-                }
-                break;
-            case 22 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:136: T__34
-                {
-                mT__34(); 
-
-                }
-                break;
-            case 23 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:142: T__35
-                {
-                mT__35(); 
-
-                }
-                break;
-            case 24 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:148: T__36
-                {
-                mT__36(); 
-
-                }
-                break;
-            case 25 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:154: T__37
-                {
-                mT__37(); 
-
-                }
-                break;
-            case 26 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:160: T__38
-                {
-                mT__38(); 
-
-                }
-                break;
-            case 27 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:166: T__39
-                {
-                mT__39(); 
-
-                }
-                break;
-            case 28 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:172: T__40
-                {
-                mT__40(); 
-
-                }
-                break;
-            case 29 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:178: T__41
-                {
-                mT__41(); 
-
-                }
-                break;
-            case 30 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:184: T__42
-                {
-                mT__42(); 
-
-                }
-                break;
-            case 31 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:190: T__43
-                {
-                mT__43(); 
-
-                }
-                break;
-            case 32 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:196: T__44
-                {
-                mT__44(); 
-
-                }
-                break;
-            case 33 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:202: T__45
-                {
-                mT__45(); 
-
-                }
-                break;
-            case 34 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:208: T__46
-                {
-                mT__46(); 
-
-                }
-                break;
-            case 35 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:214: T__47
-                {
-                mT__47(); 
-
-                }
-                break;
-            case 36 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:220: T__48
-                {
-                mT__48(); 
-
-                }
-                break;
-            case 37 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:226: T__49
-                {
-                mT__49(); 
-
-                }
-                break;
-            case 38 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:232: T__50
-                {
-                mT__50(); 
-
-                }
-                break;
-            case 39 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:238: T__51
-                {
-                mT__51(); 
-
-                }
-                break;
-            case 40 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:244: T__52
-                {
-                mT__52(); 
-
-                }
-                break;
-            case 41 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:250: T__53
-                {
-                mT__53(); 
-
-                }
-                break;
-            case 42 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:256: T__54
-                {
-                mT__54(); 
-
-                }
-                break;
-            case 43 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:262: T__55
-                {
-                mT__55(); 
-
-                }
-                break;
-            case 44 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:268: T__56
-                {
-                mT__56(); 
-
-                }
-                break;
-            case 45 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:274: T__57
-                {
-                mT__57(); 
-
-                }
-                break;
-            case 46 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:280: T__58
-                {
-                mT__58(); 
-
-                }
-                break;
-            case 47 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:286: T__59
-                {
-                mT__59(); 
-
-                }
-                break;
-            case 48 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:292: T__60
-                {
-                mT__60(); 
-
-                }
-                break;
-            case 49 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:298: T__61
-                {
-                mT__61(); 
-
-                }
-                break;
-            case 50 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:304: T__62
-                {
-                mT__62(); 
-
-                }
-                break;
-            case 51 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:310: T__63
-                {
-                mT__63(); 
-
-                }
-                break;
-            case 52 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:316: T__64
-                {
-                mT__64(); 
-
-                }
-                break;
-            case 53 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:322: T__65
-                {
-                mT__65(); 
-
-                }
-                break;
-            case 54 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:328: T__66
-                {
-                mT__66(); 
-
-                }
-                break;
-            case 55 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:334: T__67
-                {
-                mT__67(); 
-
-                }
-                break;
-            case 56 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:340: T__68
-                {
-                mT__68(); 
-
-                }
-                break;
-            case 57 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:346: T__69
-                {
-                mT__69(); 
-
-                }
-                break;
-            case 58 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:352: T__70
-                {
-                mT__70(); 
-
-                }
-                break;
-            case 59 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:358: T__71
-                {
-                mT__71(); 
-
-                }
-                break;
-            case 60 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:364: T__72
-                {
-                mT__72(); 
-
-                }
-                break;
-            case 61 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:370: T__73
-                {
-                mT__73(); 
-
-                }
-                break;
-            case 62 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:376: T__74
-                {
-                mT__74(); 
-
-                }
-                break;
-            case 63 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:382: T__75
-                {
-                mT__75(); 
-
-                }
-                break;
-            case 64 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:388: T__76
-                {
-                mT__76(); 
-
-                }
-                break;
-            case 65 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:394: T__77
-                {
-                mT__77(); 
-
-                }
-                break;
-            case 66 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:400: T__78
-                {
-                mT__78(); 
-
-                }
-                break;
-            case 67 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:406: T__79
-                {
-                mT__79(); 
-
-                }
-                break;
-            case 68 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:412: T__80
-                {
-                mT__80(); 
-
-                }
-                break;
-            case 69 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:418: T__81
-                {
-                mT__81(); 
-
-                }
-                break;
-            case 70 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:424: T__82
-                {
-                mT__82(); 
-
-                }
-                break;
-            case 71 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:430: T__83
-                {
-                mT__83(); 
-
-                }
-                break;
-            case 72 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:436: T__84
-                {
-                mT__84(); 
-
-                }
-                break;
-            case 73 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:442: T__85
-                {
-                mT__85(); 
-
-                }
-                break;
-            case 74 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:448: T__86
-                {
-                mT__86(); 
-
-                }
-                break;
-            case 75 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:454: T__87
-                {
-                mT__87(); 
-
-                }
-                break;
-            case 76 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:460: T__88
-                {
-                mT__88(); 
-
-                }
-                break;
-            case 77 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:466: T__89
-                {
-                mT__89(); 
-
-                }
-                break;
-            case 78 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:472: T__90
-                {
-                mT__90(); 
-
-                }
-                break;
-            case 79 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:478: T__91
-                {
-                mT__91(); 
-
-                }
-                break;
-            case 80 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:484: T__92
-                {
-                mT__92(); 
-
-                }
-                break;
-            case 81 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:490: T__93
-                {
-                mT__93(); 
-
-                }
-                break;
-            case 82 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:496: T__94
-                {
-                mT__94(); 
-
-                }
-                break;
-            case 83 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:502: T__95
-                {
-                mT__95(); 
-
-                }
-                break;
-            case 84 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:508: T__96
-                {
-                mT__96(); 
-
-                }
-                break;
-            case 85 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:514: T__97
-                {
-                mT__97(); 
-
-                }
-                break;
-            case 86 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:520: T__98
-                {
-                mT__98(); 
-
-                }
-                break;
-            case 87 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:526: T__99
-                {
-                mT__99(); 
-
-                }
-                break;
-            case 88 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:532: T__100
-                {
-                mT__100(); 
-
-                }
-                break;
-            case 89 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:539: T__101
-                {
-                mT__101(); 
-
-                }
-                break;
-            case 90 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:546: T__102
-                {
-                mT__102(); 
-
-                }
-                break;
-            case 91 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:553: T__103
-                {
-                mT__103(); 
-
-                }
-                break;
-            case 92 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:560: T__104
-                {
-                mT__104(); 
-
-                }
-                break;
-            case 93 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:567: T__105
-                {
-                mT__105(); 
-
-                }
-                break;
-            case 94 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:574: T__106
-                {
-                mT__106(); 
-
-                }
-                break;
-            case 95 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:581: T__107
-                {
-                mT__107(); 
-
-                }
-                break;
-            case 96 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:588: T__108
-                {
-                mT__108(); 
-
-                }
-                break;
-            case 97 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:595: T__109
-                {
-                mT__109(); 
-
-                }
-                break;
-            case 98 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:602: T__110
-                {
-                mT__110(); 
-
-                }
-                break;
-            case 99 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:609: T__111
-                {
-                mT__111(); 
-
-                }
-                break;
-            case 100 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:616: T__112
-                {
-                mT__112(); 
-
-                }
-                break;
-            case 101 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:623: T__113
-                {
-                mT__113(); 
-
-                }
-                break;
-            case 102 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:630: T__114
-                {
-                mT__114(); 
-
-                }
-                break;
-            case 103 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:637: T__115
-                {
-                mT__115(); 
-
-                }
-                break;
-            case 104 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:644: T__116
-                {
-                mT__116(); 
-
-                }
-                break;
-            case 105 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:651: T__117
-                {
-                mT__117(); 
-
-                }
-                break;
-            case 106 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:658: T__118
-                {
-                mT__118(); 
-
-                }
-                break;
-            case 107 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:665: T__119
-                {
-                mT__119(); 
-
-                }
-                break;
-            case 108 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:672: T__120
-                {
-                mT__120(); 
-
-                }
-                break;
-            case 109 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:679: T__121
-                {
-                mT__121(); 
-
-                }
-                break;
-            case 110 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:686: T__122
-                {
-                mT__122(); 
-
-                }
-                break;
-            case 111 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:693: T__123
-                {
-                mT__123(); 
-
-                }
-                break;
-            case 112 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:700: T__124
-                {
-                mT__124(); 
-
-                }
-                break;
-            case 113 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:707: T__125
-                {
-                mT__125(); 
-
-                }
-                break;
-            case 114 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:714: T__126
-                {
-                mT__126(); 
-
-                }
-                break;
-            case 115 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:721: T__127
-                {
-                mT__127(); 
-
-                }
-                break;
-            case 116 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:728: T__128
-                {
-                mT__128(); 
-
-                }
-                break;
-            case 117 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:735: T__129
-                {
-                mT__129(); 
-
-                }
-                break;
-            case 118 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:742: T__130
-                {
-                mT__130(); 
-
-                }
-                break;
-            case 119 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:749: T__131
-                {
-                mT__131(); 
-
-                }
-                break;
-            case 120 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:756: T__132
-                {
-                mT__132(); 
-
-                }
-                break;
-            case 121 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:763: T__133
-                {
-                mT__133(); 
-
-                }
-                break;
-            case 122 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:770: T__134
-                {
-                mT__134(); 
-
-                }
-                break;
-            case 123 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:777: T__135
-                {
-                mT__135(); 
-
-                }
-                break;
-            case 124 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:784: T__136
-                {
-                mT__136(); 
-
-                }
-                break;
-            case 125 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:791: T__137
-                {
-                mT__137(); 
-
-                }
-                break;
-            case 126 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:798: T__138
-                {
-                mT__138(); 
-
-                }
-                break;
-            case 127 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:805: T__139
-                {
-                mT__139(); 
-
-                }
-                break;
-            case 128 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:812: T__140
-                {
-                mT__140(); 
-
-                }
-                break;
-            case 129 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:819: T__141
-                {
-                mT__141(); 
-
-                }
-                break;
-            case 130 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:826: T__142
-                {
-                mT__142(); 
-
-                }
-                break;
-            case 131 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:833: T__143
-                {
-                mT__143(); 
-
-                }
-                break;
-            case 132 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:840: T__144
-                {
-                mT__144(); 
-
-                }
-                break;
-            case 133 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:847: T__145
-                {
-                mT__145(); 
-
-                }
-                break;
-            case 134 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:854: T__146
-                {
-                mT__146(); 
-
-                }
-                break;
-            case 135 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:861: T__147
-                {
-                mT__147(); 
-
-                }
-                break;
-            case 136 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:868: T__148
-                {
-                mT__148(); 
-
-                }
-                break;
-            case 137 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:875: T__149
-                {
-                mT__149(); 
-
-                }
-                break;
-            case 138 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:882: T__150
-                {
-                mT__150(); 
-
-                }
-                break;
-            case 139 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:889: T__151
-                {
-                mT__151(); 
-
-                }
-                break;
-            case 140 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:896: T__152
-                {
-                mT__152(); 
-
-                }
-                break;
-            case 141 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:903: T__153
-                {
-                mT__153(); 
-
-                }
-                break;
-            case 142 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:910: T__154
-                {
-                mT__154(); 
-
-                }
-                break;
-            case 143 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:917: T__155
-                {
-                mT__155(); 
-
-                }
-                break;
-            case 144 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:924: T__156
-                {
-                mT__156(); 
-
-                }
-                break;
-            case 145 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:931: RULE_ID
-                {
-                mRULE_ID(); 
-
-                }
-                break;
-            case 146 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:939: RULE_HEX
-                {
-                mRULE_HEX(); 
-
-                }
-                break;
-            case 147 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:948: RULE_INT
-                {
-                mRULE_INT(); 
-
-                }
-                break;
-            case 148 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:957: RULE_DECIMAL
-                {
-                mRULE_DECIMAL(); 
-
-                }
-                break;
-            case 149 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:970: RULE_STRING
-                {
-                mRULE_STRING(); 
-
-                }
-                break;
-            case 150 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:982: RULE_ML_COMMENT
-                {
-                mRULE_ML_COMMENT(); 
-
-                }
-                break;
-            case 151 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:998: RULE_SL_COMMENT
-                {
-                mRULE_SL_COMMENT(); 
-
-                }
-                break;
-            case 152 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:1014: RULE_WS
-                {
-                mRULE_WS(); 
-
-                }
-                break;
-            case 153 :
-                // ../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g:1:1022: RULE_ANY_OTHER
-                {
-                mRULE_ANY_OTHER(); 
-
-                }
-                break;
-
-        }
-
-    }
-
-
-    protected DFA21 dfa21 = new DFA21(this);
-    static final String DFA21_eotS =
-        "\1\uffff\1\65\1\67\1\71\1\76\1\101\1\105\1\110\1\114\1\116\1\120"+
-        "\1\122\1\124\1\126\1\131\10\76\2\uffff\2\76\3\uffff\6\76\5\uffff"+
-        "\1\u0095\1\76\1\62\1\uffff\2\u009a\4\uffff\1\u009f\6\uffff\4\76"+
-        "\21\uffff\1\u00a6\5\uffff\1\u00a8\4\uffff\12\76\1\u00b6\7\76\1\u00c0"+
-        "\6\76\2\uffff\5\76\1\u00d2\3\uffff\15\76\1\u00e7\3\76\7\uffff\2"+
-        "\76\1\uffff\1\u009a\6\uffff\5\76\4\uffff\1\u00f3\1\u00f4\13\76\1"+
-        "\uffff\3\76\1\u0105\5\76\1\uffff\13\76\1\u0118\5\76\1\uffff\2\76"+
-        "\1\uffff\11\76\1\uffff\7\76\1\uffff\2\76\1\u0135\1\76\1\u0137\5"+
-        "\76\1\u013d\2\uffff\1\76\1\u013f\15\76\2\uffff\1\76\1\u014e\6\76"+
-        "\1\u0156\1\u0157\6\76\1\uffff\1\76\1\uffff\3\76\1\u0163\3\76\3\uffff"+
-        "\3\76\1\u016a\16\76\1\uffff\1\u0179\1\uffff\1\u017a\2\76\1\u017e"+
-        "\1\u017f\1\uffff\1\76\1\uffff\1\u0181\5\76\1\u0187\3\76\1\u018b"+
-        "\1\uffff\2\76\1\uffff\2\76\1\uffff\3\76\1\u0195\2\uffff\1\u0196"+
-        "\1\u0197\1\76\1\uffff\1\76\1\u019b\5\76\1\uffff\6\76\1\uffff\1\u01a7"+
-        "\1\76\1\uffff\3\76\1\u01ac\1\u01ad\1\uffff\1\76\1\u01af\2\76\1\u01b2"+
-        "\2\uffff\3\76\2\uffff\1\u01b6\1\uffff\1\u01b8\3\76\1\u01bc\1\uffff"+
-        "\3\76\1\uffff\4\76\2\uffff\3\76\3\uffff\1\u01c7\1\uffff\1\76\1\uffff"+
-        "\2\76\1\u01cc\1\76\1\uffff\1\76\1\u01d0\1\76\1\uffff\2\76\1\uffff"+
-        "\4\76\2\uffff\1\76\1\uffff\1\76\1\u01da\1\uffff\1\76\1\u01dc\1\76"+
-        "\4\uffff\2\76\1\uffff\1\u01e2\2\76\1\uffff\1\u01e5\3\76\1\u01e9"+
-        "\1\76\2\uffff\1\u01ec\2\76\1\uffff\2\76\1\u01f1\1\uffff\1\76\1\u01f3"+
-        "\3\76\1\u01f7\3\76\1\uffff\1\76\1\uffff\1\76\2\uffff\2\76\2\uffff"+
-        "\1\76\1\uffff\1\76\1\u0204\2\uffff\1\u0205\2\uffff\1\76\1\u0209"+
-        "\2\76\1\uffff\1\76\1\uffff\3\76\1\uffff\2\76\1\u0212\1\uffff\1\u0213"+
-        "\2\uffff\1\u0216\3\76\1\u021a\3\uffff\1\u021c\1\u021d\1\uffff\1"+
-        "\u021e\1\76\1\uffff\2\76\1\u0222\1\uffff\1\u0225\5\uffff\1\76\1"+
-        "\u0229\1\76\5\uffff\1\u022d\1\uffff\1\76\6\uffff\1\76\1\uffff\1"+
-        "\76\5\uffff\1\76\4\uffff\1\u023c\2\76\5\uffff\2\76\4\uffff\2\76"+
-        "\5\uffff\2\76\4\uffff\1\u0255\1\uffff\1\76\3\uffff\1\u025a\6\uffff";
-    static final String DFA21_eofS =
-        "\u025d\uffff";
-    static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\1\154\1\53\1\55\2\52\3\75\1\76\2\56\1\141"+
-        "\1\145\1\146\2\141\1\145\1\157\1\145\2\uffff\1\141\1\163\3\uffff"+
-        "\1\142\3\141\1\156\1\145\5\uffff\1\72\1\145\1\44\1\uffff\2\60\4"+
-        "\uffff\1\75\6\uffff\1\151\1\142\1\145\1\163\21\uffff\1\75\5\uffff"+
-        "\1\74\4\uffff\1\154\1\141\1\160\1\151\1\147\2\156\1\160\1\145\1"+
-        "\163\1\44\1\154\1\157\1\164\1\162\1\156\1\164\1\143\1\44\1\145\1"+
-        "\164\1\145\1\162\1\143\1\141\2\uffff\1\156\1\146\1\156\1\165\1\164"+
-        "\1\44\3\uffff\1\152\1\164\1\40\1\163\1\157\1\154\1\145\2\162\1\40"+
-        "\1\163\1\151\1\155\1\44\1\160\1\162\1\165\7\uffff\1\167\1\154\1"+
-        "\uffff\1\60\6\uffff\1\163\2\145\1\162\1\145\4\uffff\2\44\1\164\1"+
-        "\160\1\145\1\164\1\156\1\164\1\143\1\157\1\155\1\145\1\164\1\uffff"+
-        "\1\163\1\155\1\165\1\40\1\141\1\163\2\141\1\151\1\uffff\1\153\1"+
-        "\150\1\156\1\154\1\144\1\164\1\153\1\162\1\164\1\40\1\157\1\44\1"+
-        "\165\1\144\1\156\1\163\1\162\1\uffff\1\145\1\151\2\145\1\154\1\143"+
-        "\1\145\1\143\1\141\1\164\1\141\1\143\1\uffff\2\151\1\156\1\164\1"+
-        "\160\1\141\1\157\1\uffff\1\145\1\157\1\44\1\145\1\44\1\154\1\164"+
-        "\1\156\1\144\1\171\1\44\2\uffff\1\151\1\44\1\162\1\143\2\145\1\150"+
-        "\1\162\1\163\1\141\1\147\1\141\1\145\1\40\1\162\2\uffff\1\154\1"+
-        "\44\1\151\1\40\1\156\1\165\1\155\1\163\2\44\1\145\1\163\1\150\1"+
-        "\40\1\163\1\145\1\uffff\1\165\1\uffff\1\162\1\157\1\144\1\44\1\151"+
-        "\1\143\1\157\3\uffff\1\144\1\145\1\165\1\44\1\150\1\164\1\40\1\147"+
-        "\1\145\1\147\1\154\1\147\1\40\1\157\1\171\1\162\1\157\1\167\1\uffff"+
-        "\1\44\1\uffff\1\44\1\151\1\144\2\44\1\uffff\1\143\1\uffff\1\44\1"+
-        "\150\1\144\1\156\1\162\1\164\1\44\1\164\1\145\1\156\1\44\1\uffff"+
-        "\1\145\1\154\1\uffff\1\156\1\171\1\146\1\145\1\154\1\141\1\44\2"+
-        "\uffff\2\44\1\163\1\145\1\156\1\44\2\162\1\156\1\155\1\40\1\uffff"+
-        "\1\142\1\164\1\156\1\40\1\141\1\154\1\uffff\1\44\1\145\1\uffff\1"+
-        "\162\2\156\2\44\1\uffff\1\162\1\44\1\162\1\146\1\44\2\uffff\1\156"+
-        "\1\163\1\151\2\uffff\1\44\1\uffff\2\40\1\143\1\157\1\44\1\uffff"+
-        "\1\145\1\162\1\143\1\uffff\1\40\1\171\1\164\1\160\2\uffff\1\144"+
-        "\1\164\1\154\3\uffff\1\44\1\156\1\147\1\uffff\1\144\1\143\1\44\1"+
-        "\151\1\uffff\1\165\1\44\1\141\1\uffff\1\156\1\141\1\uffff\1\102"+
-        "\1\141\1\164\1\145\2\uffff\1\141\1\uffff\1\157\1\44\1\uffff\1\147"+
-        "\1\44\1\157\3\uffff\1\144\1\145\1\156\1\uffff\1\44\1\40\1\145\1"+
-        "\uffff\1\44\2\145\1\40\1\44\1\163\1\uffff\1\164\1\44\1\141\1\145"+
-        "\1\uffff\1\172\1\164\1\44\1\uffff\1\154\1\44\1\164\1\154\1\160\1"+
-        "\44\1\144\1\162\1\167\1\uffff\1\40\1\uffff\1\156\1\157\1\156\1\163"+
-        "\1\151\2\uffff\1\157\1\uffff\1\162\1\44\2\uffff\1\44\1\151\1\uffff"+
-        "\1\171\1\44\2\145\1\uffff\1\40\1\uffff\1\145\1\157\1\163\1\uffff"+
-        "\1\40\1\171\1\44\1\uffff\1\44\1\165\1\164\1\44\1\172\1\146\1\143"+
-        "\1\44\2\uffff\1\164\2\44\1\uffff\1\44\1\163\1\uffff\1\40\1\142\1"+
-        "\44\1\144\1\44\2\uffff\1\142\1\145\1\uffff\1\145\1\44\1\150\1\uffff"+
-        "\1\151\3\uffff\1\44\1\141\1\115\1\uffff\1\157\1\156\1\uffff\1\154"+
-        "\1\147\1\144\1\uffff\1\141\5\uffff\1\141\1\165\1\164\2\145\1\44"+
-        "\1\156\1\160\1\142\1\145\1\40\1\162\1\uffff\1\147\1\160\1\154\1"+
-        "\147\1\146\1\40\1\145\1\151\2\145\2\uffff\1\146\1\40\1\156\1\40"+
-        "\1\162\2\uffff\1\44\1\uffff\1\147\1\146\1\40\1\uffff\1\44\2\uffff"+
-        "\1\146\3\uffff";
-    static final String DFA21_maxS =
-        "\1\uffff\1\76\1\174\1\46\1\170\1\75\1\76\5\75\1\76\1\56\1\72\1"+
-        "\141\1\171\1\164\1\165\3\157\1\145\2\uffff\1\165\1\164\3\uffff\1"+
-        "\160\1\171\1\162\1\145\1\163\1\171\5\uffff\1\72\1\165\1\172\1\uffff"+
-        "\1\170\1\154\4\uffff\1\75\6\uffff\1\164\1\142\1\145\1\163\21\uffff"+
-        "\1\75\5\uffff\1\74\4\uffff\1\162\1\145\1\160\1\151\1\147\2\156\1"+
-        "\160\1\145\1\164\1\172\1\154\1\157\1\164\1\162\1\156\1\171\1\146"+
-        "\1\172\1\145\1\164\1\151\1\162\1\156\1\163\2\uffff\1\156\1\164\1"+
-        "\156\1\167\1\164\1\172\3\uffff\1\152\1\164\1\40\1\163\1\157\1\164"+
-        "\1\145\1\163\1\162\1\40\1\164\1\151\1\170\1\172\1\160\1\162\1\171"+
-        "\7\uffff\1\167\1\154\1\uffff\1\154\6\uffff\1\163\2\145\1\162\1\145"+
-        "\4\uffff\2\172\1\164\1\160\1\145\1\164\1\156\1\164\1\143\1\157\1"+
-        "\162\1\145\1\164\1\uffff\1\163\1\155\1\165\1\172\1\141\1\163\1\145"+
-        "\2\151\1\uffff\1\153\1\150\1\156\1\154\1\144\1\164\1\153\1\162\1"+
-        "\164\1\40\1\157\1\172\1\165\1\144\1\156\1\163\1\162\1\uffff\1\145"+
-        "\1\151\1\162\1\145\1\154\1\143\1\145\1\143\1\141\1\164\1\141\1\143"+
-        "\1\uffff\2\151\1\156\1\164\1\160\1\141\1\157\1\uffff\1\145\1\157"+
-        "\1\172\1\145\1\172\1\154\1\164\1\156\1\144\1\171\1\172\2\uffff\1"+
-        "\151\1\172\1\162\1\143\2\145\1\150\1\162\1\163\1\141\1\147\1\141"+
-        "\1\145\1\40\1\162\2\uffff\1\154\1\172\1\164\1\40\1\156\1\165\1\155"+
-        "\1\163\2\172\1\145\1\163\1\150\1\151\1\163\1\145\1\uffff\1\165\1"+
-        "\uffff\1\162\1\157\1\144\1\172\1\151\1\143\1\157\3\uffff\1\144\1"+
-        "\145\1\165\1\172\1\150\1\164\1\40\1\147\1\145\1\147\1\154\1\147"+
-        "\1\40\1\157\1\171\1\162\1\157\1\167\1\uffff\1\172\1\uffff\1\172"+
-        "\1\151\1\163\2\172\1\uffff\1\143\1\uffff\1\172\1\150\1\144\1\156"+
-        "\1\162\1\164\1\172\1\164\1\145\1\156\1\172\1\uffff\1\145\1\154\1"+
-        "\uffff\1\156\1\171\1\151\1\145\1\154\1\141\1\172\2\uffff\2\172\1"+
-        "\163\1\145\1\156\1\172\2\162\1\156\1\155\1\40\1\uffff\1\142\1\164"+
-        "\1\156\1\40\1\141\1\154\1\uffff\1\172\1\145\1\uffff\1\162\2\156"+
-        "\2\172\1\uffff\1\162\1\172\1\162\1\146\1\172\2\uffff\1\156\1\163"+
-        "\1\151\2\uffff\1\172\1\uffff\1\172\1\40\1\143\1\157\1\172\1\uffff"+
-        "\1\145\1\162\1\143\1\uffff\1\40\1\171\1\164\1\160\2\uffff\1\144"+
-        "\1\164\1\154\3\uffff\1\172\1\156\1\147\1\uffff\1\144\1\143\1\172"+
-        "\1\151\1\uffff\1\165\1\172\1\141\1\uffff\1\156\1\141\1\uffff\1\102"+
-        "\1\141\1\164\1\145\2\uffff\1\141\1\uffff\1\157\1\172\1\uffff\1\147"+
-        "\1\172\1\157\3\uffff\1\151\1\145\1\156\1\uffff\1\172\1\40\1\145"+
-        "\1\uffff\1\172\2\145\1\40\1\172\1\163\1\uffff\1\164\1\172\1\141"+
-        "\1\145\1\uffff\1\172\1\164\1\172\1\uffff\1\154\1\172\1\164\1\154"+
-        "\1\160\1\172\1\144\1\162\1\167\1\uffff\1\40\1\uffff\1\156\1\157"+
-        "\1\156\1\163\1\151\2\uffff\1\157\1\uffff\1\162\1\172\2\uffff\1\172"+
-        "\1\151\1\uffff\1\171\1\172\2\145\1\uffff\1\40\1\uffff\1\145\1\157"+
-        "\1\163\1\uffff\1\40\1\171\1\172\1\uffff\1\172\1\165\1\164\2\172"+
-        "\1\146\1\143\1\172\2\uffff\1\164\2\172\1\uffff\1\172\1\163\1\uffff"+
-        "\1\40\1\142\1\172\1\151\1\172\2\uffff\1\142\1\145\1\uffff\1\145"+
-        "\1\172\1\150\1\uffff\1\171\3\uffff\1\172\1\142\1\115\1\uffff\1\157"+
-        "\1\156\1\uffff\1\154\1\147\1\144\1\uffff\1\141\5\uffff\1\141\1\165"+
-        "\1\164\2\145\1\172\1\156\1\160\1\142\1\145\1\40\1\162\1\uffff\1"+
-        "\147\1\160\1\154\1\147\1\151\1\40\1\145\1\151\2\145\2\uffff\1\151"+
-        "\1\163\1\156\1\40\1\162\2\uffff\1\172\1\uffff\1\147\1\151\1\40\1"+
-        "\uffff\1\172\2\uffff\1\151\3\uffff";
-    static final String DFA21_acceptS =
-        "\27\uffff\1\55\1\56\2\uffff\1\67\1\70\1\71\6\uffff\1\157\1\160"+
-        "\1\161\1\162\1\164\3\uffff\1\u0091\2\uffff\2\u0095\1\u0098\1\u0099"+
-        "\1\uffff\1\24\1\1\1\2\1\u008f\1\3\1\u0088\4\uffff\1\u0091\1\5\1"+
-        "\36\1\27\1\6\1\21\1\37\1\30\1\7\1\32\1\31\1\10\1\u0096\1\u0097\1"+
-        "\33\1\11\1\34\1\uffff\1\35\1\16\1\17\1\25\1\20\1\uffff\1\40\1\26"+
-        "\1\u008e\1\u0087\31\uffff\1\55\1\56\6\uffff\1\67\1\70\1\71\21\uffff"+
-        "\1\157\1\160\1\161\1\162\1\164\1\u008d\1\170\2\uffff\1\u0092\1\uffff"+
-        "\1\u0093\1\u0094\1\u0095\1\u0098\1\14\1\12\5\uffff\1\15\1\13\1\22"+
-        "\1\23\15\uffff\1\165\11\uffff\1\175\21\uffff\1\147\14\uffff\1\113"+
-        "\7\uffff\1\137\13\uffff\1\41\1\74\17\uffff\1\135\1\173\20\uffff"+
-        "\1\57\1\uffff\1\154\7\uffff\1\75\1\140\1\151\22\uffff\1\u0083\1"+
-        "\uffff\1\176\5\uffff\1\166\1\uffff\1\144\13\uffff\1\62\2\uffff\1"+
-        "\50\7\uffff\1\77\1\101\13\uffff\1\136\6\uffff\1\172\2\uffff\1\110"+
-        "\5\uffff\1\122\5\uffff\1\u0090\1\177\3\uffff\1\102\1\146\1\uffff"+
-        "\1\46\5\uffff\1\65\3\uffff\1\47\4\uffff\1\112\1\145\3\uffff\1\51"+
-        "\1\174\1\125\3\uffff\1\53\4\uffff\1\116\3\uffff\1\105\2\uffff\1"+
-        "\u0086\4\uffff\1\143\1\153\1\uffff\1\u008b\2\uffff\1\u0081\3\uffff"+
-        "\1\43\1\100\1\167\3\uffff\1\44\3\uffff\1\107\6\uffff\1\52\4\uffff"+
-        "\1\u0082\3\uffff\1\73\11\uffff\1\u0080\1\uffff\1\42\5\uffff\1\141"+
-        "\1\142\1\uffff\1\u0084\2\uffff\1\103\1\171\2\uffff\1\134\4\uffff"+
-        "\1\72\1\uffff\1\111\3\uffff\1\156\3\uffff\1\4\10\uffff\1\132\1\115"+
-        "\3\uffff\1\64\2\uffff\1\155\5\uffff\1\u008c\1\45\2\uffff\1\124\3"+
-        "\uffff\1\76\1\uffff\1\u008a\1\63\1\106\3\uffff\1\123\2\uffff\1\150"+
-        "\3\uffff\1\163\1\uffff\1\54\1\133\1\66\1\104\1\152\14\uffff\1\u0085"+
-        "\12\uffff\1\114\1\117\5\uffff\1\120\1\121\1\uffff\1\61\3\uffff\1"+
-        "\60\1\uffff\1\126\1\127\1\uffff\1\u0089\1\130\1\131";
-    static final String DFA21_specialS =
-        "\1\0\u025c\uffff}>";
-    static final String[] DFA21_transitionS = {
-            "\11\62\2\61\2\62\1\61\22\62\1\61\1\12\1\57\1\46\1\54\1\11\1"+
-            "\3\1\60\1\33\1\34\1\7\1\5\1\35\1\6\1\15\1\10\1\55\11\56\1\51"+
-            "\1\50\1\14\1\1\1\13\1\16\1\44\32\54\1\47\1\62\1\45\1\53\1\54"+
-            "\1\62\1\32\1\37\1\40\1\23\1\4\1\22\2\54\1\21\3\54\1\25\1\52"+
-            "\1\36\1\41\1\54\1\31\1\20\1\43\1\42\1\17\1\24\1\54\1\26\1\54"+
-            "\1\27\1\2\1\30\uff82\62",
-            "\1\63\1\64",
-            "\1\66",
-            "\1\70",
-            "\1\75\1\73\10\uffff\1\74\1\uffff\1\72",
-            "\1\100\21\uffff\1\77",
-            "\1\104\17\uffff\1\102\1\103",
-            "\1\107\22\uffff\1\106",
-            "\1\112\4\uffff\1\113\15\uffff\1\111",
-            "\1\115",
-            "\1\117",
-            "\1\121",
-            "\1\123",
-            "\1\125",
-            "\1\130\13\uffff\1\127",
-            "\1\132",
-            "\1\137\3\uffff\1\136\12\uffff\1\133\1\134\1\uffff\1\135\1"+
-            "\uffff\1\140",
-            "\1\144\6\uffff\1\141\1\143\5\uffff\1\142",
-            "\1\145\7\uffff\1\151\5\uffff\1\150\2\uffff\1\146\2\uffff\1"+
-            "\147",
-            "\1\152\3\uffff\1\153\11\uffff\1\154",
-            "\1\155\2\uffff\1\157\1\156\5\uffff\1\160",
-            "\1\161",
-            "\1\162",
-            "",
-            "",
-            "\1\167\3\uffff\1\166\11\uffff\1\170\5\uffff\1\165",
-            "\1\172\1\171",
-            "",
-            "",
-            "",
-            "\1\176\15\uffff\1\177",
-            "\1\u0081\15\uffff\1\u0082\11\uffff\1\u0080",
-            "\1\u0083\20\uffff\1\u0084",
-            "\1\u0085\3\uffff\1\u0086",
-            "\1\u0088\1\uffff\1\u0087\2\uffff\1\u0089",
-            "\1\u008a\2\uffff\1\u008d\6\uffff\1\u008b\2\uffff\1\u008e\6"+
-            "\uffff\1\u008c",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0094",
-            "\1\u0096\17\uffff\1\u0097",
-            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
-            "",
-            "\12\u0099\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b"+
-            "\13\uffff\1\u0098\6\uffff\1\u0099\2\uffff\1\u009b\1\uffff\3"+
-            "\u009b\5\uffff\1\u009b\13\uffff\1\u0098",
-            "\12\u0099\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b"+
-            "\22\uffff\1\u0099\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1"+
-            "\u009b",
-            "",
-            "",
-            "",
-            "",
-            "\1\u009e",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a0\12\uffff\1\u00a1",
-            "\1\u00a2",
-            "\1\u00a3",
-            "\1\u00a4",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a5",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a7",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a9\5\uffff\1\u00aa",
-            "\1\u00ab\3\uffff\1\u00ac",
-            "\1\u00ad",
-            "\1\u00ae",
-            "\1\u00af",
-            "\1\u00b0",
-            "\1\u00b1",
-            "\1\u00b2",
-            "\1\u00b3",
-            "\1\u00b5\1\u00b4",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u00b7",
-            "\1\u00b8",
-            "\1\u00b9",
-            "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bd\4\uffff\1\u00bc",
-            "\1\u00bf\2\uffff\1\u00be",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u00c1",
-            "\1\u00c2",
-            "\1\u00c3\3\uffff\1\u00c4",
-            "\1\u00c5",
-            "\1\u00c7\12\uffff\1\u00c6",
-            "\1\u00c8\21\uffff\1\u00c9",
-            "",
-            "",
-            "\1\u00ca",
-            "\1\u00cc\14\uffff\1\u00cb\1\u00cd",
-            "\1\u00ce",
-            "\1\u00cf\1\uffff\1\u00d0",
-            "\1\u00d1",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "",
-            "\1\u00d3",
-            "\1\u00d4",
-            "\1\u00d5",
-            "\1\u00d6",
-            "\1\u00d7",
-            "\1\u00d8\6\uffff\1\u00d9\1\u00da",
-            "\1\u00db",
-            "\1\u00dd\1\u00dc",
-            "\1\u00de",
-            "\1\u00df",
-            "\1\u00e0\1\u00e1",
-            "\1\u00e2",
-            "\1\u00e4\12\uffff\1\u00e3",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\3"+
-            "\76\1\u00e5\10\76\1\u00e6\15\76",
-            "\1\u00e8",
-            "\1\u00e9",
-            "\1\u00eb\3\uffff\1\u00ea",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00ec",
-            "\1\u00ed",
-            "",
-            "\12\u0099\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b"+
-            "\22\uffff\1\u0099\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1"+
-            "\u009b",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00ee",
-            "\1\u00ef",
-            "\1\u00f0",
-            "\1\u00f1",
-            "\1\u00f2",
-            "",
-            "",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u00f5",
-            "\1\u00f6",
-            "\1\u00f7",
-            "\1\u00f8",
-            "\1\u00f9",
-            "\1\u00fa",
-            "\1\u00fb",
-            "\1\u00fc",
-            "\1\u00fd\4\uffff\1\u00fe",
-            "\1\u00ff",
-            "\1\u0100",
-            "",
-            "\1\u0101",
-            "\1\u0102",
-            "\1\u0103",
-            "\1\u0104\3\uffff\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff"+
-            "\1\76\1\uffff\32\76",
-            "\1\u0106",
-            "\1\u0107",
-            "\1\u0108\3\uffff\1\u0109",
-            "\1\u010b\7\uffff\1\u010a",
-            "\1\u010c",
-            "",
-            "\1\u010d",
-            "\1\u010e",
-            "\1\u010f",
-            "\1\u0110",
-            "\1\u0111",
-            "\1\u0112",
-            "\1\u0113",
-            "\1\u0114",
-            "\1\u0115",
-            "\1\u0116",
-            "\1\u0117",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0119",
-            "\1\u011a",
-            "\1\u011b",
-            "\1\u011c",
-            "\1\u011d",
-            "",
-            "\1\u011e",
-            "\1\u011f",
-            "\1\u0120\11\uffff\1\u0122\2\uffff\1\u0121",
-            "\1\u0123",
-            "\1\u0124",
-            "\1\u0125",
-            "\1\u0126",
-            "\1\u0127",
-            "\1\u0128",
-            "\1\u0129",
-            "\1\u012a",
-            "\1\u012b",
-            "",
-            "\1\u012c",
-            "\1\u012d",
-            "\1\u012e",
-            "\1\u012f",
-            "\1\u0130",
-            "\1\u0131",
-            "\1\u0132",
-            "",
-            "\1\u0133",
-            "\1\u0134",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0136",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0138",
-            "\1\u0139",
-            "\1\u013a",
-            "\1\u013b",
-            "\1\u013c",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\u013e",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0140",
-            "\1\u0141",
-            "\1\u0142",
-            "\1\u0143",
-            "\1\u0144",
-            "\1\u0145",
-            "\1\u0146",
-            "\1\u0147",
-            "\1\u0148",
-            "\1\u0149",
-            "\1\u014a",
-            "\1\u014b",
-            "\1\u014c",
-            "",
-            "",
-            "\1\u014d",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u014f\12\uffff\1\u0150",
-            "\1\u0151",
-            "\1\u0152",
-            "\1\u0153",
-            "\1\u0154",
-            "\1\u0155",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0158",
-            "\1\u0159",
-            "\1\u015a",
-            "\1\u015b\110\uffff\1\u015c",
-            "\1\u015d",
-            "\1\u015e",
-            "",
-            "\1\u015f",
-            "",
-            "\1\u0160",
-            "\1\u0161",
-            "\1\u0162",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0164",
-            "\1\u0165",
-            "\1\u0166",
-            "",
-            "",
-            "",
-            "\1\u0167",
-            "\1\u0168",
-            "\1\u0169",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u016b",
-            "\1\u016c",
-            "\1\u016d",
-            "\1\u016e",
-            "\1\u016f",
-            "\1\u0170",
-            "\1\u0171",
-            "\1\u0172",
-            "\1\u0173",
-            "\1\u0174",
-            "\1\u0175",
-            "\1\u0176",
-            "\1\u0177",
-            "\1\u0178",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u017b",
-            "\1\u017c\16\uffff\1\u017d",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u0180",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0182",
-            "\1\u0183",
-            "\1\u0184",
-            "\1\u0185",
-            "\1\u0186",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0188",
-            "\1\u0189",
-            "\1\u018a",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u018c",
-            "\1\u018d",
-            "",
-            "\1\u018e",
-            "\1\u018f",
-            "\1\u0191\2\uffff\1\u0190",
-            "\1\u0192",
-            "\1\u0193",
-            "\1\u0194",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0198",
-            "\1\u0199",
-            "\1\u019a",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u019c",
-            "\1\u019d",
-            "\1\u019e",
-            "\1\u019f",
-            "\1\u01a0",
-            "",
-            "\1\u01a1",
-            "\1\u01a2",
-            "\1\u01a3",
-            "\1\u01a4",
-            "\1\u01a5",
-            "\1\u01a6",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01a8",
-            "",
-            "\1\u01a9",
-            "\1\u01aa",
-            "\1\u01ab",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u01ae",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01b0",
-            "\1\u01b1",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\u01b3",
-            "\1\u01b4",
-            "\1\u01b5",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u01b7\3\uffff\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff"+
-            "\1\76\1\uffff\32\76",
-            "\1\u01b9",
-            "\1\u01ba",
-            "\1\u01bb",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u01bd",
-            "\1\u01be",
-            "\1\u01bf",
-            "",
-            "\1\u01c0",
-            "\1\u01c1",
-            "\1\u01c2",
-            "\1\u01c3",
-            "",
-            "",
-            "\1\u01c4",
-            "\1\u01c5",
-            "\1\u01c6",
-            "",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01c8",
-            "\1\u01c9",
-            "",
-            "\1\u01ca",
-            "\1\u01cb",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01cd",
-            "",
-            "\1\u01ce",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22"+
-            "\76\1\u01cf\7\76",
-            "\1\u01d1",
-            "",
-            "\1\u01d2",
-            "\1\u01d3",
-            "",
-            "\1\u01d4",
-            "\1\u01d5",
-            "\1\u01d6",
-            "\1\u01d7",
-            "",
-            "",
-            "\1\u01d8",
-            "",
-            "\1\u01d9",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u01db",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01dd",
-            "",
-            "",
-            "",
-            "\1\u01de\4\uffff\1\u01df",
-            "\1\u01e0",
-            "\1\u01e1",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01e3",
-            "\1\u01e4",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01e6",
-            "\1\u01e7",
-            "\1\u01e8",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01ea",
-            "",
-            "\1\u01eb",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01ed",
-            "\1\u01ee",
-            "",
-            "\1\u01ef",
-            "\1\u01f0",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u01f2",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01f4",
-            "\1\u01f5",
-            "\1\u01f6",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u01f8",
-            "\1\u01f9",
-            "\1\u01fa",
-            "",
-            "\1\u01fb",
-            "",
-            "\1\u01fc",
-            "\1\u01fd",
-            "\1\u01fe",
-            "\1\u01ff",
-            "\1\u0200",
-            "",
-            "",
-            "\1\u0201",
-            "",
-            "\1\u0202",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22"+
-            "\76\1\u0203\7\76",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0206",
-            "",
-            "\1\u0207",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22"+
-            "\76\1\u0208\7\76",
-            "\1\u020a",
-            "\1\u020b",
-            "",
-            "\1\u020c",
-            "",
-            "\1\u020d",
-            "\1\u020e",
-            "\1\u020f",
-            "",
-            "\1\u0210",
-            "\1\u0211",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0214",
-            "\1\u0215",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0217",
-            "\1\u0218",
-            "\1\u0219",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\u021b",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u021f",
-            "",
-            "\1\u0220",
-            "\1\u0221",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u0223\4\uffff\1\u0224",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\u0226",
-            "\1\u0227",
-            "",
-            "\1\u0228",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u022a",
-            "",
-            "\1\u022c\17\uffff\1\u022b",
-            "",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u022e\1\u022f",
-            "\1\u0230",
-            "",
-            "\1\u0231",
-            "\1\u0232",
-            "",
-            "\1\u0233",
-            "\1\u0234",
-            "\1\u0235",
-            "",
-            "\1\u0236",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0237",
-            "\1\u0238",
-            "\1\u0239",
-            "\1\u023a",
-            "\1\u023b",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "\1\u023d",
-            "\1\u023e",
-            "\1\u023f",
-            "\1\u0240",
-            "\1\u0241",
-            "\1\u0242",
-            "",
-            "\1\u0243",
-            "\1\u0244",
-            "\1\u0245",
-            "\1\u0246",
-            "\1\u0248\2\uffff\1\u0247",
-            "\1\u0249",
-            "\1\u024a",
-            "\1\u024b",
-            "\1\u024c",
-            "\1\u024d",
-            "",
-            "",
-            "\1\u024f\2\uffff\1\u024e",
-            "\1\u0251\122\uffff\1\u0250",
-            "\1\u0252",
-            "\1\u0253",
-            "\1\u0254",
-            "",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "\1\u0256",
-            "\1\u0258\2\uffff\1\u0257",
-            "\1\u0259",
-            "",
-            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32"+
-            "\76",
-            "",
-            "",
-            "\1\u025c\2\uffff\1\u025b",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
-    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
-    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
-    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
-    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
-    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
-    static final short[][] DFA21_transition;
-
-    static {
-        int numStates = DFA21_transitionS.length;
-        DFA21_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
-        }
-    }
-
-    static class DFA21 extends DFA {
-
-        public DFA21(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 21;
-            this.eot = DFA21_eot;
-            this.eof = DFA21_eof;
-            this.min = DFA21_min;
-            this.max = DFA21_max;
-            this.accept = DFA21_accept;
-            this.special = DFA21_special;
-            this.transition = DFA21_transition;
-        }
-        public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            IntStream input = _input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA21_0 = input.LA(1);
-
-                        s = -1;
-                        if ( (LA21_0=='=') ) {s = 1;}
-
-                        else if ( (LA21_0=='|') ) {s = 2;}
-
-                        else if ( (LA21_0=='&') ) {s = 3;}
-
-                        else if ( (LA21_0=='e') ) {s = 4;}
-
-                        else if ( (LA21_0=='+') ) {s = 5;}
-
-                        else if ( (LA21_0=='-') ) {s = 6;}
-
-                        else if ( (LA21_0=='*') ) {s = 7;}
-
-                        else if ( (LA21_0=='/') ) {s = 8;}
-
-                        else if ( (LA21_0=='%') ) {s = 9;}
-
-                        else if ( (LA21_0=='!') ) {s = 10;}
-
-                        else if ( (LA21_0=='>') ) {s = 11;}
-
-                        else if ( (LA21_0=='<') ) {s = 12;}
-
-                        else if ( (LA21_0=='.') ) {s = 13;}
-
-                        else if ( (LA21_0=='?') ) {s = 14;}
-
-                        else if ( (LA21_0=='v') ) {s = 15;}
-
-                        else if ( (LA21_0=='s') ) {s = 16;}
-
-                        else if ( (LA21_0=='i') ) {s = 17;}
-
-                        else if ( (LA21_0=='f') ) {s = 18;}
-
-                        else if ( (LA21_0=='d') ) {s = 19;}
-
-                        else if ( (LA21_0=='w') ) {s = 20;}
-
-                        else if ( (LA21_0=='m') ) {s = 21;}
-
-                        else if ( (LA21_0=='y') ) {s = 22;}
-
-                        else if ( (LA21_0=='{') ) {s = 23;}
-
-                        else if ( (LA21_0=='}') ) {s = 24;}
-
-                        else if ( (LA21_0=='r') ) {s = 25;}
-
-                        else if ( (LA21_0=='a') ) {s = 26;}
-
-                        else if ( (LA21_0=='(') ) {s = 27;}
-
-                        else if ( (LA21_0==')') ) {s = 28;}
-
-                        else if ( (LA21_0==',') ) {s = 29;}
-
-                        else if ( (LA21_0=='o') ) {s = 30;}
-
-                        else if ( (LA21_0=='b') ) {s = 31;}
-
-                        else if ( (LA21_0=='c') ) {s = 32;}
-
-                        else if ( (LA21_0=='p') ) {s = 33;}
-
-                        else if ( (LA21_0=='u') ) {s = 34;}
-
-                        else if ( (LA21_0=='t') ) {s = 35;}
-
-                        else if ( (LA21_0=='@') ) {s = 36;}
-
-                        else if ( (LA21_0==']') ) {s = 37;}
-
-                        else if ( (LA21_0=='#') ) {s = 38;}
-
-                        else if ( (LA21_0=='[') ) {s = 39;}
-
-                        else if ( (LA21_0==';') ) {s = 40;}
-
-                        else if ( (LA21_0==':') ) {s = 41;}
-
-                        else if ( (LA21_0=='n') ) {s = 42;}
-
-                        else if ( (LA21_0=='^') ) {s = 43;}
-
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='g' && LA21_0<='h')||(LA21_0>='j' && LA21_0<='l')||LA21_0=='q'||LA21_0=='x'||LA21_0=='z') ) {s = 44;}
-
-                        else if ( (LA21_0=='0') ) {s = 45;}
-
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 46;}
-
-                        else if ( (LA21_0=='\"') ) {s = 47;}
-
-                        else if ( (LA21_0=='\'') ) {s = 48;}
-
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 50;}
-
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 21, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
- 
-
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLParser.java b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLParser.java
deleted file mode 100644
index 5ea20b1..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSLParser.java
+++ /dev/null
@@ -1,10015 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock.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.osbp.xtext.entitymock.services.EntityMockDSLGrammarAccess;
-
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-@SuppressWarnings("all")
-interface InternalEntityMockDSLParserSignatures {
-     void entryRuleEntityMockModel() throws RecognitionException;
-     void ruleEntityMockModel() throws RecognitionException;
-     void entryRuleEntityMockPackage() throws RecognitionException;
-     void ruleEntityMockPackage() throws RecognitionException;
-     void entryRuleEntityModelImport() throws RecognitionException;
-     void ruleEntityModelImport() throws RecognitionException;
-     void entryRuleEntityMockQualifiedNameWithWildCard() throws RecognitionException;
-     void ruleEntityMockQualifiedNameWithWildCard() throws RecognitionException;
-     void entryRuleRunningDataInterchanges() throws RecognitionException;
-     void ruleRunningDataInterchanges() throws RecognitionException;
-     void entryRuleRunningDataInterchange() throws RecognitionException;
-     void ruleRunningDataInterchange() throws RecognitionException;
-     void entryRuleEntityMockResources() throws RecognitionException;
-     void ruleEntityMockResources() throws RecognitionException;
-     void entryRuleEntityMockResource() throws RecognitionException;
-     void ruleEntityMockResource() throws RecognitionException;
-     void entryRuleEntityMockResourceAttribute() throws RecognitionException;
-     void ruleEntityMockResourceAttribute() throws RecognitionException;
-     void entryRuleEntityMockResourceDataRow() throws RecognitionException;
-     void ruleEntityMockResourceDataRow() throws RecognitionException;
-     void entryRuleEntityMockObjects() throws RecognitionException;
-     void ruleEntityMockObjects() throws RecognitionException;
-     void entryRuleEntityMockObject() throws RecognitionException;
-     void ruleEntityMockObject() throws RecognitionException;
-     void entryRuleEntityMockObjectEnum() throws RecognitionException;
-     void ruleEntityMockObjectEnum() throws RecognitionException;
-     void entryRuleEntityMockDataTypes() throws RecognitionException;
-     void ruleEntityMockDataTypes() throws RecognitionException;
-     void entryRuleIEntityMockObjectAttribute() throws RecognitionException;
-     void ruleIEntityMockObjectAttribute() throws RecognitionException;
-     void entryRuleEntityMockObjectPlainValue() throws RecognitionException;
-     void ruleEntityMockObjectPlainValue() throws RecognitionException;
-     void entryRuleEntityMockObjectResourceValue() throws RecognitionException;
-     void ruleEntityMockObjectResourceValue() throws RecognitionException;
-     void entryRuleEntityMockObjectArrayValue() throws RecognitionException;
-     void ruleEntityMockObjectArrayValue() throws RecognitionException;
-     void entryRuleEntityMockObjectItemValue() throws RecognitionException;
-     void ruleEntityMockObjectItemValue() throws RecognitionException;
-     void entryRuleEntityMockObjectEmbed() throws RecognitionException;
-     void ruleEntityMockObjectEmbed() throws RecognitionException;
-     void entryRuleEntityMockObjectFunction() throws RecognitionException;
-     void ruleEntityMockObjectFunction() throws RecognitionException;
-     void entryRuleEntityMockObjectFunctionParameter() throws RecognitionException;
-     void ruleEntityMockObjectFunctionParameter() throws RecognitionException;
-     void entryRuleEntityMockObjectFill() throws RecognitionException;
-     void ruleEntityMockObjectFill() throws RecognitionException;
-     void entryRulePropertyFillerType() throws RecognitionException;
-     void rulePropertyFillerType() throws RecognitionException;
-     void entryRulePropertyFillerDateFuture() throws RecognitionException;
-     void rulePropertyFillerDateFuture() throws RecognitionException;
-     void entryRulePropertyFillerDatePast() throws RecognitionException;
-     void rulePropertyFillerDatePast() throws RecognitionException;
-     void entryRulePropertyFillerBoolean() throws RecognitionException;
-     void rulePropertyFillerBoolean() throws RecognitionException;
-     void entryRulePropertyFillerDateRange() throws RecognitionException;
-     void rulePropertyFillerDateRange() throws RecognitionException;
-     void entryRulePropertyFillerSignedDoubleRange() throws RecognitionException;
-     void rulePropertyFillerSignedDoubleRange() throws RecognitionException;
-     void entryRulePropertyFillerSignedDoubleRandom() throws RecognitionException;
-     void rulePropertyFillerSignedDoubleRandom() throws RecognitionException;
-     void entryRulePropertyFillerSignedIntegerRange() throws RecognitionException;
-     void rulePropertyFillerSignedIntegerRange() throws RecognitionException;
-     void entryRulePropertyFillerSignedIntegerRandom() throws RecognitionException;
-     void rulePropertyFillerSignedIntegerRandom() throws RecognitionException;
-     void entryRulePropertyFillerTextRandom() throws RecognitionException;
-     void rulePropertyFillerTextRandom() throws RecognitionException;
-     void entryRulePropertyFillerTextParagraphs() throws RecognitionException;
-     void rulePropertyFillerTextParagraphs() throws RecognitionException;
-     void entryRulePropertyFillerTextSentences() throws RecognitionException;
-     void rulePropertyFillerTextSentences() throws RecognitionException;
-     void entryRulePropertyFillerTextWords() throws RecognitionException;
-     void rulePropertyFillerTextWords() throws RecognitionException;
-     void entryRulePropertyFillerUnsignedDoubleRange() throws RecognitionException;
-     void rulePropertyFillerUnsignedDoubleRange() throws RecognitionException;
-     void entryRulePropertyFillerUnsignedDoubleRandom() throws RecognitionException;
-     void rulePropertyFillerUnsignedDoubleRandom() throws RecognitionException;
-     void entryRulePropertyFillerUnsignedIntegerRange() throws RecognitionException;
-     void rulePropertyFillerUnsignedIntegerRange() throws RecognitionException;
-     void entryRulePropertyFillerUnsignedIntegerRandom() throws RecognitionException;
-     void rulePropertyFillerUnsignedIntegerRandom() throws RecognitionException;
-     void entryRuleEntityMockDataType() throws RecognitionException;
-     void ruleEntityMockDataType() throws RecognitionException;
-     void entryRuleEntityMockEntities() throws RecognitionException;
-     void ruleEntityMockEntities() throws RecognitionException;
-     void entryRuleEntityMockEntity() throws RecognitionException;
-     void ruleEntityMockEntity() throws RecognitionException;
-     void entryRuleIIterate() throws RecognitionException;
-     void ruleIIterate() throws RecognitionException;
-     void entryRuleIntegerIterate() throws RecognitionException;
-     void ruleIntegerIterate() throws RecognitionException;
-     void entryRuleDateIterate() throws RecognitionException;
-     void ruleDateIterate() throws RecognitionException;
-     void entryRuleDate() throws RecognitionException;
-     void ruleDate() throws RecognitionException;
-     void entryRuleEntityMockByResourceAttribute() throws RecognitionException;
-     void ruleEntityMockByResourceAttribute() throws RecognitionException;
-     void entryRuleEntityMockTemporary() throws RecognitionException;
-     void ruleEntityMockTemporary() throws RecognitionException;
-     void entryRuleIEntityMockAttribute() throws RecognitionException;
-     void ruleIEntityMockAttribute() throws RecognitionException;
-     void entryRuleEntityMockEntityFunction() throws RecognitionException;
-     void ruleEntityMockEntityFunction() throws RecognitionException;
-     void entryRuleEntityMockEntityFunctionParameter() throws RecognitionException;
-     void ruleEntityMockEntityFunctionParameter() throws RecognitionException;
-     void entryRuleEntityMockReferencedObjectAttribute() throws RecognitionException;
-     void ruleEntityMockReferencedObjectAttribute() throws RecognitionException;
-     void entryRuleEntityMockAttributeByObject() throws RecognitionException;
-     void ruleEntityMockAttributeByObject() throws RecognitionException;
-     void entryRuleEntityMockAttributeFiller() throws RecognitionException;
-     void ruleEntityMockAttributeFiller() throws RecognitionException;
-     void entryRuleEntityMockAttributeByReference() throws RecognitionException;
-     void ruleEntityMockAttributeByReference() throws RecognitionException;
-     void entryRuleSignedNumber() throws RecognitionException;
-     void ruleSignedNumber() throws RecognitionException;
-     void entryRuleUnsignedNumber() throws RecognitionException;
-     void ruleUnsignedNumber() throws RecognitionException;
-     void entryRuleSINT() throws RecognitionException;
-     void ruleSINT() throws RecognitionException;
-     void entryRuleQualifiedName() throws RecognitionException;
-     void ruleQualifiedName() throws RecognitionException;
-     void entryRuleValidID() throws RecognitionException;
-     void ruleValidID() throws RecognitionException;
-     void entryRuleXAnnotation() throws RecognitionException;
-     void ruleXAnnotation() throws RecognitionException;
-     void entryRuleXAnnotationElementValuePair() throws RecognitionException;
-     void ruleXAnnotationElementValuePair() throws RecognitionException;
-     void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException;
-     void ruleXAnnotationElementValueOrCommaList() throws RecognitionException;
-     void entryRuleXAnnotationElementValue() throws RecognitionException;
-     void ruleXAnnotationElementValue() throws RecognitionException;
-     void entryRuleXAnnotationOrExpression() throws RecognitionException;
-     void ruleXAnnotationOrExpression() throws RecognitionException;
-     void entryRuleXExpression() throws RecognitionException;
-     void ruleXExpression() throws RecognitionException;
-     void entryRuleXAssignment() throws RecognitionException;
-     void ruleXAssignment() throws RecognitionException;
-     void entryRuleOpSingleAssign() throws RecognitionException;
-     void ruleOpSingleAssign() throws RecognitionException;
-     void entryRuleOpMultiAssign() throws RecognitionException;
-     void ruleOpMultiAssign() throws RecognitionException;
-     void entryRuleXOrExpression() throws RecognitionException;
-     void ruleXOrExpression() throws RecognitionException;
-     void entryRuleOpOr() throws RecognitionException;
-     void ruleOpOr() throws RecognitionException;
-     void entryRuleXAndExpression() throws RecognitionException;
-     void ruleXAndExpression() throws RecognitionException;
-     void entryRuleOpAnd() throws RecognitionException;
-     void ruleOpAnd() throws RecognitionException;
-     void entryRuleXEqualityExpression() throws RecognitionException;
-     void ruleXEqualityExpression() throws RecognitionException;
-     void entryRuleOpEquality() throws RecognitionException;
-     void ruleOpEquality() throws RecognitionException;
-     void entryRuleXRelationalExpression() throws RecognitionException;
-     void ruleXRelationalExpression() throws RecognitionException;
-     void entryRuleOpCompare() throws RecognitionException;
-     void ruleOpCompare() throws RecognitionException;
-     void entryRuleXOtherOperatorExpression() throws RecognitionException;
-     void ruleXOtherOperatorExpression() throws RecognitionException;
-     void entryRuleOpOther() throws RecognitionException;
-     void ruleOpOther() throws RecognitionException;
-     void entryRuleXAdditiveExpression() throws RecognitionException;
-     void ruleXAdditiveExpression() throws RecognitionException;
-     void entryRuleOpAdd() throws RecognitionException;
-     void ruleOpAdd() throws RecognitionException;
-     void entryRuleXMultiplicativeExpression() throws RecognitionException;
-     void ruleXMultiplicativeExpression() throws RecognitionException;
-     void entryRuleOpMulti() throws RecognitionException;
-     void ruleOpMulti() throws RecognitionException;
-     void entryRuleXUnaryOperation() throws RecognitionException;
-     void ruleXUnaryOperation() throws RecognitionException;
-     void entryRuleOpUnary() throws RecognitionException;
-     void ruleOpUnary() throws RecognitionException;
-     void entryRuleXCastedExpression() throws RecognitionException;
-     void ruleXCastedExpression() throws RecognitionException;
-     void entryRuleXPostfixOperation() throws RecognitionException;
-     void ruleXPostfixOperation() throws RecognitionException;
-     void entryRuleOpPostfix() throws RecognitionException;
-     void ruleOpPostfix() throws RecognitionException;
-     void entryRuleXMemberFeatureCall() throws RecognitionException;
-     void ruleXMemberFeatureCall() throws RecognitionException;
-     void entryRuleXPrimaryExpression() throws RecognitionException;
-     void ruleXPrimaryExpression() throws RecognitionException;
-     void entryRuleXLiteral() throws RecognitionException;
-     void ruleXLiteral() throws RecognitionException;
-     void entryRuleXCollectionLiteral() throws RecognitionException;
-     void ruleXCollectionLiteral() throws RecognitionException;
-     void entryRuleXSetLiteral() throws RecognitionException;
-     void ruleXSetLiteral() throws RecognitionException;
-     void entryRuleXListLiteral() throws RecognitionException;
-     void ruleXListLiteral() throws RecognitionException;
-     void entryRuleXClosure() throws RecognitionException;
-     void ruleXClosure() throws RecognitionException;
-     void entryRuleXExpressionInClosure() throws RecognitionException;
-     void ruleXExpressionInClosure() throws RecognitionException;
-     void entryRuleXShortClosure() throws RecognitionException;
-     void ruleXShortClosure() throws RecognitionException;
-     void entryRuleXParenthesizedExpression() throws RecognitionException;
-     void ruleXParenthesizedExpression() throws RecognitionException;
-     void entryRuleXIfExpression() throws RecognitionException;
-     void ruleXIfExpression() throws RecognitionException;
-     void entryRuleXSwitchExpression() throws RecognitionException;
-     void ruleXSwitchExpression() throws RecognitionException;
-     void entryRuleXCasePart() throws RecognitionException;
-     void ruleXCasePart() throws RecognitionException;
-     void entryRuleXForLoopExpression() throws RecognitionException;
-     void ruleXForLoopExpression() throws RecognitionException;
-     void entryRuleXBasicForLoopExpression() throws RecognitionException;
-     void ruleXBasicForLoopExpression() throws RecognitionException;
-     void entryRuleXWhileExpression() throws RecognitionException;
-     void ruleXWhileExpression() throws RecognitionException;
-     void entryRuleXDoWhileExpression() throws RecognitionException;
-     void ruleXDoWhileExpression() throws RecognitionException;
-     void entryRuleXBlockExpression() throws RecognitionException;
-     void ruleXBlockExpression() throws RecognitionException;
-     void entryRuleXExpressionOrVarDeclaration() throws RecognitionException;
-     void ruleXExpressionOrVarDeclaration() throws RecognitionException;
-     void entryRuleXVariableDeclaration() throws RecognitionException;
-     void ruleXVariableDeclaration() throws RecognitionException;
-     void entryRuleJvmFormalParameter() throws RecognitionException;
-     void ruleJvmFormalParameter() throws RecognitionException;
-     void entryRuleFullJvmFormalParameter() throws RecognitionException;
-     void ruleFullJvmFormalParameter() throws RecognitionException;
-     void entryRuleXFeatureCall() throws RecognitionException;
-     void ruleXFeatureCall() throws RecognitionException;
-     void entryRuleFeatureCallID() throws RecognitionException;
-     void ruleFeatureCallID() throws RecognitionException;
-     void entryRuleIdOrSuper() throws RecognitionException;
-     void ruleIdOrSuper() throws RecognitionException;
-     void entryRuleXConstructorCall() throws RecognitionException;
-     void ruleXConstructorCall() throws RecognitionException;
-     void entryRuleXBooleanLiteral() throws RecognitionException;
-     void ruleXBooleanLiteral() throws RecognitionException;
-     void entryRuleXNullLiteral() throws RecognitionException;
-     void ruleXNullLiteral() throws RecognitionException;
-     void entryRuleXNumberLiteral() throws RecognitionException;
-     void ruleXNumberLiteral() throws RecognitionException;
-     void entryRuleXStringLiteral() throws RecognitionException;
-     void ruleXStringLiteral() throws RecognitionException;
-     void entryRuleXTypeLiteral() throws RecognitionException;
-     void ruleXTypeLiteral() throws RecognitionException;
-     void entryRuleXThrowExpression() throws RecognitionException;
-     void ruleXThrowExpression() throws RecognitionException;
-     void entryRuleXReturnExpression() throws RecognitionException;
-     void ruleXReturnExpression() throws RecognitionException;
-     void entryRuleXTryCatchFinallyExpression() throws RecognitionException;
-     void ruleXTryCatchFinallyExpression() throws RecognitionException;
-     void entryRuleXSynchronizedExpression() throws RecognitionException;
-     void ruleXSynchronizedExpression() throws RecognitionException;
-     void entryRuleXCatchClause() throws RecognitionException;
-     void ruleXCatchClause() throws RecognitionException;
-     void entryRuleNumber() throws RecognitionException;
-     void ruleNumber() throws RecognitionException;
-     void entryRuleJvmTypeReference() throws RecognitionException;
-     void ruleJvmTypeReference() throws RecognitionException;
-     void entryRuleArrayBrackets() throws RecognitionException;
-     void ruleArrayBrackets() throws RecognitionException;
-     void entryRuleXFunctionTypeRef() throws RecognitionException;
-     void ruleXFunctionTypeRef() throws RecognitionException;
-     void entryRuleJvmParameterizedTypeReference() throws RecognitionException;
-     void ruleJvmParameterizedTypeReference() throws RecognitionException;
-     void entryRuleJvmArgumentTypeReference() throws RecognitionException;
-     void ruleJvmArgumentTypeReference() throws RecognitionException;
-     void entryRuleJvmWildcardTypeReference() throws RecognitionException;
-     void ruleJvmWildcardTypeReference() throws RecognitionException;
-     void entryRuleJvmUpperBound() throws RecognitionException;
-     void ruleJvmUpperBound() throws RecognitionException;
-     void entryRuleJvmUpperBoundAnded() throws RecognitionException;
-     void ruleJvmUpperBoundAnded() throws RecognitionException;
-     void entryRuleJvmLowerBound() throws RecognitionException;
-     void ruleJvmLowerBound() throws RecognitionException;
-     void entryRuleJvmLowerBoundAnded() throws RecognitionException;
-     void ruleJvmLowerBoundAnded() throws RecognitionException;
-     void entryRuleQualifiedNameWithWildcard() throws RecognitionException;
-     void ruleQualifiedNameWithWildcard() throws RecognitionException;
-     void entryRuleXImportDeclaration() throws RecognitionException;
-     void ruleXImportDeclaration() throws RecognitionException;
-     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
-     void ruleQualifiedNameInStaticImport() throws RecognitionException;
-     void ruleEDateStepType() throws RecognitionException;
-     void rule__IEntityMockObjectAttribute__Alternatives() throws RecognitionException;
-     void rule__PropertyFillerType__Alternatives() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Alternatives_1_0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Alternatives_1_2() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Alternatives_2_0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Alternatives_2_2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2() throws RecognitionException;
-     void rule__EntityMockEntity__Alternatives_4() throws RecognitionException;
-     void rule__IIterate__Alternatives() throws RecognitionException;
-     void rule__Date__Alternatives() throws RecognitionException;
-     void rule__IEntityMockAttribute__Alternatives() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Alternatives() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Alternatives() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Alternatives_3() throws RecognitionException;
-     void rule__XAnnotation__Alternatives_3_1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException;
-     void rule__XAnnotationElementValue__Alternatives() throws RecognitionException;
-     void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException;
-     void rule__XAssignment__Alternatives() throws RecognitionException;
-     void rule__OpMultiAssign__Alternatives() throws RecognitionException;
-     void rule__OpEquality__Alternatives() throws RecognitionException;
-     void rule__XRelationalExpression__Alternatives_1() throws RecognitionException;
-     void rule__OpCompare__Alternatives() throws RecognitionException;
-     void rule__OpOther__Alternatives() throws RecognitionException;
-     void rule__OpOther__Alternatives_5_1() throws RecognitionException;
-     void rule__OpOther__Alternatives_6_1() throws RecognitionException;
-     void rule__OpAdd__Alternatives() throws RecognitionException;
-     void rule__OpMulti__Alternatives() throws RecognitionException;
-     void rule__XUnaryOperation__Alternatives() throws RecognitionException;
-     void rule__OpUnary__Alternatives() throws RecognitionException;
-     void rule__OpPostfix__Alternatives() throws RecognitionException;
-     void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException;
-     void rule__XPrimaryExpression__Alternatives() throws RecognitionException;
-     void rule__XLiteral__Alternatives() throws RecognitionException;
-     void rule__XCollectionLiteral__Alternatives() throws RecognitionException;
-     void rule__XSwitchExpression__Alternatives_2() throws RecognitionException;
-     void rule__XCasePart__Alternatives_3() throws RecognitionException;
-     void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException;
-     void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException;
-     void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException;
-     void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException;
-     void rule__FeatureCallID__Alternatives() throws RecognitionException;
-     void rule__IdOrSuper__Alternatives() throws RecognitionException;
-     void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException;
-     void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException;
-     void rule__Number__Alternatives() throws RecognitionException;
-     void rule__Number__Alternatives_1_0() throws RecognitionException;
-     void rule__Number__Alternatives_1_1_1() throws RecognitionException;
-     void rule__JvmTypeReference__Alternatives() throws RecognitionException;
-     void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException;
-     void rule__XImportDeclaration__Alternatives_1() throws RecognitionException;
-     void rule__XImportDeclaration__Alternatives_1_0_3() throws RecognitionException;
-     void rule__EDateStepType__Alternatives() throws RecognitionException;
-     void rule__EntityMockPackage__Group__0() throws RecognitionException;
-     void rule__EntityMockPackage__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__1() throws RecognitionException;
-     void rule__EntityMockPackage__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__2() throws RecognitionException;
-     void rule__EntityMockPackage__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__3() throws RecognitionException;
-     void rule__EntityMockPackage__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__4() throws RecognitionException;
-     void rule__EntityMockPackage__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__5() throws RecognitionException;
-     void rule__EntityMockPackage__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__6() throws RecognitionException;
-     void rule__EntityMockPackage__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__7() throws RecognitionException;
-     void rule__EntityMockPackage__Group__7__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__8() throws RecognitionException;
-     void rule__EntityMockPackage__Group__8__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__9() throws RecognitionException;
-     void rule__EntityMockPackage__Group__9__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group__10() throws RecognitionException;
-     void rule__EntityMockPackage__Group__10__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group_3__0() throws RecognitionException;
-     void rule__EntityMockPackage__Group_3__0__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group_3__1() throws RecognitionException;
-     void rule__EntityMockPackage__Group_3__1__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group_4__0() throws RecognitionException;
-     void rule__EntityMockPackage__Group_4__0__Impl() throws RecognitionException;
-     void rule__EntityMockPackage__Group_4__1() throws RecognitionException;
-     void rule__EntityMockPackage__Group_4__1__Impl() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group__0() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group__1() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
-     void rule__EntityMockQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__0() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__0__Impl() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__1() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__1__Impl() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__2() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__2__Impl() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__3() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__3__Impl() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__4() throws RecognitionException;
-     void rule__RunningDataInterchanges__Group__4__Impl() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__0() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__0__Impl() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__1() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__1__Impl() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__2() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__2__Impl() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__3() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__3__Impl() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__4() throws RecognitionException;
-     void rule__RunningDataInterchange__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockResources__Group__0() throws RecognitionException;
-     void rule__EntityMockResources__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockResources__Group__1() throws RecognitionException;
-     void rule__EntityMockResources__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockResources__Group__2() throws RecognitionException;
-     void rule__EntityMockResources__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockResources__Group__3() throws RecognitionException;
-     void rule__EntityMockResources__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockResources__Group__4() throws RecognitionException;
-     void rule__EntityMockResources__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__0() throws RecognitionException;
-     void rule__EntityMockResource__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__1() throws RecognitionException;
-     void rule__EntityMockResource__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__2() throws RecognitionException;
-     void rule__EntityMockResource__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__3() throws RecognitionException;
-     void rule__EntityMockResource__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__4() throws RecognitionException;
-     void rule__EntityMockResource__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__5() throws RecognitionException;
-     void rule__EntityMockResource__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__6() throws RecognitionException;
-     void rule__EntityMockResource__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__7() throws RecognitionException;
-     void rule__EntityMockResource__Group__7__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group__8() throws RecognitionException;
-     void rule__EntityMockResource__Group__8__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__0() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__0__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__1() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__1__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__2() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__2__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__3() throws RecognitionException;
-     void rule__EntityMockResource__Group_3__3__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3_2__0() throws RecognitionException;
-     void rule__EntityMockResource__Group_3_2__0__Impl() throws RecognitionException;
-     void rule__EntityMockResource__Group_3_2__1() throws RecognitionException;
-     void rule__EntityMockResource__Group_3_2__1__Impl() throws RecognitionException;
-     void rule__EntityMockResourceAttribute__Group__0() throws RecognitionException;
-     void rule__EntityMockResourceAttribute__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockResourceAttribute__Group__1() throws RecognitionException;
-     void rule__EntityMockResourceAttribute__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__0() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__1() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__2() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__0() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__0__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__1() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__1__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__2() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2__2__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2_1__0() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2_1__1() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__Group_2_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjects__Group__0() throws RecognitionException;
-     void rule__EntityMockObjects__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjects__Group__1() throws RecognitionException;
-     void rule__EntityMockObjects__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjects__Group__2() throws RecognitionException;
-     void rule__EntityMockObjects__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjects__Group__3() throws RecognitionException;
-     void rule__EntityMockObjects__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjects__Group__4() throws RecognitionException;
-     void rule__EntityMockObjects__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__0() throws RecognitionException;
-     void rule__EntityMockObject__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__1() throws RecognitionException;
-     void rule__EntityMockObject__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__2() throws RecognitionException;
-     void rule__EntityMockObject__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__3() throws RecognitionException;
-     void rule__EntityMockObject__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__4() throws RecognitionException;
-     void rule__EntityMockObject__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__5() throws RecognitionException;
-     void rule__EntityMockObject__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockObject__Group__6() throws RecognitionException;
-     void rule__EntityMockObject__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectEnum__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__0() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__1() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__2() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__3() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__4() throws RecognitionException;
-     void rule__EntityMockDataTypes__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group_3__0() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group_3__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group_3__1() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__Group_3__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group_4__0() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group_4__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group_4__1() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__Group_4__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__5() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__6() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group_3__0() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group_3__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group_3__1() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__Group_3__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__4() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__5() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__6() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__7() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__7__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__8() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group__8__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6__0() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6__1() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6_1__0() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6_1__1() throws RecognitionException;
-     void rule__EntityMockObjectFunction__Group_6_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__0() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__1() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__2() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__3() throws RecognitionException;
-     void rule__EntityMockObjectFill__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__0() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__1() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__2() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__0() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__1() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__2() throws RecognitionException;
-     void rule__PropertyFillerDatePast__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerBoolean__Group__0() throws RecognitionException;
-     void rule__PropertyFillerBoolean__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerBoolean__Group__1() throws RecognitionException;
-     void rule__PropertyFillerBoolean__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__0() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__1() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__2() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__3() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__4() throws RecognitionException;
-     void rule__PropertyFillerDateRange__Group__4__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__2() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__3() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__4() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__4__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__5() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group__5__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__2() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_5__0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_5__1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__2() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__3() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__2() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__3() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__2() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_3__0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_3__1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__2() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__3() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__0() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__1() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__2() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__3() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__0() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__1() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__2() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__0() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__1() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__2() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__0() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__1() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__2() throws RecognitionException;
-     void rule__PropertyFillerTextWords__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__3() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__4() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__5() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_5__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_5__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__3() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__3() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_3__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_3__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__3() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockDataType__Group__0() throws RecognitionException;
-     void rule__EntityMockDataType__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockDataType__Group__1() throws RecognitionException;
-     void rule__EntityMockDataType__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockDataType__Group__2() throws RecognitionException;
-     void rule__EntityMockDataType__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockDataType__Group__3() throws RecognitionException;
-     void rule__EntityMockDataType__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntities__Group__0() throws RecognitionException;
-     void rule__EntityMockEntities__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntities__Group__1() throws RecognitionException;
-     void rule__EntityMockEntities__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntities__Group__2() throws RecognitionException;
-     void rule__EntityMockEntities__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntities__Group__3() throws RecognitionException;
-     void rule__EntityMockEntities__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntities__Group__4() throws RecognitionException;
-     void rule__EntityMockEntities__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group__0() throws RecognitionException;
-     void rule__EntityMockEntity__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group__1() throws RecognitionException;
-     void rule__EntityMockEntity__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group__2() throws RecognitionException;
-     void rule__EntityMockEntity__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group__3() throws RecognitionException;
-     void rule__EntityMockEntity__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group__4() throws RecognitionException;
-     void rule__EntityMockEntity__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__0() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__1() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__2() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__3() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__4() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__5() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__5__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__6() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__6__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__7() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__7__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__8() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_0__8__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__0() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__1() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__2() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__3() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__4() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__5() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_1__5__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__0() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__1() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__2() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__3() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__4() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__5() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__5__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__6() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__6__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__7() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__7__Impl() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__8() throws RecognitionException;
-     void rule__EntityMockEntity__Group_4_2__8__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__0() throws RecognitionException;
-     void rule__IntegerIterate__Group__0__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__1() throws RecognitionException;
-     void rule__IntegerIterate__Group__1__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__2() throws RecognitionException;
-     void rule__IntegerIterate__Group__2__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__3() throws RecognitionException;
-     void rule__IntegerIterate__Group__3__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__4() throws RecognitionException;
-     void rule__IntegerIterate__Group__4__Impl() throws RecognitionException;
-     void rule__IntegerIterate__Group__5() throws RecognitionException;
-     void rule__IntegerIterate__Group__5__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__0() throws RecognitionException;
-     void rule__DateIterate__Group__0__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__1() throws RecognitionException;
-     void rule__DateIterate__Group__1__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__2() throws RecognitionException;
-     void rule__DateIterate__Group__2__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__3() throws RecognitionException;
-     void rule__DateIterate__Group__3__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__4() throws RecognitionException;
-     void rule__DateIterate__Group__4__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__5() throws RecognitionException;
-     void rule__DateIterate__Group__5__Impl() throws RecognitionException;
-     void rule__DateIterate__Group__6() throws RecognitionException;
-     void rule__DateIterate__Group__6__Impl() throws RecognitionException;
-     void rule__Date__Group_3__0() throws RecognitionException;
-     void rule__Date__Group_3__0__Impl() throws RecognitionException;
-     void rule__Date__Group_3__1() throws RecognitionException;
-     void rule__Date__Group_3__1__Impl() throws RecognitionException;
-     void rule__Date__Group_3__2() throws RecognitionException;
-     void rule__Date__Group_3__2__Impl() throws RecognitionException;
-     void rule__Date__Group_3__3() throws RecognitionException;
-     void rule__Date__Group_3__3__Impl() throws RecognitionException;
-     void rule__Date__Group_3__4() throws RecognitionException;
-     void rule__Date__Group_3__4__Impl() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__0() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__1() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__2() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__3() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__4() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__0() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__1() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__2() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__3() throws RecognitionException;
-     void rule__EntityMockTemporary__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__0() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__1() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__2() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__3() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__4() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__5() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__5__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__6() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group__6__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4__0() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4__1() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4_1__0() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4_1__1() throws RecognitionException;
-     void rule__EntityMockEntityFunction__Group_4_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__0() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__1() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__2() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__2__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__3() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1__3__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1_1__0() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1_1__1() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__0() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__1() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__2() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__3() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__4() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group_2__0() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group_2__0__Impl() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group_2__1() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__Group_2__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__0() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__2() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0__2__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0_2__0() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0_2__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0_2__1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_0_2__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__0() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__2() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__2__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__3() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__Group_1__3__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__0() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__1() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__2() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__3() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__0() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__1() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__2() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__2__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__3() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__3__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__4() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group__4__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__0() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__0__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__1() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__1__Impl() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__2() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__Group_4__2__Impl() throws RecognitionException;
-     void rule__SignedNumber__Group__0() throws RecognitionException;
-     void rule__SignedNumber__Group__0__Impl() throws RecognitionException;
-     void rule__SignedNumber__Group__1() throws RecognitionException;
-     void rule__SignedNumber__Group__1__Impl() throws RecognitionException;
-     void rule__UnsignedNumber__Group__0() throws RecognitionException;
-     void rule__UnsignedNumber__Group__0__Impl() throws RecognitionException;
-     void rule__UnsignedNumber__Group__1() throws RecognitionException;
-     void rule__UnsignedNumber__Group__1__Impl() throws RecognitionException;
-     void rule__UnsignedNumber__Group_1__0() throws RecognitionException;
-     void rule__UnsignedNumber__Group_1__0__Impl() throws RecognitionException;
-     void rule__UnsignedNumber__Group_1__1() throws RecognitionException;
-     void rule__UnsignedNumber__Group_1__1__Impl() throws RecognitionException;
-     void rule__SINT__Group__0() throws RecognitionException;
-     void rule__SINT__Group__0__Impl() throws RecognitionException;
-     void rule__SINT__Group__1() throws RecognitionException;
-     void rule__SINT__Group__1__Impl() throws RecognitionException;
-     void rule__QualifiedName__Group__0() throws RecognitionException;
-     void rule__QualifiedName__Group__0__Impl() throws RecognitionException;
-     void rule__QualifiedName__Group__1() throws RecognitionException;
-     void rule__QualifiedName__Group__1__Impl() throws RecognitionException;
-     void rule__QualifiedName__Group_1__0() throws RecognitionException;
-     void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException;
-     void rule__QualifiedName__Group_1__1() throws RecognitionException;
-     void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group__0() throws RecognitionException;
-     void rule__XAnnotation__Group__0__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group__1() throws RecognitionException;
-     void rule__XAnnotation__Group__1__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group__2() throws RecognitionException;
-     void rule__XAnnotation__Group__2__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group__3() throws RecognitionException;
-     void rule__XAnnotation__Group__3__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3__0() throws RecognitionException;
-     void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3__1() throws RecognitionException;
-     void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3__2() throws RecognitionException;
-     void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException;
-     void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException;
-     void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_0__0() throws RecognitionException;
-     void rule__XAssignment__Group_0__0__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_0__1() throws RecognitionException;
-     void rule__XAssignment__Group_0__1__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_0__2() throws RecognitionException;
-     void rule__XAssignment__Group_0__2__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_0__3() throws RecognitionException;
-     void rule__XAssignment__Group_0__3__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1__0() throws RecognitionException;
-     void rule__XAssignment__Group_1__0__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1__1() throws RecognitionException;
-     void rule__XAssignment__Group_1__1__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1_1__0() throws RecognitionException;
-     void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1_1__1() throws RecognitionException;
-     void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0__0() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException;
-     void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__0() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__1() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__2() throws RecognitionException;
-     void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__0() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__1() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__2() throws RecognitionException;
-     void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group__0() throws RecognitionException;
-     void rule__XOrExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group__1() throws RecognitionException;
-     void rule__XOrExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group_1__0() throws RecognitionException;
-     void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group_1__1() throws RecognitionException;
-     void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group__0() throws RecognitionException;
-     void rule__XAndExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group__1() throws RecognitionException;
-     void rule__XAndExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group_1__0() throws RecognitionException;
-     void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group_1__1() throws RecognitionException;
-     void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group__0() throws RecognitionException;
-     void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group__1() throws RecognitionException;
-     void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1__0() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1__1() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group__1() throws RecognitionException;
-     void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException;
-     void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException;
-     void rule__OpCompare__Group_1__0() throws RecognitionException;
-     void rule__OpCompare__Group_1__0__Impl() throws RecognitionException;
-     void rule__OpCompare__Group_1__1() throws RecognitionException;
-     void rule__OpCompare__Group_1__1__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group__0() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group__1() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__OpOther__Group_2__0() throws RecognitionException;
-     void rule__OpOther__Group_2__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_2__1() throws RecognitionException;
-     void rule__OpOther__Group_2__1__Impl() throws RecognitionException;
-     void rule__OpOther__Group_5__0() throws RecognitionException;
-     void rule__OpOther__Group_5__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_5__1() throws RecognitionException;
-     void rule__OpOther__Group_5__1__Impl() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0__0() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException;
-     void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException;
-     void rule__OpOther__Group_6__0() throws RecognitionException;
-     void rule__OpOther__Group_6__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_6__1() throws RecognitionException;
-     void rule__OpOther__Group_6__1__Impl() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0__0() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException;
-     void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group__0() throws RecognitionException;
-     void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group__1() throws RecognitionException;
-     void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1__0() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1__1() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group__0() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group__1() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__0() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__1() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__2() throws RecognitionException;
-     void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group__0() throws RecognitionException;
-     void rule__XCastedExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group__1() throws RecognitionException;
-     void rule__XCastedExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group_1__0() throws RecognitionException;
-     void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group_1__1() throws RecognitionException;
-     void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0__0() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException;
-     void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XPostfixOperation__Group__0() throws RecognitionException;
-     void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException;
-     void rule__XPostfixOperation__Group__1() throws RecognitionException;
-     void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1__0() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException;
-     void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException;
-     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group__0() throws RecognitionException;
-     void rule__XSetLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group__1() throws RecognitionException;
-     void rule__XSetLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group__2() throws RecognitionException;
-     void rule__XSetLiteral__Group__2__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group__3() throws RecognitionException;
-     void rule__XSetLiteral__Group__3__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group__4() throws RecognitionException;
-     void rule__XSetLiteral__Group__4__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group_3__0() throws RecognitionException;
-     void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group_3__1() throws RecognitionException;
-     void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group_3_1__0() throws RecognitionException;
-     void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException;
-     void rule__XSetLiteral__Group_3_1__1() throws RecognitionException;
-     void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group__0() throws RecognitionException;
-     void rule__XListLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group__1() throws RecognitionException;
-     void rule__XListLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group__2() throws RecognitionException;
-     void rule__XListLiteral__Group__2__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group__3() throws RecognitionException;
-     void rule__XListLiteral__Group__3__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group__4() throws RecognitionException;
-     void rule__XListLiteral__Group__4__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group_3__0() throws RecognitionException;
-     void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group_3__1() throws RecognitionException;
-     void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group_3_1__0() throws RecognitionException;
-     void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException;
-     void rule__XListLiteral__Group_3_1__1() throws RecognitionException;
-     void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException;
-     void rule__XClosure__Group__0() throws RecognitionException;
-     void rule__XClosure__Group__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group__1() throws RecognitionException;
-     void rule__XClosure__Group__1__Impl() throws RecognitionException;
-     void rule__XClosure__Group__2() throws RecognitionException;
-     void rule__XClosure__Group__2__Impl() throws RecognitionException;
-     void rule__XClosure__Group__3() throws RecognitionException;
-     void rule__XClosure__Group__3__Impl() throws RecognitionException;
-     void rule__XClosure__Group_0__0() throws RecognitionException;
-     void rule__XClosure__Group_0__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_0_0__0() throws RecognitionException;
-     void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_0_0__1() throws RecognitionException;
-     void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1__0() throws RecognitionException;
-     void rule__XClosure__Group_1__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0__0() throws RecognitionException;
-     void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0__1() throws RecognitionException;
-     void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0__0() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0__1() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException;
-     void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException;
-     void rule__XExpressionInClosure__Group__0() throws RecognitionException;
-     void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException;
-     void rule__XExpressionInClosure__Group__1() throws RecognitionException;
-     void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException;
-     void rule__XExpressionInClosure__Group_1__0() throws RecognitionException;
-     void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException;
-     void rule__XExpressionInClosure__Group_1__1() throws RecognitionException;
-     void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group__0() throws RecognitionException;
-     void rule__XShortClosure__Group__0__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group__1() throws RecognitionException;
-     void rule__XShortClosure__Group__1__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0__0() throws RecognitionException;
-     void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__0() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__1() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__2() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException;
-     void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__0() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__1() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__2() throws RecognitionException;
-     void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__0() throws RecognitionException;
-     void rule__XIfExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__1() throws RecognitionException;
-     void rule__XIfExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__2() throws RecognitionException;
-     void rule__XIfExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__3() throws RecognitionException;
-     void rule__XIfExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__4() throws RecognitionException;
-     void rule__XIfExpression__Group__4__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__5() throws RecognitionException;
-     void rule__XIfExpression__Group__5__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group__6() throws RecognitionException;
-     void rule__XIfExpression__Group__6__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group_6__0() throws RecognitionException;
-     void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException;
-     void rule__XIfExpression__Group_6__1() throws RecognitionException;
-     void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__2() throws RecognitionException;
-     void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__3() throws RecognitionException;
-     void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__4() throws RecognitionException;
-     void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__5() throws RecognitionException;
-     void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group__6() throws RecognitionException;
-     void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__0() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__1() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__2() throws RecognitionException;
-     void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException;
-     void rule__XCasePart__Group__0() throws RecognitionException;
-     void rule__XCasePart__Group__0__Impl() throws RecognitionException;
-     void rule__XCasePart__Group__1() throws RecognitionException;
-     void rule__XCasePart__Group__1__Impl() throws RecognitionException;
-     void rule__XCasePart__Group__2() throws RecognitionException;
-     void rule__XCasePart__Group__2__Impl() throws RecognitionException;
-     void rule__XCasePart__Group__3() throws RecognitionException;
-     void rule__XCasePart__Group__3__Impl() throws RecognitionException;
-     void rule__XCasePart__Group_2__0() throws RecognitionException;
-     void rule__XCasePart__Group_2__0__Impl() throws RecognitionException;
-     void rule__XCasePart__Group_2__1() throws RecognitionException;
-     void rule__XCasePart__Group_2__1__Impl() throws RecognitionException;
-     void rule__XCasePart__Group_3_0__0() throws RecognitionException;
-     void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException;
-     void rule__XCasePart__Group_3_0__1() throws RecognitionException;
-     void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group__0() throws RecognitionException;
-     void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group__1() throws RecognitionException;
-     void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group__2() throws RecognitionException;
-     void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group__3() throws RecognitionException;
-     void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0__0() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException;
-     void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__2() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__3() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__4() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__5() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__6() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__7() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__8() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__9() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__0() throws RecognitionException;
-     void rule__XWhileExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__1() throws RecognitionException;
-     void rule__XWhileExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__2() throws RecognitionException;
-     void rule__XWhileExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__3() throws RecognitionException;
-     void rule__XWhileExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__4() throws RecognitionException;
-     void rule__XWhileExpression__Group__4__Impl() throws RecognitionException;
-     void rule__XWhileExpression__Group__5() throws RecognitionException;
-     void rule__XWhileExpression__Group__5__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__0() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__1() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__2() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__3() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__4() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__5() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__6() throws RecognitionException;
-     void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group__0() throws RecognitionException;
-     void rule__XBlockExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group__1() throws RecognitionException;
-     void rule__XBlockExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group__2() throws RecognitionException;
-     void rule__XBlockExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group__3() throws RecognitionException;
-     void rule__XBlockExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group_2__0() throws RecognitionException;
-     void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException;
-     void rule__XBlockExpression__Group_2__1() throws RecognitionException;
-     void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__0() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__1() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__2() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__3() throws RecognitionException;
-     void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_3__0() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_3__1() throws RecognitionException;
-     void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException;
-     void rule__JvmFormalParameter__Group__0() throws RecognitionException;
-     void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException;
-     void rule__JvmFormalParameter__Group__1() throws RecognitionException;
-     void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException;
-     void rule__FullJvmFormalParameter__Group__0() throws RecognitionException;
-     void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException;
-     void rule__FullJvmFormalParameter__Group__1() throws RecognitionException;
-     void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group__0() throws RecognitionException;
-     void rule__XFeatureCall__Group__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group__1() throws RecognitionException;
-     void rule__XFeatureCall__Group__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group__2() throws RecognitionException;
-     void rule__XFeatureCall__Group__2__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group__3() throws RecognitionException;
-     void rule__XFeatureCall__Group__3__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group__4() throws RecognitionException;
-     void rule__XFeatureCall__Group__4__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__0() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__1() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__2() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__3() throws RecognitionException;
-     void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1_2__0() throws RecognitionException;
-     void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_1_2__1() throws RecognitionException;
-     void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__0() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__1() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__2() throws RecognitionException;
-     void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException;
-     void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__0() throws RecognitionException;
-     void rule__XConstructorCall__Group__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__1() throws RecognitionException;
-     void rule__XConstructorCall__Group__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__2() throws RecognitionException;
-     void rule__XConstructorCall__Group__2__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__3() throws RecognitionException;
-     void rule__XConstructorCall__Group__3__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__4() throws RecognitionException;
-     void rule__XConstructorCall__Group__4__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group__5() throws RecognitionException;
-     void rule__XConstructorCall__Group__5__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__0() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__1() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__2() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__3() throws RecognitionException;
-     void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3_2__0() throws RecognitionException;
-     void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_3_2__1() throws RecognitionException;
-     void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__0() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__1() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__2() throws RecognitionException;
-     void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException;
-     void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException;
-     void rule__XBooleanLiteral__Group__0() throws RecognitionException;
-     void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XBooleanLiteral__Group__1() throws RecognitionException;
-     void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XNullLiteral__Group__0() throws RecognitionException;
-     void rule__XNullLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XNullLiteral__Group__1() throws RecognitionException;
-     void rule__XNullLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XNumberLiteral__Group__0() throws RecognitionException;
-     void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XNumberLiteral__Group__1() throws RecognitionException;
-     void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XStringLiteral__Group__0() throws RecognitionException;
-     void rule__XStringLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XStringLiteral__Group__1() throws RecognitionException;
-     void rule__XStringLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__0() throws RecognitionException;
-     void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__1() throws RecognitionException;
-     void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__2() throws RecognitionException;
-     void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__3() throws RecognitionException;
-     void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__4() throws RecognitionException;
-     void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException;
-     void rule__XTypeLiteral__Group__5() throws RecognitionException;
-     void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException;
-     void rule__XThrowExpression__Group__0() throws RecognitionException;
-     void rule__XThrowExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XThrowExpression__Group__1() throws RecognitionException;
-     void rule__XThrowExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XThrowExpression__Group__2() throws RecognitionException;
-     void rule__XThrowExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XReturnExpression__Group__0() throws RecognitionException;
-     void rule__XReturnExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XReturnExpression__Group__1() throws RecognitionException;
-     void rule__XReturnExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XReturnExpression__Group__2() throws RecognitionException;
-     void rule__XReturnExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__0() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__1() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__2() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__3() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException;
-     void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException;
-     void rule__XCatchClause__Group__0() throws RecognitionException;
-     void rule__XCatchClause__Group__0__Impl() throws RecognitionException;
-     void rule__XCatchClause__Group__1() throws RecognitionException;
-     void rule__XCatchClause__Group__1__Impl() throws RecognitionException;
-     void rule__XCatchClause__Group__2() throws RecognitionException;
-     void rule__XCatchClause__Group__2__Impl() throws RecognitionException;
-     void rule__XCatchClause__Group__3() throws RecognitionException;
-     void rule__XCatchClause__Group__3__Impl() throws RecognitionException;
-     void rule__XCatchClause__Group__4() throws RecognitionException;
-     void rule__XCatchClause__Group__4__Impl() throws RecognitionException;
-     void rule__Number__Group_1__0() throws RecognitionException;
-     void rule__Number__Group_1__0__Impl() throws RecognitionException;
-     void rule__Number__Group_1__1() throws RecognitionException;
-     void rule__Number__Group_1__1__Impl() throws RecognitionException;
-     void rule__Number__Group_1_1__0() throws RecognitionException;
-     void rule__Number__Group_1_1__0__Impl() throws RecognitionException;
-     void rule__Number__Group_1_1__1() throws RecognitionException;
-     void rule__Number__Group_1_1__1__Impl() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0__0() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0__1() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException;
-     void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException;
-     void rule__ArrayBrackets__Group__0() throws RecognitionException;
-     void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException;
-     void rule__ArrayBrackets__Group__1() throws RecognitionException;
-     void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__0() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__1() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__2() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException;
-     void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException;
-     void rule__JvmUpperBound__Group__0() throws RecognitionException;
-     void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException;
-     void rule__JvmUpperBound__Group__1() throws RecognitionException;
-     void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException;
-     void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException;
-     void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException;
-     void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException;
-     void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException;
-     void rule__JvmLowerBound__Group__0() throws RecognitionException;
-     void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException;
-     void rule__JvmLowerBound__Group__1() throws RecognitionException;
-     void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException;
-     void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException;
-     void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException;
-     void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException;
-     void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException;
-     void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group__0() throws RecognitionException;
-     void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group__1() throws RecognitionException;
-     void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group__2() throws RecognitionException;
-     void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__0() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__0__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__1() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__1__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__2() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__2__Impl() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__3() throws RecognitionException;
-     void rule__XImportDeclaration__Group_1_0__3__Impl() throws RecognitionException;
-     void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException;
-     void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException;
-     void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException;
-     void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException;
-     void rule__EntityMockModel__PackagesAssignment() throws RecognitionException;
-     void rule__EntityMockPackage__ImportsAssignment_1() throws RecognitionException;
-     void rule__EntityMockPackage__RunPriorityAssignment_3_1() throws RecognitionException;
-     void rule__EntityMockPackage__ImportsAssignment_4_1() throws RecognitionException;
-     void rule__EntityMockPackage__DatainterchangesAssignment_5() throws RecognitionException;
-     void rule__EntityMockPackage__ResourcesAssignment_6() throws RecognitionException;
-     void rule__EntityMockPackage__ObjectsAssignment_7() throws RecognitionException;
-     void rule__EntityMockPackage__DatatypesAssignment_8() throws RecognitionException;
-     void rule__EntityMockPackage__EntitiesAssignment_9() throws RecognitionException;
-     void rule__EntityModelImport__ImportedNamespaceAssignment() throws RecognitionException;
-     void rule__RunningDataInterchanges__DatainterchangesAssignment_3() throws RecognitionException;
-     void rule__RunningDataInterchange__DatainterchangeRefAssignment_2() throws RecognitionException;
-     void rule__RunningDataInterchange__FileURLAssignment_4() throws RecognitionException;
-     void rule__EntityMockResources__ResourcesAssignment_3() throws RecognitionException;
-     void rule__EntityMockResource__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockResource__AttributesAssignment_3_2_0() throws RecognitionException;
-     void rule__EntityMockResource__DatarowsAssignment_6() throws RecognitionException;
-     void rule__EntityMockResourceAttribute__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockResourceDataRow__ValuesAssignment_2_1_0() throws RecognitionException;
-     void rule__EntityMockObjects__ObjectsAssignment_3() throws RecognitionException;
-     void rule__EntityMockObject__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObject__EnumerationsAssignment_3() throws RecognitionException;
-     void rule__EntityMockObject__AttributesAssignment_4() throws RecognitionException;
-     void rule__EntityMockObject__CalculationsAssignment_5() throws RecognitionException;
-     void rule__EntityMockObjectEnum__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectEnum__UsingResourceAssignment_3() throws RecognitionException;
-     void rule__EntityMockDataTypes__DatatypesAssignment_3() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectPlainValue__ValuesAssignment_3_0() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__ResourceEnumAssignment_3() throws RecognitionException;
-     void rule__EntityMockObjectResourceValue__ResourceAttributeAssignment_4_1() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__EnumerationAssignment_3() throws RecognitionException;
-     void rule__EntityMockObjectArrayValue__ItemsAssignment_5() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__DatarowAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectItemValue__ValuesAssignment_3_0() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__NameAssignment_2() throws RecognitionException;
-     void rule__EntityMockObjectEmbed__ObjectAssignment_4() throws RecognitionException;
-     void rule__EntityMockObjectFunction__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectFunction__OftypeAssignment_3() throws RecognitionException;
-     void rule__EntityMockObjectFunction__ParamsAssignment_6_0() throws RecognitionException;
-     void rule__EntityMockObjectFunction__ParamsAssignment_6_1_1() throws RecognitionException;
-     void rule__EntityMockObjectFunction__BodyAssignment_8() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__ParameterTypeAssignment_0() throws RecognitionException;
-     void rule__EntityMockObjectFunctionParameter__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectFill__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockObjectFill__FillerTypeAssignment_3() throws RecognitionException;
-     void rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1() throws RecognitionException;
-     void rule__PropertyFillerDatePast__DatePastYearsAssignment_1() throws RecognitionException;
-     void rule__PropertyFillerDateRange__DateBeginYearsAssignment_1() throws RecognitionException;
-     void rule__PropertyFillerDateRange__DateEndYearsAssignment_3() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1() throws RecognitionException;
-     void rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1() throws RecognitionException;
-     void rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerTextRandom__ItemsAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerTextParagraphs__CountAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerTextSentences__CountAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerTextWords__CountAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1() throws RecognitionException;
-     void rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2() throws RecognitionException;
-     void rule__EntityMockDataType__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockEntities__EntitiesAssignment_3() throws RecognitionException;
-     void rule__EntityMockEntity__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockEntity__EntityRefAssignment_3() throws RecognitionException;
-     void rule__EntityMockEntity__MinRowsAssignment_4_0_1() throws RecognitionException;
-     void rule__EntityMockEntity__MaxRowsAssignment_4_0_3() throws RecognitionException;
-     void rule__EntityMockEntity__TemporariesAssignment_4_0_5() throws RecognitionException;
-     void rule__EntityMockEntity__AttributesAssignment_4_0_6() throws RecognitionException;
-     void rule__EntityMockEntity__CalculationsAssignment_4_0_7() throws RecognitionException;
-     void rule__EntityMockEntity__ByResourceAssignment_4_1_1() throws RecognitionException;
-     void rule__EntityMockEntity__ByResourceAttributesAssignment_4_1_3() throws RecognitionException;
-     void rule__EntityMockEntity__CreateBlobMappingAssignment_4_1_4() throws RecognitionException;
-     void rule__EntityMockEntity__IteratorAssignment_4_2_1() throws RecognitionException;
-     void rule__EntityMockEntity__IterateAssignment_4_2_3() throws RecognitionException;
-     void rule__EntityMockEntity__TemporariesAssignment_4_2_5() throws RecognitionException;
-     void rule__EntityMockEntity__AttributesAssignment_4_2_6() throws RecognitionException;
-     void rule__EntityMockEntity__CalculationsAssignment_4_2_7() throws RecognitionException;
-     void rule__IntegerIterate__FromAssignment_1() throws RecognitionException;
-     void rule__IntegerIterate__UntilAssignment_3() throws RecognitionException;
-     void rule__IntegerIterate__StepAssignment_5() throws RecognitionException;
-     void rule__DateIterate__FromAssignment_1() throws RecognitionException;
-     void rule__DateIterate__UntilAssignment_3() throws RecognitionException;
-     void rule__DateIterate__StepCountAssignment_5() throws RecognitionException;
-     void rule__DateIterate__StepTypeAssignment_6() throws RecognitionException;
-     void rule__Date__YesterdayAssignment_0() throws RecognitionException;
-     void rule__Date__TodayAssignment_1() throws RecognitionException;
-     void rule__Date__TomorrowAssignment_2() throws RecognitionException;
-     void rule__Date__YearAssignment_3_0() throws RecognitionException;
-     void rule__Date__MonthAssignment_3_2() throws RecognitionException;
-     void rule__Date__DayAssignment_3_4() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__AttributeRefAssignment_2() throws RecognitionException;
-     void rule__EntityMockByResourceAttribute__ResourceAttributeAssignment_4() throws RecognitionException;
-     void rule__EntityMockTemporary__NameAssignment_1() throws RecognitionException;
-     void rule__EntityMockTemporary__ObjectAssignment_3() throws RecognitionException;
-     void rule__EntityMockEntityFunction__AttributeRefAssignment_1() throws RecognitionException;
-     void rule__EntityMockEntityFunction__ParamsAssignment_4_0() throws RecognitionException;
-     void rule__EntityMockEntityFunction__ParamsAssignment_4_1_1() throws RecognitionException;
-     void rule__EntityMockEntityFunction__BodyAssignment_6() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__AttributeRefAssignment_0() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_0() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_1_1() throws RecognitionException;
-     void rule__EntityMockEntityFunctionParameter__ReferenceRefAssignment_1_3() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__TemporaryAssignment_1() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__EmbeddedAssignment_2_1() throws RecognitionException;
-     void rule__EntityMockReferencedObjectAttribute__AttributeAssignment_4() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__AttributeRefAssignment_0_1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__ReferenceAssignment_0_2_1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__ResourceEnumAssignment_1_1() throws RecognitionException;
-     void rule__EntityMockAttributeByObject__ResourceAttributeAssignment_1_3() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__AttributeRefAssignment_1() throws RecognitionException;
-     void rule__EntityMockAttributeFiller__FillerTypeAssignment_3() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__AttributeRefAssignment_1() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__MockedEntityAssignment_3_1() throws RecognitionException;
-     void rule__EntityMockAttributeByReference__OptionalForAssignment_4_1() throws RecognitionException;
-     void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException;
-     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException;
-     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException;
-     void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException;
-     void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException;
-     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException;
-     void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException;
-     void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException;
-     void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException;
-     void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException;
-     void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
-     void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException;
-     void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException;
-     void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
-     void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException;
-     void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
-     void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException;
-     void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException;
-     void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException;
-     void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException;
-     void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException;
-     void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException;
-     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException;
-     void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException;
-     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException;
-     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException;
-     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException;
-     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException;
-     void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException;
-     void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
-     void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException;
-     void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
-     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException;
-     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException;
-     void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException;
-     void rule__XClosure__ExpressionAssignment_2() throws RecognitionException;
-     void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException;
-     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException;
-     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException;
-     void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException;
-     void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException;
-     void rule__XIfExpression__IfAssignment_3() throws RecognitionException;
-     void rule__XIfExpression__ThenAssignment_5() throws RecognitionException;
-     void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException;
-     void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException;
-     void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException;
-     void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException;
-     void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException;
-     void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException;
-     void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException;
-     void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException;
-     void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException;
-     void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException;
-     void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException;
-     void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException;
-     void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException;
-     void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException;
-     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException;
-     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException;
-     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException;
-     void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException;
-     void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException;
-     void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException;
-     void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException;
-     void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException;
-     void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException;
-     void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException;
-     void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException;
-     void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException;
-     void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException;
-     void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException;
-     void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
-     void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException;
-     void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
-     void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException;
-     void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException;
-     void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException;
-     void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException;
-     void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException;
-     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException;
-     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException;
-     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException;
-     void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException;
-     void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException;
-     void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException;
-     void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException;
-     void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException;
-     void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException;
-     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException;
-     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException;
-     void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException;
-     void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException;
-     void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException;
-     void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException;
-     void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException;
-     void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException;
-     void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException;
-     void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException;
-     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException;
-     void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException;
-     void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException;
-     void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException;
-     void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException;
-     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException;
-     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException;
-     void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException;
-     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException;
-     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException;
-     void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException;
-     void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
-     void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException;
-     void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
-     void rule__XImportDeclaration__StaticAssignment_1_0_0() throws RecognitionException;
-     void rule__XImportDeclaration__ExtensionAssignment_1_0_1() throws RecognitionException;
-     void rule__XImportDeclaration__ImportedTypeAssignment_1_0_2() throws RecognitionException;
-     void rule__XImportDeclaration__WildcardAssignment_1_0_3_0() throws RecognitionException;
-     void rule__XImportDeclaration__MemberNameAssignment_1_0_3_1() throws RecognitionException;
-     void rule__XImportDeclaration__ImportedTypeAssignment_1_1() throws RecognitionException;
-     void rule__XImportDeclaration__ImportedNamespaceAssignment_1_2() throws RecognitionException;
-     void synpred41_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred42_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred43_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred68_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred69_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred82_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred90_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred91_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred104_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred108_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred109_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred115_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred198_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred208_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred210_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred211_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred212_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred213_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred214_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred215_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred216_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred217_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred218_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred219_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred221_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred222_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred230_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred237_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred240_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred253_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred254_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred258_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred259_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred260_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred265_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred266_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred267_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred269_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred273_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred275_InternalEntityMockDSL_fragment() throws RecognitionException;   
-     void synpred276_InternalEntityMockDSL_fragment() throws RecognitionException;   
-}
-
-@SuppressWarnings("all")
-abstract class InternalEntityMockDSLParser1 extends AbstractInternalContentAssistParser implements InternalEntityMockDSLParserSignatures {
-
-        InternalEntityMockDSLParser1(TokenStream input) {
-            this(input, new RecognizerSharedState());
-        }
-
-        InternalEntityMockDSLParser1(TokenStream input, RecognizerSharedState state) {
-            super(input, state);
-        }
-
-    public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'existing entities'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'days'", "'weeks'", "'months'", "'years'", "'mock entitymodel for'", "'{'", "'}'", "'run with priority'", "'datainterchanges'", "'datainterchange import'", "'from file'", "'resources'", "'resource'", "'items'", "'attributes'", "'('", "')'", "','", "'objects'", "'object'", "'var'", "'by enum'", "'datatypes'", "'with'", "'switch on'", "'when'", "'embed'", "'defined as'", "'calculate as'", "'based on'", "'randomize'", "'future date'", "'past date'", "'boolean'", "'date in range'", "'up to and including'", "'signed double in range'", "'decimals'", "'round to'", "'signed double from'", "'signed integer in range'", "'signed integer from'", "'text from'", "'paragraps'", "'sentences'", "'words'", "'unsigned double in range'", "'unsigned double from'", "'unsigned integer in range'", "'unsigned integer from'", "'datatype'", "'mock entities'", "'mocking'", "'for entity'", "'rows'", "'to'", "'by resource'", "'iterate'", "'integer from'", "'until'", "'step'", "'date from'", "'every'", "'as'", "'temporary'", "'by object'", "'calculate based on'", "'using'", "'ref'", "'optional for'", "'percent'", "'@'", "']'", "'#'", "'['", "'instanceof'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'createBlobMapping'", "'yesterday'", "'today'", "'tomorrow'", "'::'", "'?.'", "'|'", "'true'"
-    };
-    public static final int T__144=144;
-    public static final int T__143=143;
-    public static final int T__146=146;
-    public static final int RULE_HEX=5;
-    public static final int T__50=50;
-    public static final int T__145=145;
-    public static final int T__140=140;
-    public static final int T__142=142;
-    public static final int T__141=141;
-    public static final int T__59=59;
-    public static final int T__55=55;
-    public static final int T__56=56;
-    public static final int T__57=57;
-    public static final int T__58=58;
-    public static final int T__51=51;
-    public static final int T__137=137;
-    public static final int T__52=52;
-    public static final int T__136=136;
-    public static final int T__53=53;
-    public static final int T__139=139;
-    public static final int T__54=54;
-    public static final int T__138=138;
-    public static final int T__133=133;
-    public static final int T__132=132;
-    public static final int T__60=60;
-    public static final int T__135=135;
-    public static final int T__61=61;
-    public static final int T__134=134;
-    public static final int RULE_ID=4;
-    public static final int T__131=131;
-    public static final int T__130=130;
-    public static final int RULE_INT=6;
-    public static final int T__66=66;
-    public static final int RULE_ML_COMMENT=9;
-    public static final int T__67=67;
-    public static final int T__129=129;
-    public static final int T__68=68;
-    public static final int T__69=69;
-    public static final int T__62=62;
-    public static final int T__126=126;
-    public static final int T__63=63;
-    public static final int T__125=125;
-    public static final int T__64=64;
-    public static final int T__128=128;
-    public static final int T__65=65;
-    public static final int T__127=127;
-    public static final int T__37=37;
-    public static final int T__38=38;
-    public static final int T__39=39;
-    public static final int T__33=33;
-    public static final int T__34=34;
-    public static final int T__35=35;
-    public static final int T__36=36;
-    public static final int T__30=30;
-    public static final int T__31=31;
-    public static final int T__32=32;
-    public static final int T__155=155;
-    public static final int T__154=154;
-    public static final int T__156=156;
-    public static final int T__151=151;
-    public static final int T__150=150;
-    public static final int T__153=153;
-    public static final int T__152=152;
-    public static final int T__48=48;
-    public static final int T__49=49;
-    public static final int T__44=44;
-    public static final int T__45=45;
-    public static final int T__46=46;
-    public static final int T__47=47;
-    public static final int T__40=40;
-    public static final int T__148=148;
-    public static final int T__41=41;
-    public static final int T__147=147;
-    public static final int T__42=42;
-    public static final int T__43=43;
-    public static final int T__149=149;
-    public static final int T__91=91;
-    public static final int T__100=100;
-    public static final int T__92=92;
-    public static final int T__93=93;
-    public static final int T__102=102;
-    public static final int T__94=94;
-    public static final int T__101=101;
-    public static final int T__90=90;
-    public static final int T__19=19;
-    public static final int T__15=15;
-    public static final int T__16=16;
-    public static final int T__17=17;
-    public static final int T__18=18;
-    public static final int T__99=99;
-    public static final int T__13=13;
-    public static final int T__14=14;
-    public static final int T__95=95;
-    public static final int T__96=96;
-    public static final int T__97=97;
-    public static final int T__98=98;
-    public static final int RULE_DECIMAL=7;
-    public static final int T__26=26;
-    public static final int T__27=27;
-    public static final int T__28=28;
-    public static final int T__29=29;
-    public static final int T__22=22;
-    public static final int T__23=23;
-    public static final int T__24=24;
-    public static final int T__25=25;
-    public static final int T__20=20;
-    public static final int T__21=21;
-    public static final int T__122=122;
-    public static final int T__70=70;
-    public static final int T__121=121;
-    public static final int T__71=71;
-    public static final int T__124=124;
-    public static final int T__72=72;
-    public static final int T__123=123;
-    public static final int T__120=120;
-    public static final int RULE_STRING=8;
-    public static final int RULE_SL_COMMENT=10;
-    public static final int T__77=77;
-    public static final int T__119=119;
-    public static final int T__78=78;
-    public static final int T__118=118;
-    public static final int T__79=79;
-    public static final int T__73=73;
-    public static final int T__115=115;
-    public static final int EOF=-1;
-    public static final int T__74=74;
-    public static final int T__114=114;
-    public static final int T__75=75;
-    public static final int T__117=117;
-    public static final int T__76=76;
-    public static final int T__116=116;
-    public static final int T__80=80;
-    public static final int T__111=111;
-    public static final int T__81=81;
-    public static final int T__110=110;
-    public static final int T__82=82;
-    public static final int T__113=113;
-    public static final int T__83=83;
-    public static final int T__112=112;
-    public static final int RULE_WS=11;
-    public static final int RULE_ANY_OTHER=12;
-    public static final int T__88=88;
-    public static final int T__108=108;
-    public static final int T__89=89;
-    public static final int T__107=107;
-    public static final int T__109=109;
-    public static final int T__84=84;
-    public static final int T__104=104;
-    public static final int T__85=85;
-    public static final int T__103=103;
-    public static final int T__86=86;
-    public static final int T__106=106;
-    public static final int T__87=87;
-    public static final int T__105=105;
-
-
-    public String[] getTokenNames() { return InternalEntityMockDSLParser.tokenNames; }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/contentassist/antlr/internal/InternalEntityMockDSL.g"; }
-
-
-     
-     	protected EntityMockDSLGrammarAccess grammarAccess;
-     	
-        public void setGrammarAccess(EntityMockDSLGrammarAccess grammarAccess) {
-        	this.grammarAccess = grammarAccess;
-        }
-        
-        @Override
-        protected Grammar getGrammar() {
-        	return grammarAccess.getGrammar();
-        }
-        
-        @Override
-        protected String getValueForTokenName(String tokenName) {
-        	return tokenName;
-        }
-
-
-
-
-
-    // Delegated rules
-
-    public final boolean synpred258_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred258_InternalEntityMockDSL_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 synpred69_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred69_InternalEntityMockDSL_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 synpred266_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred266_InternalEntityMockDSL_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 synpred254_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred254_InternalEntityMockDSL_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 synpred230_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred230_InternalEntityMockDSL_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 synpred237_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred237_InternalEntityMockDSL_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 synpred41_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred41_InternalEntityMockDSL_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 synpred217_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred217_InternalEntityMockDSL_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 synpred222_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred222_InternalEntityMockDSL_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 synpred267_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred267_InternalEntityMockDSL_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 synpred210_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred210_InternalEntityMockDSL_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 synpred90_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred90_InternalEntityMockDSL_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 synpred269_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred269_InternalEntityMockDSL_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 synpred216_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred216_InternalEntityMockDSL_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 synpred275_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred275_InternalEntityMockDSL_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 synpred42_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred42_InternalEntityMockDSL_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 synpred109_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred109_InternalEntityMockDSL_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 synpred276_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred276_InternalEntityMockDSL_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 synpred208_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred208_InternalEntityMockDSL_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 synpred82_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred82_InternalEntityMockDSL_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 synpred104_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred104_InternalEntityMockDSL_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 synpred211_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred211_InternalEntityMockDSL_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 synpred260_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred260_InternalEntityMockDSL_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 synpred215_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred215_InternalEntityMockDSL_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 synpred43_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred43_InternalEntityMockDSL_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 synpred240_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred240_InternalEntityMockDSL_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 synpred91_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred91_InternalEntityMockDSL_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 synpred108_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred108_InternalEntityMockDSL_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 synpred198_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred198_InternalEntityMockDSL_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 synpred212_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred212_InternalEntityMockDSL_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 synpred219_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred219_InternalEntityMockDSL_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 synpred68_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred68_InternalEntityMockDSL_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 synpred259_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred259_InternalEntityMockDSL_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 synpred265_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred265_InternalEntityMockDSL_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 synpred273_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred273_InternalEntityMockDSL_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 synpred214_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred214_InternalEntityMockDSL_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 synpred253_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred253_InternalEntityMockDSL_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 synpred115_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred115_InternalEntityMockDSL_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 synpred221_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred221_InternalEntityMockDSL_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 synpred218_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred218_InternalEntityMockDSL_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 synpred213_InternalEntityMockDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred213_InternalEntityMockDSL_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 DFA3 dfa3 = new DFA3(this);
-    protected DFA20 dfa20 = new DFA20(this);
-    protected DFA21 dfa21 = new DFA21(this);
-    protected DFA22 dfa22 = new DFA22(this);
-    protected DFA29 dfa29 = new DFA29(this);
-    protected DFA37 dfa37 = new DFA37(this);
-    protected DFA40 dfa40 = new DFA40(this);
-    protected DFA41 dfa41 = new DFA41(this);
-    protected DFA44 dfa44 = new DFA44(this);
-    protected DFA49 dfa49 = new DFA49(this);
-    protected DFA52 dfa52 = new DFA52(this);
-    protected DFA61 dfa61 = new DFA61(this);
-    protected DFA81 dfa81 = new DFA81(this);
-    protected DFA82 dfa82 = new DFA82(this);
-    protected DFA142 dfa142 = new DFA142(this);
-    protected DFA148 dfa148 = new DFA148(this);
-    protected DFA155 dfa155 = new DFA155(this);
-    protected DFA156 dfa156 = new DFA156(this);
-    protected DFA164 dfa164 = new DFA164(this);
-    protected DFA174 dfa174 = new DFA174(this);
-    protected DFA187 dfa187 = new DFA187(this);
-    protected DFA188 dfa188 = new DFA188(this);
-    protected DFA192 dfa192 = new DFA192(this);
-    protected DFA193 dfa193 = new DFA193(this);
-    protected DFA194 dfa194 = new DFA194(this);
-    protected DFA199 dfa199 = new DFA199(this);
-    protected DFA207 dfa207 = new DFA207(this);
-    protected DFA210 dfa210 = new DFA210(this);
-    static final String DFA3_eotS =
-        "\12\uffff";
-    static final String DFA3_eofS =
-        "\12\uffff";
-    static final String DFA3_minS =
-        "\1\110\1\4\1\uffff\1\54\1\4\4\uffff\1\54";
-    static final String DFA3_maxS =
-        "\1\116\1\4\1\uffff\1\122\1\4\4\uffff\1\122";
-    static final String DFA3_acceptS =
-        "\2\uffff\1\4\2\uffff\1\1\1\5\1\3\1\2\1\uffff";
-    static final String DFA3_specialS =
-        "\12\uffff}>";
-    static final String[] DFA3_transitionS = {
-            "\1\1\5\uffff\1\2",
-            "\1\3",
-            "",
-            "\1\4\26\uffff\1\10\7\uffff\1\5\1\7\5\uffff\1\6",
-            "\1\11",
-            "",
-            "",
-            "",
-            "",
-            "\1\4\26\uffff\1\10\7\uffff\1\5\1\7\5\uffff\1\6"
-    };
-
-    static final short[] DFA3_eot = DFA.unpackEncodedString(DFA3_eotS);
-    static final short[] DFA3_eof = DFA.unpackEncodedString(DFA3_eofS);
-    static final char[] DFA3_min = DFA.unpackEncodedStringToUnsignedChars(DFA3_minS);
-    static final char[] DFA3_max = DFA.unpackEncodedStringToUnsignedChars(DFA3_maxS);
-    static final short[] DFA3_accept = DFA.unpackEncodedString(DFA3_acceptS);
-    static final short[] DFA3_special = DFA.unpackEncodedString(DFA3_specialS);
-    static final short[][] DFA3_transition;
-
-    static {
-        int numStates = DFA3_transitionS.length;
-        DFA3_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA3_transition[i] = DFA.unpackEncodedString(DFA3_transitionS[i]);
-        }
-    }
-
-    class DFA3 extends DFA {
-
-        public DFA3(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 3;
-            this.eot = DFA3_eot;
-            this.eof = DFA3_eof;
-            this.min = DFA3_min;
-            this.max = DFA3_max;
-            this.accept = DFA3_accept;
-            this.special = DFA3_special;
-            this.transition = DFA3_transition;
-        }
-        public String getDescription() {
-            return "4004:1: rule__IEntityMockObjectAttribute__Alternatives : ( ( ruleEntityMockObjectResourceValue ) | ( ruleEntityMockObjectPlainValue ) | ( ruleEntityMockObjectArrayValue ) | ( ruleEntityMockObjectEmbed ) | ( ruleEntityMockObjectFill ) );";
-        }
-    }
-    static final String DFA20_eotS =
-        "\43\uffff";
-    static final String DFA20_eofS =
-        "\43\uffff";
-    static final String DFA20_minS =
-        "\1\4\1\0\41\uffff";
-    static final String DFA20_maxS =
-        "\1\u009c\1\0\41\uffff";
-    static final String DFA20_acceptS =
-        "\2\uffff\1\2\37\uffff\1\1";
-    static final String DFA20_specialS =
-        "\1\uffff\1\0\41\uffff}>";
-    static final String[] DFA20_transitionS = {
-            "\1\1\4\2\23\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\5"+
-            "\uffff\1\2\11\uffff\1\2\67\uffff\1\2\1\uffff\2\2\2\uffff\1\2"+
-            "\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
-    static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
-    static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
-    static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
-    static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
-    static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
-    static final short[][] DFA20_transition;
-
-    static {
-        int numStates = DFA20_transitionS.length;
-        DFA20_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
-        }
-    }
-
-    class DFA20 extends DFA {
-
-        public DFA20(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 20;
-            this.eot = DFA20_eot;
-            this.eof = DFA20_eof;
-            this.min = DFA20_min;
-            this.max = DFA20_max;
-            this.accept = DFA20_accept;
-            this.special = DFA20_special;
-            this.transition = DFA20_transition;
-        }
-        public String getDescription() {
-            return "4507:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA20_1 = input.LA(1);
-
-                         
-                        int index20_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred41_InternalEntityMockDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index20_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 20, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA21_eotS =
-        "\43\uffff";
-    static final String DFA21_eofS =
-        "\43\uffff";
-    static final String DFA21_minS =
-        "\1\4\1\0\41\uffff";
-    static final String DFA21_maxS =
-        "\1\u009c\1\0\41\uffff";
-    static final String DFA21_acceptS =
-        "\2\uffff\1\2\37\uffff\1\1";
-    static final String DFA21_specialS =
-        "\1\uffff\1\0\41\uffff}>";
-    static final String[] DFA21_transitionS = {
-            "\5\2\23\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\5\uffff"+
-            "\1\2\11\uffff\1\2\67\uffff\1\2\1\uffff\1\1\1\2\2\uffff\1\2\1"+
-            "\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
-    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
-    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
-    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
-    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
-    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
-    static final short[][] DFA21_transition;
-
-    static {
-        int numStates = DFA21_transitionS.length;
-        DFA21_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
-        }
-    }
-
-    class DFA21 extends DFA {
-
-        public DFA21(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 21;
-            this.eot = DFA21_eot;
-            this.eof = DFA21_eof;
-            this.min = DFA21_min;
-            this.max = DFA21_max;
-            this.accept = DFA21_accept;
-            this.special = DFA21_special;
-            this.transition = DFA21_transition;
-        }
-        public String getDescription() {
-            return "4529:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA21_1 = input.LA(1);
-
-                         
-                        int index21_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred42_InternalEntityMockDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index21_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 21, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA22_eotS =
-        "\43\uffff";
-    static final String DFA22_eofS =
-        "\43\uffff";
-    static final String DFA22_minS =
-        "\1\4\1\0\41\uffff";
-    static final String DFA22_maxS =
-        "\1\u009c\1\0\41\uffff";
-    static final String DFA22_acceptS =
-        "\2\uffff\1\2\37\uffff\1\1";
-    static final String DFA22_specialS =
-        "\1\uffff\1\0\41\uffff}>";
-    static final String[] DFA22_transitionS = {
-            "\5\2\23\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\5\uffff"+
-            "\1\2\11\uffff\1\2\67\uffff\1\2\1\uffff\1\1\1\2\2\uffff\1\2\1"+
-            "\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
-    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
-    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
-    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
-    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
-    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
-    static final short[][] DFA22_transition;
-
-    static {
-        int numStates = DFA22_transitionS.length;
-        DFA22_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
-        }
-    }
-
-    class DFA22 extends DFA {
-
-        public DFA22(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 22;
-            this.eot = DFA22_eot;
-            this.eof = DFA22_eof;
-            this.min = DFA22_min;
-            this.max = DFA22_max;
-            this.accept = DFA22_accept;
-            this.special = DFA22_special;
-            this.transition = DFA22_transition;
-        }
-        public String getDescription() {
-            return "4551:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA22_1 = input.LA(1);
-
-                         
-                        int index22_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred43_InternalEntityMockDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index22_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 22, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA29_eotS =
-        "\13\uffff";
-    static final String DFA29_eofS =
-        "\13\uffff";
-    static final String DFA29_minS =
-        "\1\33\2\uffff\1\33\7\uffff";
-    static final String DFA29_maxS =
-        "\1\42\2\uffff\1\37\7\uffff";
-    static final String DFA29_acceptS =
-        "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
-    static final String DFA29_specialS =
-        "\13\uffff}>";
-    static final String[] DFA29_transitionS = {
-            "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
-            "",
-            "",
-            "\1\11\3\uffff\1\12",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
-    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
-    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
-    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
-    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
-    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
-    static final short[][] DFA29_transition;
-
-    static {
-        int numStates = DFA29_transitionS.length;
-        DFA29_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
-        }
-    }
-
-    class DFA29 extends DFA {
-
-        public DFA29(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 29;
-            this.eot = DFA29_eot;
-            this.eof = DFA29_eof;
-            this.min = DFA29_min;
-            this.max = DFA29_max;
-            this.accept = DFA29_accept;
-            this.special = DFA29_special;
-            this.transition = DFA29_transition;
-        }
-        public String getDescription() {
-            return "4783:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
-        }
-    }
-    static final String DFA37_eotS =
-        "\12\uffff";
-    static final String DFA37_eofS =
-        "\4\uffff\5\3\1\uffff";
-    static final String DFA37_minS =
-        "\1\54\2\4\1\uffff\5\4\1\uffff";
-    static final String DFA37_maxS =
-        "\1\u009a\2\62\1\uffff\5\u009c\1\uffff";
-    static final String DFA37_acceptS =
-        "\3\uffff\1\2\5\uffff\1\1";
-    static final String DFA37_specialS =
-        "\12\uffff}>";
-    static final String[] DFA37_transitionS = {
-            "\1\1\154\uffff\1\2\1\3",
-            "\1\4\27\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
-            "\1\4\27\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
-            "",
-            "\5\3\4\uffff\1\11\2\3\1\uffff\43\3\5\uffff\2\3\10\uffff\3"+
-            "\3\2\uffff\1\3\52\uffff\1\3\10\uffff\27\3\6\uffff\2\3\1\uffff"+
-            "\1\3",
-            "\5\3\4\uffff\1\11\2\3\1\uffff\43\3\5\uffff\2\3\10\uffff\3"+
-            "\3\2\uffff\1\3\52\uffff\1\3\10\uffff\27\3\6\uffff\2\3\1\uffff"+
-            "\1\3",
-            "\5\3\4\uffff\1\11\2\3\1\uffff\43\3\5\uffff\2\3\10\uffff\3"+
-            "\3\2\uffff\1\3\52\uffff\1\3\10\uffff\27\3\6\uffff\2\3\1\uffff"+
-            "\1\3",
-            "\5\3\4\uffff\1\11\2\3\1\uffff\43\3\5\uffff\2\3\10\uffff\3"+
-            "\3\2\uffff\1\3\52\uffff\1\3\10\uffff\27\3\6\uffff\2\3\1\uffff"+
-            "\1\3",
-            "\5\3\4\uffff\1\11\2\3\1\uffff\43\3\5\uffff\2\3\10\uffff\3"+
-            "\3\2\uffff\1\3\52\uffff\1\3\10\uffff\27\3\6\uffff\2\3\1\uffff"+
-            "\1\3",
-            ""
-    };
-
-    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
-    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
-    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
-    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
-    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
-    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
-    static final short[][] DFA37_transition;
-
-    static {
-        int numStates = DFA37_transitionS.length;
-        DFA37_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
-        }
-    }
-
-    class DFA37 extends DFA {
-
-        public DFA37(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 37;
-            this.eot = DFA37_eot;
-            this.eof = DFA37_eof;
-            this.min = DFA37_min;
-            this.max = DFA37_max;
-            this.accept = DFA37_accept;
-            this.special = DFA37_special;
-            this.transition = DFA37_transition;
-        }
-        public String getDescription() {
-            return "5065:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
-        }
-    }
-    static final String DFA40_eotS =
-        "\43\uffff";
-    static final String DFA40_eofS =
-        "\43\uffff";
-    static final String DFA40_minS =
-        "\1\4\2\0\40\uffff";
-    static final String DFA40_maxS =
-        "\1\u009c\2\0\40\uffff";
-    static final String DFA40_acceptS =
-        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
-    static final String DFA40_specialS =
-        "\1\uffff\1\0\1\1\40\uffff}>";
-    static final String[] DFA40_transitionS = {
-            "\1\1\4\5\23\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
-            "\uffff\6\5\5\uffff\1\5\11\uffff\1\2\71\uffff\2\5\2\uffff\1\5"+
-            "\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
-    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
-    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
-    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
-    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
-    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
-    static final short[][] DFA40_transition;
-
-    static {
-        int numStates = DFA40_transitionS.length;
-        DFA40_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
-        }
-    }
-
-    class DFA40 extends DFA {
-
-        public DFA40(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 40;
-            this.eot = DFA40_eot;
-            this.eof = DFA40_eof;
-            this.min = DFA40_min;
-            this.max = DFA40_max;
-            this.accept = DFA40_accept;
-            this.special = DFA40_special;
-            this.transition = DFA40_transition;
-        }
-        public String getDescription() {
-            return "5141:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA40_1 = input.LA(1);
-
-                         
-                        int index40_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred82_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index40_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA40_2 = input.LA(1);
-
-                         
-                        int index40_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred82_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index40_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 40, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA41_eotS =
-        "\40\uffff";
-    static final String DFA41_eofS =
-        "\40\uffff";
-    static final String DFA41_minS =
-        "\1\4\26\uffff\1\0\10\uffff";
-    static final String DFA41_maxS =
-        "\1\u009c\26\uffff\1\0\10\uffff";
-    static final String DFA41_acceptS =
-        "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1"+
-        "\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
-    static final String DFA41_specialS =
-        "\27\uffff\1\0\10\uffff}>";
-    static final String[] DFA41_transitionS = {
-            "\1\5\4\14\23\uffff\1\5\21\uffff\5\5\1\14\5\uffff\1\2\11\uffff"+
-            "\1\35\71\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1"+
-            "\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA41_eot = DFA.unpackEncodedString(DFA41_eotS);
-    static final short[] DFA41_eof = DFA.unpackEncodedString(DFA41_eofS);
-    static final char[] DFA41_min = DFA.unpackEncodedStringToUnsignedChars(DFA41_minS);
-    static final char[] DFA41_max = DFA.unpackEncodedStringToUnsignedChars(DFA41_maxS);
-    static final short[] DFA41_accept = DFA.unpackEncodedString(DFA41_acceptS);
-    static final short[] DFA41_special = DFA.unpackEncodedString(DFA41_specialS);
-    static final short[][] DFA41_transition;
-
-    static {
-        int numStates = DFA41_transitionS.length;
-        DFA41_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA41_transition[i] = DFA.unpackEncodedString(DFA41_transitionS[i]);
-        }
-    }
-
-    class DFA41 extends DFA {
-
-        public DFA41(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 41;
-            this.eot = DFA41_eot;
-            this.eof = DFA41_eof;
-            this.min = DFA41_min;
-            this.max = DFA41_max;
-            this.accept = DFA41_accept;
-            this.special = DFA41_special;
-            this.transition = DFA41_transition;
-        }
-        public String getDescription() {
-            return "5163:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA41_23 = input.LA(1);
-
-                         
-                        int index41_23 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred90_InternalEntityMockDSL()) ) {s = 30;}
-
-                        else if ( (synpred91_InternalEntityMockDSL()) ) {s = 31;}
-
-                         
-                        input.seek(index41_23);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 41, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA44_eotS =
-        "\43\uffff";
-    static final String DFA44_eofS =
-        "\43\uffff";
-    static final String DFA44_minS =
-        "\1\4\1\0\41\uffff";
-    static final String DFA44_maxS =
-        "\1\u009c\1\0\41\uffff";
-    static final String DFA44_acceptS =
-        "\2\uffff\1\2\37\uffff\1\1";
-    static final String DFA44_specialS =
-        "\1\uffff\1\0\41\uffff}>";
-    static final String[] DFA44_transitionS = {
-            "\5\2\23\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff"+
-            "\6\2\5\uffff\1\2\11\uffff\1\1\71\uffff\2\2\2\uffff\1\2\1\uffff"+
-            "\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA44_eot = DFA.unpackEncodedString(DFA44_eotS);
-    static final short[] DFA44_eof = DFA.unpackEncodedString(DFA44_eofS);
-    static final char[] DFA44_min = DFA.unpackEncodedStringToUnsignedChars(DFA44_minS);
-    static final char[] DFA44_max = DFA.unpackEncodedStringToUnsignedChars(DFA44_maxS);
-    static final short[] DFA44_accept = DFA.unpackEncodedString(DFA44_acceptS);
-    static final short[] DFA44_special = DFA.unpackEncodedString(DFA44_specialS);
-    static final short[][] DFA44_transition;
-
-    static {
-        int numStates = DFA44_transitionS.length;
-        DFA44_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA44_transition[i] = DFA.unpackEncodedString(DFA44_transitionS[i]);
-        }
-    }
-
-    class DFA44 extends DFA {
-
-        public DFA44(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 44;
-            this.eot = DFA44_eot;
-            this.eof = DFA44_eof;
-            this.min = DFA44_min;
-            this.max = DFA44_max;
-            this.accept = DFA44_accept;
-            this.special = DFA44_special;
-            this.transition = DFA44_transition;
-        }
-        public String getDescription() {
-            return "5337:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA44_1 = input.LA(1);
-
-                         
-                        int index44_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred104_InternalEntityMockDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index44_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 44, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA49_eotS =
-        "\43\uffff";
-    static final String DFA49_eofS =
-        "\43\uffff";
-    static final String DFA49_minS =
-        "\1\4\2\0\40\uffff";
-    static final String DFA49_maxS =
-        "\1\u009c\2\0\40\uffff";
-    static final String DFA49_acceptS =
-        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
-    static final String DFA49_specialS =
-        "\1\uffff\1\0\1\1\40\uffff}>";
-    static final String[] DFA49_transitionS = {
-            "\1\1\4\5\23\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
-            "\uffff\6\5\5\uffff\1\5\11\uffff\1\2\71\uffff\2\5\2\uffff\1\5"+
-            "\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA49_eot = DFA.unpackEncodedString(DFA49_eotS);
-    static final short[] DFA49_eof = DFA.unpackEncodedString(DFA49_eofS);
-    static final char[] DFA49_min = DFA.unpackEncodedStringToUnsignedChars(DFA49_minS);
-    static final char[] DFA49_max = DFA.unpackEncodedStringToUnsignedChars(DFA49_maxS);
-    static final short[] DFA49_accept = DFA.unpackEncodedString(DFA49_acceptS);
-    static final short[] DFA49_special = DFA.unpackEncodedString(DFA49_specialS);
-    static final short[][] DFA49_transition;
-
-    static {
-        int numStates = DFA49_transitionS.length;
-        DFA49_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA49_transition[i] = DFA.unpackEncodedString(DFA49_transitionS[i]);
-        }
-    }
-
-    class DFA49 extends DFA {
-
-        public DFA49(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 49;
-            this.eot = DFA49_eot;
-            this.eof = DFA49_eof;
-            this.min = DFA49_min;
-            this.max = DFA49_max;
-            this.accept = DFA49_accept;
-            this.special = DFA49_special;
-            this.transition = DFA49_transition;
-        }
-        public String getDescription() {
-            return "5449:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA49_1 = input.LA(1);
-
-                         
-                        int index49_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred109_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index49_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA49_2 = input.LA(1);
-
-                         
-                        int index49_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred109_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index49_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 49, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA52_eotS =
-        "\43\uffff";
-    static final String DFA52_eofS =
-        "\43\uffff";
-    static final String DFA52_minS =
-        "\1\4\2\0\40\uffff";
-    static final String DFA52_maxS =
-        "\1\u009c\2\0\40\uffff";
-    static final String DFA52_acceptS =
-        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
-    static final String DFA52_specialS =
-        "\1\uffff\1\0\1\1\40\uffff}>";
-    static final String[] DFA52_transitionS = {
-            "\1\1\4\5\23\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
-            "\uffff\6\5\5\uffff\1\5\11\uffff\1\2\71\uffff\2\5\2\uffff\1\5"+
-            "\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
-    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
-    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
-    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
-    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
-    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
-    static final short[][] DFA52_transition;
-
-    static {
-        int numStates = DFA52_transitionS.length;
-        DFA52_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
-        }
-    }
-
-    class DFA52 extends DFA {
-
-        public DFA52(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 52;
-            this.eot = DFA52_eot;
-            this.eof = DFA52_eof;
-            this.min = DFA52_min;
-            this.max = DFA52_max;
-            this.accept = DFA52_accept;
-            this.special = DFA52_special;
-            this.transition = DFA52_transition;
-        }
-        public String getDescription() {
-            return "5543:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA52_1 = input.LA(1);
-
-                         
-                        int index52_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred115_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index52_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA52_2 = input.LA(1);
-
-                         
-                        int index52_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred115_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index52_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 52, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA61_eotS =
-        "\7\uffff";
-    static final String DFA61_eofS =
-        "\2\uffff\1\4\2\uffff\1\4\1\uffff";
-    static final String DFA61_minS =
-        "\1\4\1\uffff\1\54\1\4\1\uffff\1\54\1\uffff";
-    static final String DFA61_maxS =
-        "\1\57\1\uffff\1\u0080\1\45\1\uffff\1\u0080\1\uffff";
-    static final String DFA61_acceptS =
-        "\1\uffff\1\1\2\uffff\1\2\1\uffff\1\3";
-    static final String DFA61_specialS =
-        "\7\uffff}>";
-    static final String[] DFA61_transitionS = {
-            "\1\2\52\uffff\1\1",
-            "",
-            "\1\3\123\uffff\1\4",
-            "\1\5\40\uffff\1\6",
-            "",
-            "\1\3\123\uffff\1\4",
-            ""
-    };
-
-    static final short[] DFA61_eot = DFA.unpackEncodedString(DFA61_eotS);
-    static final short[] DFA61_eof = DFA.unpackEncodedString(DFA61_eofS);
-    static final char[] DFA61_min = DFA.unpackEncodedStringToUnsignedChars(DFA61_minS);
-    static final char[] DFA61_max = DFA.unpackEncodedStringToUnsignedChars(DFA61_maxS);
-    static final short[] DFA61_accept = DFA.unpackEncodedString(DFA61_acceptS);
-    static final short[] DFA61_special = DFA.unpackEncodedString(DFA61_specialS);
-    static final short[][] DFA61_transition;
-
-    static {
-        int numStates = DFA61_transitionS.length;
-        DFA61_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA61_transition[i] = DFA.unpackEncodedString(DFA61_transitionS[i]);
-        }
-    }
-
-    class DFA61 extends DFA {
-
-        public DFA61(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 61;
-            this.eot = DFA61_eot;
-            this.eof = DFA61_eof;
-            this.min = DFA61_min;
-            this.max = DFA61_max;
-            this.accept = DFA61_accept;
-            this.special = DFA61_special;
-            this.transition = DFA61_transition;
-        }
-        public String getDescription() {
-            return "5743:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
-        }
-    }
-    static final String DFA81_eotS =
-        "\7\uffff";
-    static final String DFA81_eofS =
-        "\7\uffff";
-    static final String DFA81_minS =
-        "\1\72\1\4\1\uffff\1\54\1\4\1\uffff\1\54";
-    static final String DFA81_maxS =
-        "\1\116\1\4\1\uffff\1\122\1\4\1\uffff\1\122";
-    static final String DFA81_acceptS =
-        "\2\uffff\1\2\2\uffff\1\1\1\uffff";
-    static final String DFA81_specialS =
-        "\7\uffff}>";
-    static final String[] DFA81_transitionS = {
-            "\1\2\15\uffff\1\1\5\uffff\1\2",
-            "\1\3",
-            "",
-            "\1\4\26\uffff\1\2\5\uffff\1\5\1\uffff\2\2\3\uffff\1\2\1\uffff"+
-            "\1\2",
-            "\1\6",
-            "",
-            "\1\4\26\uffff\1\2\5\uffff\1\5\1\uffff\2\2\3\uffff\1\2\1\uffff"+
-            "\1\2"
-    };
-
-    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
-    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
-    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
-    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
-    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
-    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
-    static final short[][] DFA81_transition;
-
-    static {
-        int numStates = DFA81_transitionS.length;
-        DFA81_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
-        }
-    }
-
-    class DFA81 extends DFA {
-
-        public DFA81(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 81;
-            this.eot = DFA81_eot;
-            this.eof = DFA81_eof;
-            this.min = DFA81_min;
-            this.max = DFA81_max;
-            this.accept = DFA81_accept;
-            this.special = DFA81_special;
-            this.transition = DFA81_transition;
-        }
-        public String getDescription() {
-            return "()* loopback of 7985:1: ( rule__EntityMockObject__EnumerationsAssignment_3 )*";
-        }
-    }
-    static final String DFA82_eotS =
-        "\7\uffff";
-    static final String DFA82_eofS =
-        "\7\uffff";
-    static final String DFA82_minS =
-        "\1\72\1\4\2\uffff\1\54\1\4\1\54";
-    static final String DFA82_maxS =
-        "\1\116\1\4\2\uffff\1\122\1\4\1\122";
-    static final String DFA82_acceptS =
-        "\2\uffff\1\2\1\1\3\uffff";
-    static final String DFA82_specialS =
-        "\7\uffff}>";
-    static final String[] DFA82_transitionS = {
-            "\1\2\15\uffff\1\1\5\uffff\1\3",
-            "\1\4",
-            "",
-            "",
-            "\1\5\26\uffff\1\3\7\uffff\2\3\3\uffff\1\2\1\uffff\1\3",
-            "\1\6",
-            "\1\5\26\uffff\1\3\7\uffff\2\3\3\uffff\1\2\1\uffff\1\3"
-    };
-
-    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
-    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
-    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
-    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
-    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
-    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
-    static final short[][] DFA82_transition;
-
-    static {
-        int numStates = DFA82_transitionS.length;
-        DFA82_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
-        }
-    }
-
-    class DFA82 extends DFA {
-
-        public DFA82(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 82;
-            this.eot = DFA82_eot;
-            this.eof = DFA82_eof;
-            this.min = DFA82_min;
-            this.max = DFA82_max;
-            this.accept = DFA82_accept;
-            this.special = DFA82_special;
-            this.transition = DFA82_transition;
-        }
-        public String getDescription() {
-            return "()* loopback of 8014:1: ( rule__EntityMockObject__AttributesAssignment_4 )*";
-        }
-    }
-    static final String DFA142_eotS =
-        "\12\uffff";
-    static final String DFA142_eofS =
-        "\1\10\11\uffff";
-    static final String DFA142_minS =
-        "\1\4\7\0\2\uffff";
-    static final String DFA142_maxS =
-        "\1\u009c\7\0\2\uffff";
-    static final String DFA142_acceptS =
-        "\10\uffff\1\2\1\1";
-    static final String DFA142_specialS =
-        "\1\uffff\1\5\1\3\1\1\1\0\1\6\1\2\1\4\2\uffff}>";
-    static final String[] DFA142_transitionS = {
-            "\5\10\5\uffff\2\10\1\uffff\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6"+
-            "\27\10\5\uffff\2\10\10\uffff\3\10\2\uffff\1\10\52\uffff\1\10"+
-            "\10\uffff\27\10\6\uffff\2\10\1\uffff\1\10",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            ""
-    };
-
-    static final short[] DFA142_eot = DFA.unpackEncodedString(DFA142_eotS);
-    static final short[] DFA142_eof = DFA.unpackEncodedString(DFA142_eofS);
-    static final char[] DFA142_min = DFA.unpackEncodedStringToUnsignedChars(DFA142_minS);
-    static final char[] DFA142_max = DFA.unpackEncodedStringToUnsignedChars(DFA142_maxS);
-    static final short[] DFA142_accept = DFA.unpackEncodedString(DFA142_acceptS);
-    static final short[] DFA142_special = DFA.unpackEncodedString(DFA142_specialS);
-    static final short[][] DFA142_transition;
-
-    static {
-        int numStates = DFA142_transitionS.length;
-        DFA142_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA142_transition[i] = DFA.unpackEncodedString(DFA142_transitionS[i]);
-        }
-    }
-
-    class DFA142 extends DFA {
-
-        public DFA142(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 142;
-            this.eot = DFA142_eot;
-            this.eof = DFA142_eof;
-            this.min = DFA142_min;
-            this.max = DFA142_max;
-            this.accept = DFA142_accept;
-            this.special = DFA142_special;
-            this.transition = DFA142_transition;
-        }
-        public String getDescription() {
-            return "18111:1: ( rule__XAssignment__Group_1_1__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA142_4 = input.LA(1);
-
-                         
-                        int index142_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA142_3 = input.LA(1);
-
-                         
-                        int index142_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA142_6 = input.LA(1);
-
-                         
-                        int index142_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA142_2 = input.LA(1);
-
-                         
-                        int index142_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA142_7 = input.LA(1);
-
-                         
-                        int index142_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA142_1 = input.LA(1);
-
-                         
-                        int index142_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA142_5 = input.LA(1);
-
-                         
-                        int index142_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred208_InternalEntityMockDSL()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index142_5);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 142, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA148_eotS =
-        "\13\uffff";
-    static final String DFA148_eofS =
-        "\1\1\12\uffff";
-    static final String DFA148_minS =
-        "\1\4\1\uffff\10\0\1\uffff";
-    static final String DFA148_maxS =
-        "\1\u009c\1\uffff\10\0\1\uffff";
-    static final String DFA148_acceptS =
-        "\1\uffff\1\2\10\uffff\1\1";
-    static final String DFA148_specialS =
-        "\2\uffff\1\0\1\6\1\3\1\4\1\7\1\1\1\2\1\5\1\uffff}>";
-    static final String[] DFA148_transitionS = {
-            "\5\1\5\uffff\2\1\1\uffff\12\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10"+
-            "\1\11\21\1\5\uffff\2\1\10\uffff\3\1\2\uffff\1\1\52\uffff\1\1"+
-            "\10\uffff\27\1\6\uffff\2\1\1\uffff\1\1",
-            "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            ""
-    };
-
-    static final short[] DFA148_eot = DFA.unpackEncodedString(DFA148_eotS);
-    static final short[] DFA148_eof = DFA.unpackEncodedString(DFA148_eofS);
-    static final char[] DFA148_min = DFA.unpackEncodedStringToUnsignedChars(DFA148_minS);
-    static final char[] DFA148_max = DFA.unpackEncodedStringToUnsignedChars(DFA148_maxS);
-    static final short[] DFA148_accept = DFA.unpackEncodedString(DFA148_acceptS);
-    static final short[] DFA148_special = DFA.unpackEncodedString(DFA148_specialS);
-    static final short[][] DFA148_transition;
-
-    static {
-        int numStates = DFA148_transitionS.length;
-        DFA148_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA148_transition[i] = DFA.unpackEncodedString(DFA148_transitionS[i]);
-        }
-    }
-
-    class DFA148 extends DFA {
-
-        public DFA148(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 148;
-            this.eot = DFA148_eot;
-            this.eof = DFA148_eof;
-            this.min = DFA148_min;
-            this.max = DFA148_max;
-            this.accept = DFA148_accept;
-            this.special = DFA148_special;
-            this.transition = DFA148_transition;
-        }
-        public String getDescription() {
-            return "()* loopback of 19603:1: ( rule__XOtherOperatorExpression__Group_1__0 )*";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA148_2 = input.LA(1);
-
-                         
-                        int index148_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA148_7 = input.LA(1);
-
-                         
-                        int index148_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA148_8 = input.LA(1);
-
-                         
-                        int index148_8 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_8);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA148_4 = input.LA(1);
-
-                         
-                        int index148_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA148_5 = input.LA(1);
-
-                         
-                        int index148_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA148_9 = input.LA(1);
-
-                         
-                        int index148_9 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_9);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA148_3 = input.LA(1);
-
-                         
-                        int index148_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA148_6 = input.LA(1);
-
-                         
-                        int index148_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred214_InternalEntityMockDSL()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index148_6);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 148, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA155_eotS =
-        "\116\uffff";
-    static final String DFA155_eofS =
-        "\1\2\115\uffff";
-    static final String DFA155_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA155_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA155_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA155_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA155_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\1\1\2\2"+
-            "\2\uffff\1\2\52\uffff\1\2\10\uffff\27\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA155_eot = DFA.unpackEncodedString(DFA155_eotS);
-    static final short[] DFA155_eof = DFA.unpackEncodedString(DFA155_eofS);
-    static final char[] DFA155_min = DFA.unpackEncodedStringToUnsignedChars(DFA155_minS);
-    static final char[] DFA155_max = DFA.unpackEncodedStringToUnsignedChars(DFA155_maxS);
-    static final short[] DFA155_accept = DFA.unpackEncodedString(DFA155_acceptS);
-    static final short[] DFA155_special = DFA.unpackEncodedString(DFA155_specialS);
-    static final short[][] DFA155_transition;
-
-    static {
-        int numStates = DFA155_transitionS.length;
-        DFA155_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA155_transition[i] = DFA.unpackEncodedString(DFA155_transitionS[i]);
-        }
-    }
-
-    class DFA155 extends DFA {
-
-        public DFA155(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 155;
-            this.eot = DFA155_eot;
-            this.eof = DFA155_eof;
-            this.min = DFA155_min;
-            this.max = DFA155_max;
-            this.accept = DFA155_accept;
-            this.special = DFA155_special;
-            this.transition = DFA155_transition;
-        }
-        public String getDescription() {
-            return "21430:1: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA155_1 = input.LA(1);
-
-                         
-                        int index155_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred221_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index155_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 155, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA156_eotS =
-        "\116\uffff";
-    static final String DFA156_eofS =
-        "\1\2\115\uffff";
-    static final String DFA156_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA156_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA156_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA156_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA156_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\3\2\2\uffff"+
-            "\1\2\52\uffff\1\2\10\uffff\2\2\1\1\24\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA156_eot = DFA.unpackEncodedString(DFA156_eotS);
-    static final short[] DFA156_eof = DFA.unpackEncodedString(DFA156_eofS);
-    static final char[] DFA156_min = DFA.unpackEncodedStringToUnsignedChars(DFA156_minS);
-    static final char[] DFA156_max = DFA.unpackEncodedStringToUnsignedChars(DFA156_maxS);
-    static final short[] DFA156_accept = DFA.unpackEncodedString(DFA156_acceptS);
-    static final short[] DFA156_special = DFA.unpackEncodedString(DFA156_specialS);
-    static final short[][] DFA156_transition;
-
-    static {
-        int numStates = DFA156_transitionS.length;
-        DFA156_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA156_transition[i] = DFA.unpackEncodedString(DFA156_transitionS[i]);
-        }
-    }
-
-    class DFA156 extends DFA {
-
-        public DFA156(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 156;
-            this.eot = DFA156_eot;
-            this.eof = DFA156_eof;
-            this.min = DFA156_min;
-            this.max = DFA156_max;
-            this.accept = DFA156_accept;
-            this.special = DFA156_special;
-            this.transition = DFA156_transition;
-        }
-        public String getDescription() {
-            return "21458:1: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA156_1 = input.LA(1);
-
-                         
-                        int index156_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred222_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index156_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 156, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA164_eotS =
-        "\46\uffff";
-    static final String DFA164_eofS =
-        "\46\uffff";
-    static final String DFA164_minS =
-        "\1\4\2\0\43\uffff";
-    static final String DFA164_maxS =
-        "\1\u009c\2\0\43\uffff";
-    static final String DFA164_acceptS =
-        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
-    static final String DFA164_specialS =
-        "\1\uffff\1\0\1\1\43\uffff}>";
-    static final String[] DFA164_transitionS = {
-            "\1\1\4\5\23\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3"+
-            "\uffff\7\5\5\uffff\1\5\11\uffff\1\2\4\uffff\1\5\63\uffff\3\5"+
-            "\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1"+
-            "\3\1\5",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA164_eot = DFA.unpackEncodedString(DFA164_eotS);
-    static final short[] DFA164_eof = DFA.unpackEncodedString(DFA164_eofS);
-    static final char[] DFA164_min = DFA.unpackEncodedStringToUnsignedChars(DFA164_minS);
-    static final char[] DFA164_max = DFA.unpackEncodedStringToUnsignedChars(DFA164_maxS);
-    static final short[] DFA164_accept = DFA.unpackEncodedString(DFA164_acceptS);
-    static final short[] DFA164_special = DFA.unpackEncodedString(DFA164_specialS);
-    static final short[][] DFA164_transition;
-
-    static {
-        int numStates = DFA164_transitionS.length;
-        DFA164_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA164_transition[i] = DFA.unpackEncodedString(DFA164_transitionS[i]);
-        }
-    }
-
-    class DFA164 extends DFA {
-
-        public DFA164(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 164;
-            this.eot = DFA164_eot;
-            this.eof = DFA164_eof;
-            this.min = DFA164_min;
-            this.max = DFA164_max;
-            this.accept = DFA164_accept;
-            this.special = DFA164_special;
-            this.transition = DFA164_transition;
-        }
-        public String getDescription() {
-            return "22599:1: ( rule__XClosure__Group_1__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA164_1 = input.LA(1);
-
-                         
-                        int index164_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred230_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index164_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA164_2 = input.LA(1);
-
-                         
-                        int index164_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred230_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index164_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 164, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA174_eotS =
-        "\42\uffff";
-    static final String DFA174_eofS =
-        "\42\uffff";
-    static final String DFA174_minS =
-        "\1\4\2\0\37\uffff";
-    static final String DFA174_maxS =
-        "\1\u009c\2\0\37\uffff";
-    static final String DFA174_acceptS =
-        "\3\uffff\1\1\1\2\35\uffff";
-    static final String DFA174_specialS =
-        "\1\uffff\1\0\1\1\37\uffff}>";
-    static final String[] DFA174_transitionS = {
-            "\1\1\4\4\23\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4"+
-            "\uffff\6\4\5\uffff\1\4\11\uffff\1\2\71\uffff\2\4\2\uffff\1\4"+
-            "\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA174_eot = DFA.unpackEncodedString(DFA174_eotS);
-    static final short[] DFA174_eof = DFA.unpackEncodedString(DFA174_eofS);
-    static final char[] DFA174_min = DFA.unpackEncodedStringToUnsignedChars(DFA174_minS);
-    static final char[] DFA174_max = DFA.unpackEncodedStringToUnsignedChars(DFA174_maxS);
-    static final short[] DFA174_accept = DFA.unpackEncodedString(DFA174_acceptS);
-    static final short[] DFA174_special = DFA.unpackEncodedString(DFA174_specialS);
-    static final short[][] DFA174_transition;
-
-    static {
-        int numStates = DFA174_transitionS.length;
-        DFA174_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA174_transition[i] = DFA.unpackEncodedString(DFA174_transitionS[i]);
-        }
-    }
-
-    class DFA174 extends DFA {
-
-        public DFA174(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 174;
-            this.eot = DFA174_eot;
-            this.eof = DFA174_eof;
-            this.min = DFA174_min;
-            this.max = DFA174_max;
-            this.accept = DFA174_accept;
-            this.special = DFA174_special;
-            this.transition = DFA174_transition;
-        }
-        public String getDescription() {
-            return "24267:1: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA174_1 = input.LA(1);
-
-                         
-                        int index174_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred240_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 4;}
-
-                         
-                        input.seek(index174_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA174_2 = input.LA(1);
-
-                         
-                        int index174_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred240_InternalEntityMockDSL()) ) {s = 3;}
-
-                        else if ( (true) ) {s = 4;}
-
-                         
-                        input.seek(index174_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 174, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA187_eotS =
-        "\116\uffff";
-    static final String DFA187_eofS =
-        "\1\2\115\uffff";
-    static final String DFA187_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA187_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA187_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA187_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA187_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\1\1\2\2"+
-            "\2\uffff\1\2\52\uffff\1\2\10\uffff\27\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA187_eot = DFA.unpackEncodedString(DFA187_eotS);
-    static final short[] DFA187_eof = DFA.unpackEncodedString(DFA187_eofS);
-    static final char[] DFA187_min = DFA.unpackEncodedStringToUnsignedChars(DFA187_minS);
-    static final char[] DFA187_max = DFA.unpackEncodedStringToUnsignedChars(DFA187_maxS);
-    static final short[] DFA187_accept = DFA.unpackEncodedString(DFA187_acceptS);
-    static final short[] DFA187_special = DFA.unpackEncodedString(DFA187_specialS);
-    static final short[][] DFA187_transition;
-
-    static {
-        int numStates = DFA187_transitionS.length;
-        DFA187_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA187_transition[i] = DFA.unpackEncodedString(DFA187_transitionS[i]);
-        }
-    }
-
-    class DFA187 extends DFA {
-
-        public DFA187(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 187;
-            this.eot = DFA187_eot;
-            this.eof = DFA187_eof;
-            this.min = DFA187_min;
-            this.max = DFA187_max;
-            this.accept = DFA187_accept;
-            this.special = DFA187_special;
-            this.transition = DFA187_transition;
-        }
-        public String getDescription() {
-            return "26755:1: ( rule__XFeatureCall__Group_3__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA187_1 = input.LA(1);
-
-                         
-                        int index187_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred253_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index187_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 187, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA188_eotS =
-        "\116\uffff";
-    static final String DFA188_eofS =
-        "\1\2\115\uffff";
-    static final String DFA188_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA188_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA188_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA188_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA188_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\3\2\2\uffff"+
-            "\1\2\52\uffff\1\2\10\uffff\2\2\1\1\24\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA188_eot = DFA.unpackEncodedString(DFA188_eotS);
-    static final short[] DFA188_eof = DFA.unpackEncodedString(DFA188_eofS);
-    static final char[] DFA188_min = DFA.unpackEncodedStringToUnsignedChars(DFA188_minS);
-    static final char[] DFA188_max = DFA.unpackEncodedStringToUnsignedChars(DFA188_maxS);
-    static final short[] DFA188_accept = DFA.unpackEncodedString(DFA188_acceptS);
-    static final short[] DFA188_special = DFA.unpackEncodedString(DFA188_specialS);
-    static final short[][] DFA188_transition;
-
-    static {
-        int numStates = DFA188_transitionS.length;
-        DFA188_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA188_transition[i] = DFA.unpackEncodedString(DFA188_transitionS[i]);
-        }
-    }
-
-    class DFA188 extends DFA {
-
-        public DFA188(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 188;
-            this.eot = DFA188_eot;
-            this.eof = DFA188_eof;
-            this.min = DFA188_min;
-            this.max = DFA188_max;
-            this.accept = DFA188_accept;
-            this.special = DFA188_special;
-            this.transition = DFA188_transition;
-        }
-        public String getDescription() {
-            return "26783:1: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA188_1 = input.LA(1);
-
-                         
-                        int index188_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred254_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index188_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 188, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA192_eotS =
-        "\116\uffff";
-    static final String DFA192_eofS =
-        "\1\2\115\uffff";
-    static final String DFA192_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA192_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA192_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA192_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA192_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\13\2\1\1\27\2\5\uffff\2\2\10\uffff"+
-            "\3\2\2\uffff\1\2\52\uffff\1\2\10\uffff\27\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA192_eot = DFA.unpackEncodedString(DFA192_eotS);
-    static final short[] DFA192_eof = DFA.unpackEncodedString(DFA192_eofS);
-    static final char[] DFA192_min = DFA.unpackEncodedStringToUnsignedChars(DFA192_minS);
-    static final char[] DFA192_max = DFA.unpackEncodedStringToUnsignedChars(DFA192_maxS);
-    static final short[] DFA192_accept = DFA.unpackEncodedString(DFA192_acceptS);
-    static final short[] DFA192_special = DFA.unpackEncodedString(DFA192_specialS);
-    static final short[][] DFA192_transition;
-
-    static {
-        int numStates = DFA192_transitionS.length;
-        DFA192_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA192_transition[i] = DFA.unpackEncodedString(DFA192_transitionS[i]);
-        }
-    }
-
-    class DFA192 extends DFA {
-
-        public DFA192(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 192;
-            this.eot = DFA192_eot;
-            this.eof = DFA192_eof;
-            this.min = DFA192_min;
-            this.max = DFA192_max;
-            this.accept = DFA192_accept;
-            this.special = DFA192_special;
-            this.transition = DFA192_transition;
-        }
-        public String getDescription() {
-            return "27321:1: ( rule__XConstructorCall__Group_3__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA192_1 = input.LA(1);
-
-                         
-                        int index192_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred258_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index192_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 192, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA193_eotS =
-        "\116\uffff";
-    static final String DFA193_eofS =
-        "\1\2\115\uffff";
-    static final String DFA193_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA193_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA193_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA193_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA193_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\1\1\2\2"+
-            "\2\uffff\1\2\52\uffff\1\2\10\uffff\27\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA193_eot = DFA.unpackEncodedString(DFA193_eotS);
-    static final short[] DFA193_eof = DFA.unpackEncodedString(DFA193_eofS);
-    static final char[] DFA193_min = DFA.unpackEncodedStringToUnsignedChars(DFA193_minS);
-    static final char[] DFA193_max = DFA.unpackEncodedStringToUnsignedChars(DFA193_maxS);
-    static final short[] DFA193_accept = DFA.unpackEncodedString(DFA193_acceptS);
-    static final short[] DFA193_special = DFA.unpackEncodedString(DFA193_specialS);
-    static final short[][] DFA193_transition;
-
-    static {
-        int numStates = DFA193_transitionS.length;
-        DFA193_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA193_transition[i] = DFA.unpackEncodedString(DFA193_transitionS[i]);
-        }
-    }
-
-    class DFA193 extends DFA {
-
-        public DFA193(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 193;
-            this.eot = DFA193_eot;
-            this.eof = DFA193_eof;
-            this.min = DFA193_min;
-            this.max = DFA193_max;
-            this.accept = DFA193_accept;
-            this.special = DFA193_special;
-            this.transition = DFA193_transition;
-        }
-        public String getDescription() {
-            return "27350:1: ( rule__XConstructorCall__Group_4__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA193_1 = input.LA(1);
-
-                         
-                        int index193_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred259_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index193_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 193, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA194_eotS =
-        "\116\uffff";
-    static final String DFA194_eofS =
-        "\1\2\115\uffff";
-    static final String DFA194_minS =
-        "\1\4\1\0\114\uffff";
-    static final String DFA194_maxS =
-        "\1\u009c\1\0\114\uffff";
-    static final String DFA194_acceptS =
-        "\2\uffff\1\2\112\uffff\1\1";
-    static final String DFA194_specialS =
-        "\1\uffff\1\0\114\uffff}>";
-    static final String[] DFA194_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\43\2\5\uffff\2\2\10\uffff\3\2\2\uffff"+
-            "\1\2\52\uffff\1\2\10\uffff\2\2\1\1\24\2\6\uffff\2\2\1\uffff"+
-            "\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA194_eot = DFA.unpackEncodedString(DFA194_eotS);
-    static final short[] DFA194_eof = DFA.unpackEncodedString(DFA194_eofS);
-    static final char[] DFA194_min = DFA.unpackEncodedStringToUnsignedChars(DFA194_minS);
-    static final char[] DFA194_max = DFA.unpackEncodedStringToUnsignedChars(DFA194_maxS);
-    static final short[] DFA194_accept = DFA.unpackEncodedString(DFA194_acceptS);
-    static final short[] DFA194_special = DFA.unpackEncodedString(DFA194_specialS);
-    static final short[][] DFA194_transition;
-
-    static {
-        int numStates = DFA194_transitionS.length;
-        DFA194_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA194_transition[i] = DFA.unpackEncodedString(DFA194_transitionS[i]);
-        }
-    }
-
-    class DFA194 extends DFA {
-
-        public DFA194(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 194;
-            this.eot = DFA194_eot;
-            this.eof = DFA194_eof;
-            this.min = DFA194_min;
-            this.max = DFA194_max;
-            this.accept = DFA194_accept;
-            this.special = DFA194_special;
-            this.transition = DFA194_transition;
-        }
-        public String getDescription() {
-            return "27378:1: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA194_1 = input.LA(1);
-
-                         
-                        int index194_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred260_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index194_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 194, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA199_eotS =
-        "\116\uffff";
-    static final String DFA199_eofS =
-        "\1\41\115\uffff";
-    static final String DFA199_minS =
-        "\1\4\40\0\55\uffff";
-    static final String DFA199_maxS =
-        "\1\u009c\40\0\55\uffff";
-    static final String DFA199_acceptS =
-        "\41\uffff\1\2\53\uffff\1\1";
-    static final String DFA199_specialS =
-        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
-        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+
-        "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
-    static final String[] DFA199_transitionS = {
-            "\1\1\1\23\1\24\1\25\1\27\5\uffff\2\41\1\uffff\13\41\1\15\6"+
-            "\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\5\uffff"+
-            "\1\12\1\41\10\uffff\1\40\2\41\2\uffff\1\41\52\uffff\1\41\10"+
-            "\uffff\1\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34"+
-            "\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\6\uffff\2\41\1"+
-            "\uffff\1\22",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA199_eot = DFA.unpackEncodedString(DFA199_eotS);
-    static final short[] DFA199_eof = DFA.unpackEncodedString(DFA199_eofS);
-    static final char[] DFA199_min = DFA.unpackEncodedStringToUnsignedChars(DFA199_minS);
-    static final char[] DFA199_max = DFA.unpackEncodedStringToUnsignedChars(DFA199_maxS);
-    static final short[] DFA199_accept = DFA.unpackEncodedString(DFA199_acceptS);
-    static final short[] DFA199_special = DFA.unpackEncodedString(DFA199_specialS);
-    static final short[][] DFA199_transition;
-
-    static {
-        int numStates = DFA199_transitionS.length;
-        DFA199_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA199_transition[i] = DFA.unpackEncodedString(DFA199_transitionS[i]);
-        }
-    }
-
-    class DFA199 extends DFA {
-
-        public DFA199(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 199;
-            this.eot = DFA199_eot;
-            this.eof = DFA199_eof;
-            this.min = DFA199_min;
-            this.max = DFA199_max;
-            this.accept = DFA199_accept;
-            this.special = DFA199_special;
-            this.transition = DFA199_transition;
-        }
-        public String getDescription() {
-            return "28431:1: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA199_1 = input.LA(1);
-
-                         
-                        int index199_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA199_2 = input.LA(1);
-
-                         
-                        int index199_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA199_3 = input.LA(1);
-
-                         
-                        int index199_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA199_4 = input.LA(1);
-
-                         
-                        int index199_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA199_5 = input.LA(1);
-
-                         
-                        int index199_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA199_6 = input.LA(1);
-
-                         
-                        int index199_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA199_7 = input.LA(1);
-
-                         
-                        int index199_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA199_8 = input.LA(1);
-
-                         
-                        int index199_8 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_8);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA199_9 = input.LA(1);
-
-                         
-                        int index199_9 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_9);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA199_10 = input.LA(1);
-
-                         
-                        int index199_10 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_10);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA199_11 = input.LA(1);
-
-                         
-                        int index199_11 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_11);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 11 : 
-                        int LA199_12 = input.LA(1);
-
-                         
-                        int index199_12 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_12);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 12 : 
-                        int LA199_13 = input.LA(1);
-
-                         
-                        int index199_13 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_13);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 13 : 
-                        int LA199_14 = input.LA(1);
-
-                         
-                        int index199_14 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_14);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 14 : 
-                        int LA199_15 = input.LA(1);
-
-                         
-                        int index199_15 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_15);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 15 : 
-                        int LA199_16 = input.LA(1);
-
-                         
-                        int index199_16 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_16);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 16 : 
-                        int LA199_17 = input.LA(1);
-
-                         
-                        int index199_17 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_17);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 17 : 
-                        int LA199_18 = input.LA(1);
-
-                         
-                        int index199_18 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_18);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 18 : 
-                        int LA199_19 = input.LA(1);
-
-                         
-                        int index199_19 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_19);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 19 : 
-                        int LA199_20 = input.LA(1);
-
-                         
-                        int index199_20 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_20);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 20 : 
-                        int LA199_21 = input.LA(1);
-
-                         
-                        int index199_21 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_21);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 21 : 
-                        int LA199_22 = input.LA(1);
-
-                         
-                        int index199_22 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_22);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 22 : 
-                        int LA199_23 = input.LA(1);
-
-                         
-                        int index199_23 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_23);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 23 : 
-                        int LA199_24 = input.LA(1);
-
-                         
-                        int index199_24 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_24);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 24 : 
-                        int LA199_25 = input.LA(1);
-
-                         
-                        int index199_25 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_25);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 25 : 
-                        int LA199_26 = input.LA(1);
-
-                         
-                        int index199_26 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_26);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 26 : 
-                        int LA199_27 = input.LA(1);
-
-                         
-                        int index199_27 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_27);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 27 : 
-                        int LA199_28 = input.LA(1);
-
-                         
-                        int index199_28 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_28);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 28 : 
-                        int LA199_29 = input.LA(1);
-
-                         
-                        int index199_29 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_29);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 29 : 
-                        int LA199_30 = input.LA(1);
-
-                         
-                        int index199_30 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_30);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 30 : 
-                        int LA199_31 = input.LA(1);
-
-                         
-                        int index199_31 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_31);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 31 : 
-                        int LA199_32 = input.LA(1);
-
-                         
-                        int index199_32 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred265_InternalEntityMockDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 33;}
-
-                         
-                        input.seek(index199_32);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 199, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA207_eotS =
-        "\120\uffff";
-    static final String DFA207_eofS =
-        "\1\2\117\uffff";
-    static final String DFA207_minS =
-        "\1\4\1\0\116\uffff";
-    static final String DFA207_maxS =
-        "\1\u009c\1\0\116\uffff";
-    static final String DFA207_acceptS =
-        "\2\uffff\1\2\114\uffff\1\1";
-    static final String DFA207_specialS =
-        "\1\uffff\1\0\116\uffff}>";
-    static final String[] DFA207_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\13\2\1\1\27\2\5\uffff\2\2\10\uffff"+
-            "\3\2\2\uffff\1\2\10\uffff\1\2\41\uffff\1\2\10\uffff\27\2\1\uffff"+
-            "\1\2\4\uffff\2\2\1\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA207_eot = DFA.unpackEncodedString(DFA207_eotS);
-    static final short[] DFA207_eof = DFA.unpackEncodedString(DFA207_eofS);
-    static final char[] DFA207_min = DFA.unpackEncodedStringToUnsignedChars(DFA207_minS);
-    static final char[] DFA207_max = DFA.unpackEncodedStringToUnsignedChars(DFA207_maxS);
-    static final short[] DFA207_accept = DFA.unpackEncodedString(DFA207_acceptS);
-    static final short[] DFA207_special = DFA.unpackEncodedString(DFA207_specialS);
-    static final short[][] DFA207_transition;
-
-    static {
-        int numStates = DFA207_transitionS.length;
-        DFA207_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA207_transition[i] = DFA.unpackEncodedString(DFA207_transitionS[i]);
-        }
-    }
-
-    class DFA207 extends DFA {
-
-        public DFA207(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 207;
-            this.eot = DFA207_eot;
-            this.eof = DFA207_eof;
-            this.min = DFA207_min;
-            this.max = DFA207_max;
-            this.accept = DFA207_accept;
-            this.special = DFA207_special;
-            this.transition = DFA207_transition;
-        }
-        public String getDescription() {
-            return "29886:1: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA207_1 = input.LA(1);
-
-                         
-                        int index207_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred273_InternalEntityMockDSL()) ) {s = 79;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index207_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 207, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-    static final String DFA210_eotS =
-        "\120\uffff";
-    static final String DFA210_eofS =
-        "\1\2\117\uffff";
-    static final String DFA210_minS =
-        "\1\4\1\0\116\uffff";
-    static final String DFA210_maxS =
-        "\1\u009c\1\0\116\uffff";
-    static final String DFA210_acceptS =
-        "\2\uffff\1\2\114\uffff\1\1";
-    static final String DFA210_specialS =
-        "\1\uffff\1\0\116\uffff}>";
-    static final String[] DFA210_transitionS = {
-            "\5\2\5\uffff\2\2\1\uffff\13\2\1\1\27\2\5\uffff\2\2\10\uffff"+
-            "\3\2\2\uffff\1\2\10\uffff\1\2\41\uffff\1\2\10\uffff\27\2\1\uffff"+
-            "\1\2\4\uffff\2\2\1\uffff\1\2",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-    };
-
-    static final short[] DFA210_eot = DFA.unpackEncodedString(DFA210_eotS);
-    static final short[] DFA210_eof = DFA.unpackEncodedString(DFA210_eofS);
-    static final char[] DFA210_min = DFA.unpackEncodedStringToUnsignedChars(DFA210_minS);
-    static final char[] DFA210_max = DFA.unpackEncodedStringToUnsignedChars(DFA210_maxS);
-    static final short[] DFA210_accept = DFA.unpackEncodedString(DFA210_acceptS);
-    static final short[] DFA210_special = DFA.unpackEncodedString(DFA210_specialS);
-    static final short[][] DFA210_transition;
-
-    static {
-        int numStates = DFA210_transitionS.length;
-        DFA210_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA210_transition[i] = DFA.unpackEncodedString(DFA210_transitionS[i]);
-        }
-    }
-
-    class DFA210 extends DFA {
-
-        public DFA210(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 210;
-            this.eot = DFA210_eot;
-            this.eof = DFA210_eof;
-            this.min = DFA210_min;
-            this.max = DFA210_max;
-            this.accept = DFA210_accept;
-            this.special = DFA210_special;
-            this.transition = DFA210_transition;
-        }
-        public String getDescription() {
-            return "30197:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA210_1 = input.LA(1);
-
-                         
-                        int index210_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred276_InternalEntityMockDSL()) ) {s = 79;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index210_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 210, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
- 
-
-    
-    protected static class FollowSets000 {
-        public static final BitSet FOLLOW_ruleEntityMockModel_in_entryRuleEntityMockModel67 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockModel74 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockModel__PackagesAssignment_in_ruleEntityMockModel100 = new BitSet(new long[]{0x0100000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockPackage_in_entryRuleEntityMockPackage128 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockPackage135 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__0_in_ruleEntityMockPackage161 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityModelImport_in_entryRuleEntityModelImport188 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityModelImport195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityModelImport__ImportedNamespaceAssignment_in_ruleEntityModelImport221 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockQualifiedNameWithWildCard_in_entryRuleEntityMockQualifiedNameWithWildCard248 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockQualifiedNameWithWildCard255 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group__0_in_ruleEntityMockQualifiedNameWithWildCard281 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRunningDataInterchanges_in_entryRuleRunningDataInterchanges308 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleRunningDataInterchanges315 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__0_in_ruleRunningDataInterchanges341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRunningDataInterchange_in_entryRuleRunningDataInterchange368 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleRunningDataInterchange375 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__0_in_ruleRunningDataInterchange401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResources_in_entryRuleEntityMockResources428 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockResources435 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__0_in_ruleEntityMockResources461 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResource_in_entryRuleEntityMockResource488 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockResource495 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__0_in_ruleEntityMockResource521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResourceAttribute_in_entryRuleEntityMockResourceAttribute548 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockResourceAttribute555 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceAttribute__Group__0_in_ruleEntityMockResourceAttribute581 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResourceDataRow_in_entryRuleEntityMockResourceDataRow608 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockResourceDataRow615 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__0_in_ruleEntityMockResourceDataRow641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjects_in_entryRuleEntityMockObjects668 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjects675 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__0_in_ruleEntityMockObjects701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObject_in_entryRuleEntityMockObject728 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObject735 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__0_in_ruleEntityMockObject761 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectEnum_in_entryRuleEntityMockObjectEnum788 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectEnum795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__0_in_ruleEntityMockObjectEnum821 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockDataTypes_in_entryRuleEntityMockDataTypes848 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockDataTypes855 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__0_in_ruleEntityMockDataTypes881 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIEntityMockObjectAttribute_in_entryRuleIEntityMockObjectAttribute910 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIEntityMockObjectAttribute917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IEntityMockObjectAttribute__Alternatives_in_ruleIEntityMockObjectAttribute943 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectPlainValue_in_entryRuleEntityMockObjectPlainValue970 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectPlainValue977 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__0_in_ruleEntityMockObjectPlainValue1003 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectResourceValue_in_entryRuleEntityMockObjectResourceValue1030 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectResourceValue1037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__0_in_ruleEntityMockObjectResourceValue1063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectArrayValue_in_entryRuleEntityMockObjectArrayValue1090 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectArrayValue1097 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__0_in_ruleEntityMockObjectArrayValue1123 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectItemValue_in_entryRuleEntityMockObjectItemValue1150 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectItemValue1157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__0_in_ruleEntityMockObjectItemValue1183 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectEmbed_in_entryRuleEntityMockObjectEmbed1210 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectEmbed1217 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__0_in_ruleEntityMockObjectEmbed1243 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFunction_in_entryRuleEntityMockObjectFunction1270 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectFunction1277 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__0_in_ruleEntityMockObjectFunction1303 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFunctionParameter_in_entryRuleEntityMockObjectFunctionParameter1330 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectFunctionParameter1337 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__Group__0_in_ruleEntityMockObjectFunctionParameter1363 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFill_in_entryRuleEntityMockObjectFill1390 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockObjectFill1397 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__0_in_ruleEntityMockObjectFill1423 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerType_in_entryRulePropertyFillerType1450 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerType1457 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerType__Alternatives_in_rulePropertyFillerType1483 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDateFuture_in_entryRulePropertyFillerDateFuture1510 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDateFuture1517 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__0_in_rulePropertyFillerDateFuture1543 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDatePast_in_entryRulePropertyFillerDatePast1570 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDatePast1577 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__0_in_rulePropertyFillerDatePast1603 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerBoolean_in_entryRulePropertyFillerBoolean1630 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerBoolean1637 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerBoolean__Group__0_in_rulePropertyFillerBoolean1663 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDateRange_in_entryRulePropertyFillerDateRange1690 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDateRange1697 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__0_in_rulePropertyFillerDateRange1723 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRange_in_entryRulePropertyFillerSignedDoubleRange1750 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedDoubleRange1757 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__0_in_rulePropertyFillerSignedDoubleRange1783 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRandom_in_entryRulePropertyFillerSignedDoubleRandom1810 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedDoubleRandom1817 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__0_in_rulePropertyFillerSignedDoubleRandom1843 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRange_in_entryRulePropertyFillerSignedIntegerRange1870 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedIntegerRange1877 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__0_in_rulePropertyFillerSignedIntegerRange1903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRandom_in_entryRulePropertyFillerSignedIntegerRandom1930 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedIntegerRandom1937 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__0_in_rulePropertyFillerSignedIntegerRandom1963 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextRandom_in_entryRulePropertyFillerTextRandom1990 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextRandom1997 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__0_in_rulePropertyFillerTextRandom2023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextParagraphs_in_entryRulePropertyFillerTextParagraphs2050 = new BitSet(new long[]{0x0000000000000000L});
-    }
-
-    protected static class FollowSets001 {
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextParagraphs2057 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__0_in_rulePropertyFillerTextParagraphs2083 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextSentences_in_entryRulePropertyFillerTextSentences2110 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextSentences2117 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__0_in_rulePropertyFillerTextSentences2143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextWords_in_entryRulePropertyFillerTextWords2170 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextWords2177 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__0_in_rulePropertyFillerTextWords2203 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRange_in_entryRulePropertyFillerUnsignedDoubleRange2230 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedDoubleRange2237 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__0_in_rulePropertyFillerUnsignedDoubleRange2263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRandom_in_entryRulePropertyFillerUnsignedDoubleRandom2290 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedDoubleRandom2297 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__0_in_rulePropertyFillerUnsignedDoubleRandom2323 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRange_in_entryRulePropertyFillerUnsignedIntegerRange2350 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedIntegerRange2357 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__0_in_rulePropertyFillerUnsignedIntegerRange2383 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRandom_in_entryRulePropertyFillerUnsignedIntegerRandom2410 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedIntegerRandom2417 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__0_in_rulePropertyFillerUnsignedIntegerRandom2443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockDataType_in_entryRuleEntityMockDataType2470 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockDataType2477 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__0_in_ruleEntityMockDataType2503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntities_in_entryRuleEntityMockEntities2530 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockEntities2537 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__0_in_ruleEntityMockEntities2563 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntity_in_entryRuleEntityMockEntity2590 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockEntity2597 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__0_in_ruleEntityMockEntity2623 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIIterate_in_entryRuleIIterate2650 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIIterate2657 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IIterate__Alternatives_in_ruleIIterate2683 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIntegerIterate_in_entryRuleIntegerIterate2710 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIntegerIterate2717 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__0_in_ruleIntegerIterate2743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDateIterate_in_entryRuleDateIterate2770 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleDateIterate2777 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__0_in_ruleDateIterate2803 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDate_in_entryRuleDate2830 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleDate2837 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Alternatives_in_ruleDate2863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockByResourceAttribute_in_entryRuleEntityMockByResourceAttribute2890 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockByResourceAttribute2897 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__0_in_ruleEntityMockByResourceAttribute2923 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockTemporary_in_entryRuleEntityMockTemporary2950 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockTemporary2957 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__0_in_ruleEntityMockTemporary2983 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIEntityMockAttribute_in_entryRuleIEntityMockAttribute3012 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIEntityMockAttribute3019 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IEntityMockAttribute__Alternatives_in_ruleIEntityMockAttribute3045 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunction_in_entryRuleEntityMockEntityFunction3072 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockEntityFunction3079 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__0_in_ruleEntityMockEntityFunction3105 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunctionParameter_in_entryRuleEntityMockEntityFunctionParameter3132 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockEntityFunctionParameter3139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Alternatives_in_ruleEntityMockEntityFunctionParameter3165 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockReferencedObjectAttribute_in_entryRuleEntityMockReferencedObjectAttribute3192 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockReferencedObjectAttribute3199 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__0_in_ruleEntityMockReferencedObjectAttribute3225 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeByObject_in_entryRuleEntityMockAttributeByObject3252 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockAttributeByObject3259 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Alternatives_in_ruleEntityMockAttributeByObject3285 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeFiller_in_entryRuleEntityMockAttributeFiller3312 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockAttributeFiller3319 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__0_in_ruleEntityMockAttributeFiller3345 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeByReference_in_entryRuleEntityMockAttributeByReference3372 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEntityMockAttributeByReference3379 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__0_in_ruleEntityMockAttributeByReference3405 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber3432 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleSignedNumber3439 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SignedNumber__Group__0_in_ruleSignedNumber3465 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_entryRuleUnsignedNumber3492 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUnsignedNumber3499 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0_in_ruleUnsignedNumber3525 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_entryRuleSINT3552 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleSINT3559 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SINT__Group__0_in_ruleSINT3585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName3612 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName3619 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName3645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID3672 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleValidID3679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID3705 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation3731 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation3738 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation3764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair3791 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair3798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair3824 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList3851 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList3858 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList3884 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue3911 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue3918 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue3944 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression3971 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression3978 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression4004 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression4031 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression4038 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets002 {
-        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression4064 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment4090 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment4097 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment4123 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4150 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign4157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign4184 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4212 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign4219 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign4245 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4272 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression4279 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression4305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr4332 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr4339 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_14_in_ruleOpOr4366 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression4394 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression4401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression4427 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd4454 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd4461 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_15_in_ruleOpAnd4488 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression4516 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression4523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression4549 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality4576 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality4583 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality4609 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression4636 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression4643 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression4669 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare4696 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare4703 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare4729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression4756 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression4763 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression4789 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther4816 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther4823 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther4849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression4876 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression4883 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression4909 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd4936 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd4943 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd4969 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression4996 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression5003 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression5029 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti5056 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti5063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti5089 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation5116 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation5123 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation5149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary5176 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary5183 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary5209 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression5236 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression5243 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression5269 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation5296 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation5303 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation5329 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix5356 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix5363 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix5389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall5416 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall5423 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall5449 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression5476 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression5483 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression5509 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral5536 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral5543 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral5569 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral5596 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral5603 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral5629 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral5656 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral5663 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral5689 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral5716 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral5723 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral5749 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure5776 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure5783 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure5809 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure5836 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure5843 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure5869 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure5896 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure5903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure5929 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression5956 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression5963 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression5989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression6016 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression6023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression6049 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets003 {
-        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression6076 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression6083 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression6109 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart6136 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart6143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart6169 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression6196 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression6203 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression6229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression6256 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression6263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression6289 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression6316 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression6323 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression6349 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression6376 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression6383 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression6409 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression6436 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression6443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression6469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration6496 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration6503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration6529 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration6556 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration6563 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration6589 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter6616 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter6623 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter6649 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter6676 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter6683 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter6709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall6736 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall6743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall6769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID6796 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID6803 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID6829 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper6856 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper6863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper6889 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall6916 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall6923 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall6949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral6976 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral6983 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral7009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral7036 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral7043 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral7069 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral7096 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral7103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral7129 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral7156 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral7163 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral7189 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral7216 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral7223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral7249 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression7276 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression7283 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression7309 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression7336 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression7343 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression7369 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression7396 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression7403 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression7429 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression7456 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression7463 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression7489 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause7516 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause7523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause7549 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber7581 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNumber7588 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber7618 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference7647 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference7654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference7680 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets7707 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets7714 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets7740 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef7767 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef7774 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef7800 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference7827 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference7834 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference7860 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference7887 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference7894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference7920 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference7947 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference7954 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference7980 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound8007 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound8014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound8040 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded8067 = new BitSet(new long[]{0x0000000000000000L});
-    }
-
-    protected static class FollowSets004 {
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded8074 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded8100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound8127 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound8134 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound8160 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded8187 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded8194 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded8220 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard8249 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard8256 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard8282 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration8311 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration8318 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration8344 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport8371 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport8378 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport8406 = new BitSet(new long[]{0x0000000000000012L});
-        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport8418 = new BitSet(new long[]{0x0000000000000012L});
-        public static final BitSet FOLLOW_rule__EDateStepType__Alternatives_in_ruleEDateStepType8458 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectResourceValue_in_rule__IEntityMockObjectAttribute__Alternatives8494 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectPlainValue_in_rule__IEntityMockObjectAttribute__Alternatives8511 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectArrayValue_in_rule__IEntityMockObjectAttribute__Alternatives8528 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectEmbed_in_rule__IEntityMockObjectAttribute__Alternatives8545 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFill_in_rule__IEntityMockObjectAttribute__Alternatives8562 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDateFuture_in_rule__PropertyFillerType__Alternatives8594 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDatePast_in_rule__PropertyFillerType__Alternatives8611 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerDateRange_in_rule__PropertyFillerType__Alternatives8628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerBoolean_in_rule__PropertyFillerType__Alternatives8645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRange_in_rule__PropertyFillerType__Alternatives8662 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRandom_in_rule__PropertyFillerType__Alternatives8679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRange_in_rule__PropertyFillerType__Alternatives8696 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRandom_in_rule__PropertyFillerType__Alternatives8713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextRandom_in_rule__PropertyFillerType__Alternatives8730 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextParagraphs_in_rule__PropertyFillerType__Alternatives8747 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextSentences_in_rule__PropertyFillerType__Alternatives8764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerTextWords_in_rule__PropertyFillerType__Alternatives8781 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRange_in_rule__PropertyFillerType__Alternatives8798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRandom_in_rule__PropertyFillerType__Alternatives8815 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRange_in_rule__PropertyFillerType__Alternatives8832 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRandom_in_rule__PropertyFillerType__Alternatives8849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_08881 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_08899 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_28932 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_28950 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_08983 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_09001 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_29034 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_29052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_09085 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_09103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_29136 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_29154 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_09187 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_09205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_29238 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_29256 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__0_in_rule__EntityMockEntity__Alternatives_49289 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__0_in_rule__EntityMockEntity__Alternatives_49307 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__0_in_rule__EntityMockEntity__Alternatives_49325 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIntegerIterate_in_rule__IIterate__Alternatives9358 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDateIterate_in_rule__IIterate__Alternatives9375 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__YesterdayAssignment_0_in_rule__Date__Alternatives9407 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__TodayAssignment_1_in_rule__Date__Alternatives9425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__TomorrowAssignment_2_in_rule__Date__Alternatives9443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__0_in_rule__Date__Alternatives9461 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeByObject_in_rule__IEntityMockAttribute__Alternatives9495 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeFiller_in_rule__IEntityMockAttribute__Alternatives9512 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockAttributeByReference_in_rule__IEntityMockAttribute__Alternatives9529 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__AttributeRefAssignment_0_in_rule__EntityMockEntityFunctionParameter__Alternatives9561 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__0_in_rule__EntityMockEntityFunctionParameter__Alternatives9579 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__0_in_rule__EntityMockAttributeByObject__Alternatives9612 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__0_in_rule__EntityMockAttributeByObject__Alternatives9630 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_16_in_rule__EntityMockAttributeByReference__Alternatives_39664 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__MockedEntityAssignment_3_1_in_rule__EntityMockAttributeByReference__Alternatives_39683 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_19716 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_19734 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives9767 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives9785 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives9818 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives9836 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives9868 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives9885 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives9917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives9935 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_17_in_rule__OpMultiAssign__Alternatives9969 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_18_in_rule__OpMultiAssign__Alternatives9989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_19_in_rule__OpMultiAssign__Alternatives10009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_20_in_rule__OpMultiAssign__Alternatives10029 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_21_in_rule__OpMultiAssign__Alternatives10049 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives10068 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives10086 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_22_in_rule__OpEquality__Alternatives10120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_23_in_rule__OpEquality__Alternatives10140 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_24_in_rule__OpEquality__Alternatives10160 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_25_in_rule__OpEquality__Alternatives10180 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_110214 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_110232 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_26_in_rule__OpCompare__Alternatives10266 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives10285 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpCompare__Alternatives10304 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets005 {
-        public static final BitSet FOLLOW_28_in_rule__OpCompare__Alternatives10324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_29_in_rule__OpOther__Alternatives10359 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_30_in_rule__OpOther__Alternatives10379 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives10398 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_31_in_rule__OpOther__Alternatives10417 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_32_in_rule__OpOther__Alternatives10437 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives10456 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives10474 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_33_in_rule__OpOther__Alternatives10493 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_34_in_rule__OpOther__Alternatives10513 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_110547 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpOther__Alternatives_5_110566 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_110600 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpOther__Alternatives_6_110619 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_32_in_rule__OpOther__Alternatives_6_110639 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_35_in_rule__OpAdd__Alternatives10674 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__OpAdd__Alternatives10694 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_37_in_rule__OpMulti__Alternatives10729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_38_in_rule__OpMulti__Alternatives10749 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_39_in_rule__OpMulti__Alternatives10769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_40_in_rule__OpMulti__Alternatives10789 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives10823 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives10841 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__OpUnary__Alternatives10874 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__OpUnary__Alternatives10894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_35_in_rule__OpUnary__Alternatives10914 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_42_in_rule__OpPostfix__Alternatives10949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_43_in_rule__OpPostfix__Alternatives10969 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_111003 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_111021 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_111055 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_111074 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_111108 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_111127 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_111145 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_111178 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_111196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives11229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives11246 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives11263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives11281 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives11299 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives11316 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives11333 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives11351 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives11369 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives11386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives11403 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives11420 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives11437 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives11454 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives11471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives11503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives11521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives11539 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives11556 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives11573 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives11590 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives11607 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives11639 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives11656 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_211688 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_211706 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_311739 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_311757 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives11790 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives11807 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_111839 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_45_in_rule__XVariableDeclaration__Alternatives_111858 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_211892 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_211910 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_111943 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_111961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives11994 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_46_in_rule__FeatureCallID__Alternatives12012 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_47_in_rule__FeatureCallID__Alternatives12032 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_48_in_rule__FeatureCallID__Alternatives12052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_49_in_rule__FeatureCallID__Alternatives12072 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives12106 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_50_in_rule__IdOrSuper__Alternatives12124 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_112158 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_112176 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_51_in_rule__XBooleanLiteral__Alternatives_112210 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_112229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_312262 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_312280 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives12313 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives12330 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_012363 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_012380 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_112412 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_112429 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives12461 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives12479 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives12511 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives12528 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_212560 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_212578 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_112611 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_112629 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets006 {
-        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_112647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_312680 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_312698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_52_in_rule__EDateStepType__Alternatives12732 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_53_in_rule__EDateStepType__Alternatives12753 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_54_in_rule__EDateStepType__Alternatives12774 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_55_in_rule__EDateStepType__Alternatives12795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__0__Impl_in_rule__EntityMockPackage__Group__012828 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__1_in_rule__EntityMockPackage__Group__012831 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_56_in_rule__EntityMockPackage__Group__0__Impl12859 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__1__Impl_in_rule__EntityMockPackage__Group__112890 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__2_in_rule__EntityMockPackage__Group__112893 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__ImportsAssignment_1_in_rule__EntityMockPackage__Group__1__Impl12920 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__2__Impl_in_rule__EntityMockPackage__Group__212950 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__3_in_rule__EntityMockPackage__Group__212953 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockPackage__Group__2__Impl12981 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__3__Impl_in_rule__EntityMockPackage__Group__313012 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__4_in_rule__EntityMockPackage__Group__313015 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_3__0_in_rule__EntityMockPackage__Group__3__Impl13042 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__4__Impl_in_rule__EntityMockPackage__Group__413073 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__5_in_rule__EntityMockPackage__Group__413076 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_4__0_in_rule__EntityMockPackage__Group__4__Impl13103 = new BitSet(new long[]{0x0001000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__5__Impl_in_rule__EntityMockPackage__Group__513134 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__6_in_rule__EntityMockPackage__Group__513137 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__DatainterchangesAssignment_5_in_rule__EntityMockPackage__Group__5__Impl13164 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__6__Impl_in_rule__EntityMockPackage__Group__613195 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__7_in_rule__EntityMockPackage__Group__613198 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__ResourcesAssignment_6_in_rule__EntityMockPackage__Group__6__Impl13225 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__7__Impl_in_rule__EntityMockPackage__Group__713256 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__8_in_rule__EntityMockPackage__Group__713259 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__ObjectsAssignment_7_in_rule__EntityMockPackage__Group__7__Impl13286 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__8__Impl_in_rule__EntityMockPackage__Group__813317 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__9_in_rule__EntityMockPackage__Group__813320 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__DatatypesAssignment_8_in_rule__EntityMockPackage__Group__8__Impl13347 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__9__Impl_in_rule__EntityMockPackage__Group__913378 = new BitSet(new long[]{0x0400000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__10_in_rule__EntityMockPackage__Group__913381 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__EntitiesAssignment_9_in_rule__EntityMockPackage__Group__9__Impl13408 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group__10__Impl_in_rule__EntityMockPackage__Group__1013438 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockPackage__Group__10__Impl13466 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_3__0__Impl_in_rule__EntityMockPackage__Group_3__013519 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_3__1_in_rule__EntityMockPackage__Group_3__013522 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_59_in_rule__EntityMockPackage__Group_3__0__Impl13550 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_3__1__Impl_in_rule__EntityMockPackage__Group_3__113581 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__RunPriorityAssignment_3_1_in_rule__EntityMockPackage__Group_3__1__Impl13608 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_4__0__Impl_in_rule__EntityMockPackage__Group_4__013642 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_4__1_in_rule__EntityMockPackage__Group_4__013645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_48_in_rule__EntityMockPackage__Group_4__0__Impl13673 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__Group_4__1__Impl_in_rule__EntityMockPackage__Group_4__113704 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockPackage__ImportsAssignment_4_1_in_rule__EntityMockPackage__Group_4__1__Impl13731 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group__0__Impl_in_rule__EntityMockQualifiedNameWithWildCard__Group__013765 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group__1_in_rule__EntityMockQualifiedNameWithWildCard__Group__013768 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockQualifiedNameWithWildCard__Group__0__Impl13795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group__1__Impl_in_rule__EntityMockQualifiedNameWithWildCard__Group__113824 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group_1__0_in_rule__EntityMockQualifiedNameWithWildCard__Group__1__Impl13851 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__EntityMockQualifiedNameWithWildCard__Group_1__013886 = new BitSet(new long[]{0x0000002000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group_1__1_in_rule__EntityMockQualifiedNameWithWildCard__Group_1__013889 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockQualifiedNameWithWildCard__Group_1__0__Impl13917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__EntityMockQualifiedNameWithWildCard__Group_1__113948 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_37_in_rule__EntityMockQualifiedNameWithWildCard__Group_1__1__Impl13976 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__0__Impl_in_rule__RunningDataInterchanges__Group__014011 = new BitSet(new long[]{0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__1_in_rule__RunningDataInterchanges__Group__014014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__1__Impl_in_rule__RunningDataInterchanges__Group__114072 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__2_in_rule__RunningDataInterchanges__Group__114075 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__RunningDataInterchanges__Group__1__Impl14103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__2__Impl_in_rule__RunningDataInterchanges__Group__214134 = new BitSet(new long[]{0x2400000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__3_in_rule__RunningDataInterchanges__Group__214137 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__RunningDataInterchanges__Group__2__Impl14165 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__3__Impl_in_rule__RunningDataInterchanges__Group__314196 = new BitSet(new long[]{0x2400000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__4_in_rule__RunningDataInterchanges__Group__314199 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__DatainterchangesAssignment_3_in_rule__RunningDataInterchanges__Group__3__Impl14226 = new BitSet(new long[]{0x2000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchanges__Group__4__Impl_in_rule__RunningDataInterchanges__Group__414257 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__RunningDataInterchanges__Group__4__Impl14285 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__0__Impl_in_rule__RunningDataInterchange__Group__014326 = new BitSet(new long[]{0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__1_in_rule__RunningDataInterchange__Group__014329 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__1__Impl_in_rule__RunningDataInterchange__Group__114387 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__2_in_rule__RunningDataInterchange__Group__114390 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__RunningDataInterchange__Group__1__Impl14418 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__2__Impl_in_rule__RunningDataInterchange__Group__214449 = new BitSet(new long[]{0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__3_in_rule__RunningDataInterchange__Group__214452 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__DatainterchangeRefAssignment_2_in_rule__RunningDataInterchange__Group__2__Impl14479 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__3__Impl_in_rule__RunningDataInterchange__Group__314509 = new BitSet(new long[]{0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__4_in_rule__RunningDataInterchange__Group__314512 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__RunningDataInterchange__Group__3__Impl14540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__Group__4__Impl_in_rule__RunningDataInterchange__Group__414571 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RunningDataInterchange__FileURLAssignment_4_in_rule__RunningDataInterchange__Group__4__Impl14598 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__0__Impl_in_rule__EntityMockResources__Group__014638 = new BitSet(new long[]{0x8000000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__1_in_rule__EntityMockResources__Group__014641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__1__Impl_in_rule__EntityMockResources__Group__114699 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__2_in_rule__EntityMockResources__Group__114702 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_63_in_rule__EntityMockResources__Group__1__Impl14730 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__2__Impl_in_rule__EntityMockResources__Group__214761 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__3_in_rule__EntityMockResources__Group__214764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockResources__Group__2__Impl14792 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__3__Impl_in_rule__EntityMockResources__Group__314823 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__4_in_rule__EntityMockResources__Group__314826 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__ResourcesAssignment_3_in_rule__EntityMockResources__Group__3__Impl14853 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__EntityMockResources__Group__4__Impl_in_rule__EntityMockResources__Group__414884 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockResources__Group__4__Impl14912 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__0__Impl_in_rule__EntityMockResource__Group__014953 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__1_in_rule__EntityMockResource__Group__014956 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets007 {
-        public static final BitSet FOLLOW_64_in_rule__EntityMockResource__Group__0__Impl14984 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__1__Impl_in_rule__EntityMockResource__Group__115015 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__2_in_rule__EntityMockResource__Group__115018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__NameAssignment_1_in_rule__EntityMockResource__Group__1__Impl15045 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__2__Impl_in_rule__EntityMockResource__Group__215075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000006L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__3_in_rule__EntityMockResource__Group__215078 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockResource__Group__2__Impl15106 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__3__Impl_in_rule__EntityMockResource__Group__315137 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000006L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__4_in_rule__EntityMockResource__Group__315140 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__0_in_rule__EntityMockResource__Group__3__Impl15167 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__4__Impl_in_rule__EntityMockResource__Group__415198 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__5_in_rule__EntityMockResource__Group__415201 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_65_in_rule__EntityMockResource__Group__4__Impl15229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__5__Impl_in_rule__EntityMockResource__Group__515260 = new BitSet(new long[]{0x0400000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__6_in_rule__EntityMockResource__Group__515263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockResource__Group__5__Impl15291 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__6__Impl_in_rule__EntityMockResource__Group__615322 = new BitSet(new long[]{0x0400000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__7_in_rule__EntityMockResource__Group__615325 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__DatarowsAssignment_6_in_rule__EntityMockResource__Group__6__Impl15352 = new BitSet(new long[]{0x0000000000000012L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__7__Impl_in_rule__EntityMockResource__Group__715383 = new BitSet(new long[]{0x0400000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__8_in_rule__EntityMockResource__Group__715386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockResource__Group__7__Impl15414 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group__8__Impl_in_rule__EntityMockResource__Group__815445 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockResource__Group__8__Impl15473 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__0__Impl_in_rule__EntityMockResource__Group_3__015522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__1_in_rule__EntityMockResource__Group_3__015525 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_66_in_rule__EntityMockResource__Group_3__0__Impl15553 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__1__Impl_in_rule__EntityMockResource__Group_3__115584 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__2_in_rule__EntityMockResource__Group_3__115587 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockResource__Group_3__1__Impl15615 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__2__Impl_in_rule__EntityMockResource__Group_3__215646 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__3_in_rule__EntityMockResource__Group_3__215649 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3_2__0_in_rule__EntityMockResource__Group_3__2__Impl15676 = new BitSet(new long[]{0x0000000000000012L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3__3__Impl_in_rule__EntityMockResource__Group_3__315707 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockResource__Group_3__3__Impl15735 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3_2__0__Impl_in_rule__EntityMockResource__Group_3_2__015774 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3_2__1_in_rule__EntityMockResource__Group_3_2__015777 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__AttributesAssignment_3_2_0_in_rule__EntityMockResource__Group_3_2__0__Impl15804 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResource__Group_3_2__1__Impl_in_rule__EntityMockResource__Group_3_2__115834 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockResource__Group_3_2__1__Impl15863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceAttribute__Group__0__Impl_in_rule__EntityMockResourceAttribute__Group__015900 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceAttribute__Group__1_in_rule__EntityMockResourceAttribute__Group__015903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceAttribute__Group__1__Impl_in_rule__EntityMockResourceAttribute__Group__115961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceAttribute__NameAssignment_1_in_rule__EntityMockResourceAttribute__Group__1__Impl15988 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__0__Impl_in_rule__EntityMockResourceDataRow__Group__016022 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__1_in_rule__EntityMockResourceDataRow__Group__016025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__1__Impl_in_rule__EntityMockResourceDataRow__Group__116083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__2_in_rule__EntityMockResourceDataRow__Group__116086 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__NameAssignment_1_in_rule__EntityMockResourceDataRow__Group__1__Impl16113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group__2__Impl_in_rule__EntityMockResourceDataRow__Group__216143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__0_in_rule__EntityMockResourceDataRow__Group__2__Impl16170 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__0__Impl_in_rule__EntityMockResourceDataRow__Group_2__016207 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__1_in_rule__EntityMockResourceDataRow__Group_2__016210 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockResourceDataRow__Group_2__0__Impl16238 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__1__Impl_in_rule__EntityMockResourceDataRow__Group_2__116269 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__2_in_rule__EntityMockResourceDataRow__Group_2__116272 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2_1__0_in_rule__EntityMockResourceDataRow__Group_2__1__Impl16299 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2__2__Impl_in_rule__EntityMockResourceDataRow__Group_2__216330 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockResourceDataRow__Group_2__2__Impl16358 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2_1__0__Impl_in_rule__EntityMockResourceDataRow__Group_2_1__016395 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2_1__1_in_rule__EntityMockResourceDataRow__Group_2_1__016398 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__ValuesAssignment_2_1_0_in_rule__EntityMockResourceDataRow__Group_2_1__0__Impl16425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockResourceDataRow__Group_2_1__1__Impl_in_rule__EntityMockResourceDataRow__Group_2_1__116455 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockResourceDataRow__Group_2_1__1__Impl16484 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__0__Impl_in_rule__EntityMockObjects__Group__016521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__1_in_rule__EntityMockObjects__Group__016524 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__1__Impl_in_rule__EntityMockObjects__Group__116582 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__2_in_rule__EntityMockObjects__Group__116585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_70_in_rule__EntityMockObjects__Group__1__Impl16613 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__2__Impl_in_rule__EntityMockObjects__Group__216644 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000080L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__3_in_rule__EntityMockObjects__Group__216647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockObjects__Group__2__Impl16675 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__3__Impl_in_rule__EntityMockObjects__Group__316706 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000080L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__4_in_rule__EntityMockObjects__Group__316709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__ObjectsAssignment_3_in_rule__EntityMockObjects__Group__3__Impl16736 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
-        public static final BitSet FOLLOW_rule__EntityMockObjects__Group__4__Impl_in_rule__EntityMockObjects__Group__416767 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockObjects__Group__4__Impl16795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__0__Impl_in_rule__EntityMockObject__Group__016836 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__1_in_rule__EntityMockObject__Group__016839 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_71_in_rule__EntityMockObject__Group__0__Impl16867 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__1__Impl_in_rule__EntityMockObject__Group__116898 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__2_in_rule__EntityMockObject__Group__116901 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__NameAssignment_1_in_rule__EntityMockObject__Group__1__Impl16928 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__2__Impl_in_rule__EntityMockObject__Group__216958 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__3_in_rule__EntityMockObject__Group__216961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockObject__Group__2__Impl16989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__3__Impl_in_rule__EntityMockObject__Group__317020 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__4_in_rule__EntityMockObject__Group__317023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__EnumerationsAssignment_3_in_rule__EntityMockObject__Group__3__Impl17050 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__4__Impl_in_rule__EntityMockObject__Group__417081 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__5_in_rule__EntityMockObject__Group__417084 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__AttributesAssignment_4_in_rule__EntityMockObject__Group__4__Impl17111 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__5__Impl_in_rule__EntityMockObject__Group__517142 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__6_in_rule__EntityMockObject__Group__517145 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__CalculationsAssignment_5_in_rule__EntityMockObject__Group__5__Impl17172 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockObject__Group__6__Impl_in_rule__EntityMockObject__Group__617203 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockObject__Group__6__Impl17231 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__0__Impl_in_rule__EntityMockObjectEnum__Group__017276 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__1_in_rule__EntityMockObjectEnum__Group__017279 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectEnum__Group__0__Impl17307 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets008 {
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__1__Impl_in_rule__EntityMockObjectEnum__Group__117338 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__2_in_rule__EntityMockObjectEnum__Group__117341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__NameAssignment_1_in_rule__EntityMockObjectEnum__Group__1__Impl17368 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__2__Impl_in_rule__EntityMockObjectEnum__Group__217398 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__3_in_rule__EntityMockObjectEnum__Group__217401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__EntityMockObjectEnum__Group__2__Impl17429 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__Group__3__Impl_in_rule__EntityMockObjectEnum__Group__317460 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEnum__UsingResourceAssignment_3_in_rule__EntityMockObjectEnum__Group__3__Impl17487 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__0__Impl_in_rule__EntityMockDataTypes__Group__017525 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__1_in_rule__EntityMockDataTypes__Group__017528 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__1__Impl_in_rule__EntityMockDataTypes__Group__117586 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__2_in_rule__EntityMockDataTypes__Group__117589 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__EntityMockDataTypes__Group__1__Impl17617 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__2__Impl_in_rule__EntityMockDataTypes__Group__217648 = new BitSet(new long[]{0x0400000000000000L,0x0000004000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__3_in_rule__EntityMockDataTypes__Group__217651 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockDataTypes__Group__2__Impl17679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__3__Impl_in_rule__EntityMockDataTypes__Group__317710 = new BitSet(new long[]{0x0400000000000000L,0x0000004000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__4_in_rule__EntityMockDataTypes__Group__317713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__DatatypesAssignment_3_in_rule__EntityMockDataTypes__Group__3__Impl17740 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataTypes__Group__4__Impl_in_rule__EntityMockDataTypes__Group__417771 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockDataTypes__Group__4__Impl17799 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__0__Impl_in_rule__EntityMockObjectPlainValue__Group__017840 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__1_in_rule__EntityMockObjectPlainValue__Group__017843 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectPlainValue__Group__0__Impl17871 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__1__Impl_in_rule__EntityMockObjectPlainValue__Group__117902 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__2_in_rule__EntityMockObjectPlainValue__Group__117905 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__NameAssignment_1_in_rule__EntityMockObjectPlainValue__Group__1__Impl17932 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__2__Impl_in_rule__EntityMockObjectPlainValue__Group__217962 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__3_in_rule__EntityMockObjectPlainValue__Group__217965 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockObjectPlainValue__Group__2__Impl17993 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__3__Impl_in_rule__EntityMockObjectPlainValue__Group__318024 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__4_in_rule__EntityMockObjectPlainValue__Group__318027 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group_3__0_in_rule__EntityMockObjectPlainValue__Group__3__Impl18054 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group__4__Impl_in_rule__EntityMockObjectPlainValue__Group__418085 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockObjectPlainValue__Group__4__Impl18113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group_3__0__Impl_in_rule__EntityMockObjectPlainValue__Group_3__018154 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group_3__1_in_rule__EntityMockObjectPlainValue__Group_3__018157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__ValuesAssignment_3_0_in_rule__EntityMockObjectPlainValue__Group_3__0__Impl18184 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectPlainValue__Group_3__1__Impl_in_rule__EntityMockObjectPlainValue__Group_3__118214 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockObjectPlainValue__Group_3__1__Impl18243 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__0__Impl_in_rule__EntityMockObjectResourceValue__Group__018280 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__1_in_rule__EntityMockObjectResourceValue__Group__018283 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectResourceValue__Group__0__Impl18311 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__1__Impl_in_rule__EntityMockObjectResourceValue__Group__118342 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__2_in_rule__EntityMockObjectResourceValue__Group__118345 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__NameAssignment_1_in_rule__EntityMockObjectResourceValue__Group__1__Impl18372 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__2__Impl_in_rule__EntityMockObjectResourceValue__Group__218402 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__3_in_rule__EntityMockObjectResourceValue__Group__218405 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__EntityMockObjectResourceValue__Group__2__Impl18433 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__3__Impl_in_rule__EntityMockObjectResourceValue__Group__318464 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__4_in_rule__EntityMockObjectResourceValue__Group__318467 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__ResourceEnumAssignment_3_in_rule__EntityMockObjectResourceValue__Group__3__Impl18494 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group__4__Impl_in_rule__EntityMockObjectResourceValue__Group__418524 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group_4__0_in_rule__EntityMockObjectResourceValue__Group__4__Impl18551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group_4__0__Impl_in_rule__EntityMockObjectResourceValue__Group_4__018592 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group_4__1_in_rule__EntityMockObjectResourceValue__Group_4__018595 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockObjectResourceValue__Group_4__0__Impl18623 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__Group_4__1__Impl_in_rule__EntityMockObjectResourceValue__Group_4__118654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectResourceValue__ResourceAttributeAssignment_4_1_in_rule__EntityMockObjectResourceValue__Group_4__1__Impl18681 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__0__Impl_in_rule__EntityMockObjectArrayValue__Group__018715 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__1_in_rule__EntityMockObjectArrayValue__Group__018718 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectArrayValue__Group__0__Impl18746 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__1__Impl_in_rule__EntityMockObjectArrayValue__Group__118777 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__2_in_rule__EntityMockObjectArrayValue__Group__118780 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__NameAssignment_1_in_rule__EntityMockObjectArrayValue__Group__1__Impl18807 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__2__Impl_in_rule__EntityMockObjectArrayValue__Group__218837 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__3_in_rule__EntityMockObjectArrayValue__Group__218840 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_76_in_rule__EntityMockObjectArrayValue__Group__2__Impl18868 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__3__Impl_in_rule__EntityMockObjectArrayValue__Group__318899 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__4_in_rule__EntityMockObjectArrayValue__Group__318902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__EnumerationAssignment_3_in_rule__EntityMockObjectArrayValue__Group__3__Impl18929 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__4__Impl_in_rule__EntityMockObjectArrayValue__Group__418959 = new BitSet(new long[]{0x0400000000000000L,0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__5_in_rule__EntityMockObjectArrayValue__Group__418962 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockObjectArrayValue__Group__4__Impl18990 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__5__Impl_in_rule__EntityMockObjectArrayValue__Group__519021 = new BitSet(new long[]{0x0400000000000000L,0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__6_in_rule__EntityMockObjectArrayValue__Group__519024 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__ItemsAssignment_5_in_rule__EntityMockObjectArrayValue__Group__5__Impl19051 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectArrayValue__Group__6__Impl_in_rule__EntityMockObjectArrayValue__Group__619082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockObjectArrayValue__Group__6__Impl19110 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__0__Impl_in_rule__EntityMockObjectItemValue__Group__019155 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__1_in_rule__EntityMockObjectItemValue__Group__019158 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_77_in_rule__EntityMockObjectItemValue__Group__0__Impl19186 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__1__Impl_in_rule__EntityMockObjectItemValue__Group__119217 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__2_in_rule__EntityMockObjectItemValue__Group__119220 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__DatarowAssignment_1_in_rule__EntityMockObjectItemValue__Group__1__Impl19247 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__2__Impl_in_rule__EntityMockObjectItemValue__Group__219277 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__3_in_rule__EntityMockObjectItemValue__Group__219280 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockObjectItemValue__Group__2__Impl19308 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__3__Impl_in_rule__EntityMockObjectItemValue__Group__319339 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__4_in_rule__EntityMockObjectItemValue__Group__319342 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group_3__0_in_rule__EntityMockObjectItemValue__Group__3__Impl19369 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group__4__Impl_in_rule__EntityMockObjectItemValue__Group__419400 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockObjectItemValue__Group__4__Impl19428 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group_3__0__Impl_in_rule__EntityMockObjectItemValue__Group_3__019469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group_3__1_in_rule__EntityMockObjectItemValue__Group_3__019472 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__ValuesAssignment_3_0_in_rule__EntityMockObjectItemValue__Group_3__0__Impl19499 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectItemValue__Group_3__1__Impl_in_rule__EntityMockObjectItemValue__Group_3__119529 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockObjectItemValue__Group_3__1__Impl19558 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__0__Impl_in_rule__EntityMockObjectEmbed__Group__019595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__1_in_rule__EntityMockObjectEmbed__Group__019598 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets009 {
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__1__Impl_in_rule__EntityMockObjectEmbed__Group__119656 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__2_in_rule__EntityMockObjectEmbed__Group__119659 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_78_in_rule__EntityMockObjectEmbed__Group__1__Impl19687 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__2__Impl_in_rule__EntityMockObjectEmbed__Group__219718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__3_in_rule__EntityMockObjectEmbed__Group__219721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__NameAssignment_2_in_rule__EntityMockObjectEmbed__Group__2__Impl19748 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__3__Impl_in_rule__EntityMockObjectEmbed__Group__319778 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__4_in_rule__EntityMockObjectEmbed__Group__319781 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_79_in_rule__EntityMockObjectEmbed__Group__3__Impl19809 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__Group__4__Impl_in_rule__EntityMockObjectEmbed__Group__419840 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectEmbed__ObjectAssignment_4_in_rule__EntityMockObjectEmbed__Group__4__Impl19867 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__0__Impl_in_rule__EntityMockObjectFunction__Group__019907 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__1_in_rule__EntityMockObjectFunction__Group__019910 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectFunction__Group__0__Impl19938 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__1__Impl_in_rule__EntityMockObjectFunction__Group__119969 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__2_in_rule__EntityMockObjectFunction__Group__119972 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__NameAssignment_1_in_rule__EntityMockObjectFunction__Group__1__Impl19999 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__2__Impl_in_rule__EntityMockObjectFunction__Group__220029 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__3_in_rule__EntityMockObjectFunction__Group__220032 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_80_in_rule__EntityMockObjectFunction__Group__2__Impl20060 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__3__Impl_in_rule__EntityMockObjectFunction__Group__320091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__4_in_rule__EntityMockObjectFunction__Group__320094 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__OftypeAssignment_3_in_rule__EntityMockObjectFunction__Group__3__Impl20121 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__4__Impl_in_rule__EntityMockObjectFunction__Group__420151 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__5_in_rule__EntityMockObjectFunction__Group__420154 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_81_in_rule__EntityMockObjectFunction__Group__4__Impl20182 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__5__Impl_in_rule__EntityMockObjectFunction__Group__520213 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000018L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__6_in_rule__EntityMockObjectFunction__Group__520216 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockObjectFunction__Group__5__Impl20244 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__6__Impl_in_rule__EntityMockObjectFunction__Group__620275 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000018L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__7_in_rule__EntityMockObjectFunction__Group__620278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6__0_in_rule__EntityMockObjectFunction__Group__6__Impl20305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__7__Impl_in_rule__EntityMockObjectFunction__Group__720336 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__8_in_rule__EntityMockObjectFunction__Group__720339 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockObjectFunction__Group__7__Impl20367 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group__8__Impl_in_rule__EntityMockObjectFunction__Group__820398 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__BodyAssignment_8_in_rule__EntityMockObjectFunction__Group__8__Impl20425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6__0__Impl_in_rule__EntityMockObjectFunction__Group_6__020473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6__1_in_rule__EntityMockObjectFunction__Group_6__020476 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__ParamsAssignment_6_0_in_rule__EntityMockObjectFunction__Group_6__0__Impl20503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6__1__Impl_in_rule__EntityMockObjectFunction__Group_6__120533 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6_1__0_in_rule__EntityMockObjectFunction__Group_6__1__Impl20560 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6_1__0__Impl_in_rule__EntityMockObjectFunction__Group_6_1__020595 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6_1__1_in_rule__EntityMockObjectFunction__Group_6_1__020598 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockObjectFunction__Group_6_1__0__Impl20626 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__Group_6_1__1__Impl_in_rule__EntityMockObjectFunction__Group_6_1__120657 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunction__ParamsAssignment_6_1_1_in_rule__EntityMockObjectFunction__Group_6_1__1__Impl20684 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__Group__0__Impl_in_rule__EntityMockObjectFunctionParameter__Group__020718 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__Group__1_in_rule__EntityMockObjectFunctionParameter__Group__020721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__ParameterTypeAssignment_0_in_rule__EntityMockObjectFunctionParameter__Group__0__Impl20748 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__Group__1__Impl_in_rule__EntityMockObjectFunctionParameter__Group__120778 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFunctionParameter__NameAssignment_1_in_rule__EntityMockObjectFunctionParameter__Group__1__Impl20805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__0__Impl_in_rule__EntityMockObjectFill__Group__020839 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__1_in_rule__EntityMockObjectFill__Group__020842 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockObjectFill__Group__0__Impl20870 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__1__Impl_in_rule__EntityMockObjectFill__Group__120901 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__2_in_rule__EntityMockObjectFill__Group__120904 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__NameAssignment_1_in_rule__EntityMockObjectFill__Group__1__Impl20931 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__2__Impl_in_rule__EntityMockObjectFill__Group__220961 = new BitSet(new long[]{0x0000000000000000L,0x0000003FF9780000L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__3_in_rule__EntityMockObjectFill__Group__220964 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_rule__EntityMockObjectFill__Group__2__Impl20992 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__Group__3__Impl_in_rule__EntityMockObjectFill__Group__321023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockObjectFill__FillerTypeAssignment_3_in_rule__EntityMockObjectFill__Group__3__Impl21050 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__0__Impl_in_rule__PropertyFillerDateFuture__Group__021088 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__1_in_rule__PropertyFillerDateFuture__Group__021091 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_83_in_rule__PropertyFillerDateFuture__Group__0__Impl21119 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__1__Impl_in_rule__PropertyFillerDateFuture__Group__121150 = new BitSet(new long[]{0x0080000000000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__2_in_rule__PropertyFillerDateFuture__Group__121153 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1_in_rule__PropertyFillerDateFuture__Group__1__Impl21180 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__2__Impl_in_rule__PropertyFillerDateFuture__Group__221210 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_55_in_rule__PropertyFillerDateFuture__Group__2__Impl21238 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__0__Impl_in_rule__PropertyFillerDatePast__Group__021275 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__1_in_rule__PropertyFillerDatePast__Group__021278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_84_in_rule__PropertyFillerDatePast__Group__0__Impl21306 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__1__Impl_in_rule__PropertyFillerDatePast__Group__121337 = new BitSet(new long[]{0x0080000000000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__2_in_rule__PropertyFillerDatePast__Group__121340 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__DatePastYearsAssignment_1_in_rule__PropertyFillerDatePast__Group__1__Impl21367 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__2__Impl_in_rule__PropertyFillerDatePast__Group__221397 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_55_in_rule__PropertyFillerDatePast__Group__2__Impl21425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerBoolean__Group__0__Impl_in_rule__PropertyFillerBoolean__Group__021462 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerBoolean__Group__1_in_rule__PropertyFillerBoolean__Group__021465 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerBoolean__Group__1__Impl_in_rule__PropertyFillerBoolean__Group__121523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_85_in_rule__PropertyFillerBoolean__Group__1__Impl21551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__0__Impl_in_rule__PropertyFillerDateRange__Group__021586 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__1_in_rule__PropertyFillerDateRange__Group__021589 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_86_in_rule__PropertyFillerDateRange__Group__0__Impl21617 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__1__Impl_in_rule__PropertyFillerDateRange__Group__121648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__2_in_rule__PropertyFillerDateRange__Group__121651 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__DateBeginYearsAssignment_1_in_rule__PropertyFillerDateRange__Group__1__Impl21678 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__2__Impl_in_rule__PropertyFillerDateRange__Group__221708 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__3_in_rule__PropertyFillerDateRange__Group__221711 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__PropertyFillerDateRange__Group__2__Impl21739 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__3__Impl_in_rule__PropertyFillerDateRange__Group__321770 = new BitSet(new long[]{0x0080000000000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__4_in_rule__PropertyFillerDateRange__Group__321773 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__DateEndYearsAssignment_3_in_rule__PropertyFillerDateRange__Group__3__Impl21800 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__4__Impl_in_rule__PropertyFillerDateRange__Group__421830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_55_in_rule__PropertyFillerDateRange__Group__4__Impl21858 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__021899 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800800L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__1_in_rule__PropertyFillerSignedDoubleRange__Group__021902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_88_in_rule__PropertyFillerSignedDoubleRange__Group__0__Impl21930 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets010 {
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__121961 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800800L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__2_in_rule__PropertyFillerSignedDoubleRange__Group__121964 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__0_in_rule__PropertyFillerSignedDoubleRange__Group__1__Impl21991 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__2__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__222022 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__3_in_rule__PropertyFillerSignedDoubleRange__Group__222025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__PropertyFillerSignedDoubleRange__Group__2__Impl22053 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__3__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__322084 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__4_in_rule__PropertyFillerSignedDoubleRange__Group__322087 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3_in_rule__PropertyFillerSignedDoubleRange__Group__3__Impl22114 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__4__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__422144 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__5_in_rule__PropertyFillerSignedDoubleRange__Group__422147 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_89_in_rule__PropertyFillerSignedDoubleRange__Group__4__Impl22175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__5__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__522206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__0_in_rule__PropertyFillerSignedDoubleRange__Group__5__Impl22233 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__022276 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__1_in_rule__PropertyFillerSignedDoubleRange__Group_1__022279 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Alternatives_1_0_in_rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl22306 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__122337 = new BitSet(new long[]{0x0000001000000050L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__2_in_rule__PropertyFillerSignedDoubleRange__Group_1__122340 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl22368 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__222399 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Alternatives_1_2_in_rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl22426 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_5__022462 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__1_in_rule__PropertyFillerSignedDoubleRange__Group_5__022465 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl22493 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_5__122524 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1_in_rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl22551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__0__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__022585 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__1_in_rule__PropertyFillerSignedDoubleRandom__Group__022588 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_91_in_rule__PropertyFillerSignedDoubleRandom__Group__0__Impl22616 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__1__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__122647 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__2_in_rule__PropertyFillerSignedDoubleRandom__Group__122650 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__PropertyFillerSignedDoubleRandom__Group__1__Impl22678 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__222709 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__3_in_rule__PropertyFillerSignedDoubleRandom__Group__222712 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl22741 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl22753 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__3__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__322786 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__PropertyFillerSignedDoubleRandom__Group__3__Impl22814 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__022853 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__1_in_rule__PropertyFillerSignedIntegerRange__Group__022856 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__122914 = new BitSet(new long[]{0x0000001000000050L,0x0000000004800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__2_in_rule__PropertyFillerSignedIntegerRange__Group__122917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_92_in_rule__PropertyFillerSignedIntegerRange__Group__1__Impl22945 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__2__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__222976 = new BitSet(new long[]{0x0000001000000050L,0x0000000004800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__3_in_rule__PropertyFillerSignedIntegerRange__Group__222979 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__0_in_rule__PropertyFillerSignedIntegerRange__Group__2__Impl23006 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__3__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__323037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__0_in_rule__PropertyFillerSignedIntegerRange__Group__3__Impl23064 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__023103 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__1_in_rule__PropertyFillerSignedIntegerRange__Group_2__023106 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Alternatives_2_0_in_rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl23133 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__123164 = new BitSet(new long[]{0x0000001000000050L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__2_in_rule__PropertyFillerSignedIntegerRange__Group_2__123167 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl23195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__223226 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Alternatives_2_2_in_rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl23253 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_3__023289 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__1_in_rule__PropertyFillerSignedIntegerRange__Group_3__023292 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl23320 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_3__123351 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1_in_rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl23378 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__0__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__023412 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__1_in_rule__PropertyFillerSignedIntegerRandom__Group__023415 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_93_in_rule__PropertyFillerSignedIntegerRandom__Group__0__Impl23443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__1__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__123474 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__2_in_rule__PropertyFillerSignedIntegerRandom__Group__123477 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__PropertyFillerSignedIntegerRandom__Group__1__Impl23505 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__223536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__3_in_rule__PropertyFillerSignedIntegerRandom__Group__223539 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl23568 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl23580 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__3__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__323613 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__PropertyFillerSignedIntegerRandom__Group__3__Impl23641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__0__Impl_in_rule__PropertyFillerTextRandom__Group__023680 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__1_in_rule__PropertyFillerTextRandom__Group__023683 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_94_in_rule__PropertyFillerTextRandom__Group__0__Impl23711 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__1__Impl_in_rule__PropertyFillerTextRandom__Group__123742 = new BitSet(new long[]{0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__2_in_rule__PropertyFillerTextRandom__Group__123745 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__PropertyFillerTextRandom__Group__1__Impl23773 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__2__Impl_in_rule__PropertyFillerTextRandom__Group__223804 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__3_in_rule__PropertyFillerTextRandom__Group__223807 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__ItemsAssignment_2_in_rule__PropertyFillerTextRandom__Group__2__Impl23836 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__ItemsAssignment_2_in_rule__PropertyFillerTextRandom__Group__2__Impl23848 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__3__Impl_in_rule__PropertyFillerTextRandom__Group__323881 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__PropertyFillerTextRandom__Group__3__Impl23909 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__0__Impl_in_rule__PropertyFillerTextParagraphs__Group__023948 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__1_in_rule__PropertyFillerTextParagraphs__Group__023951 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__1__Impl_in_rule__PropertyFillerTextParagraphs__Group__124009 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__2_in_rule__PropertyFillerTextParagraphs__Group__124012 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_95_in_rule__PropertyFillerTextParagraphs__Group__1__Impl24040 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__2__Impl_in_rule__PropertyFillerTextParagraphs__Group__224071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__CountAssignment_2_in_rule__PropertyFillerTextParagraphs__Group__2__Impl24098 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__0__Impl_in_rule__PropertyFillerTextSentences__Group__024135 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__1_in_rule__PropertyFillerTextSentences__Group__024138 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__1__Impl_in_rule__PropertyFillerTextSentences__Group__124196 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__2_in_rule__PropertyFillerTextSentences__Group__124199 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_96_in_rule__PropertyFillerTextSentences__Group__1__Impl24227 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__2__Impl_in_rule__PropertyFillerTextSentences__Group__224258 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__CountAssignment_2_in_rule__PropertyFillerTextSentences__Group__2__Impl24285 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets011 {
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__0__Impl_in_rule__PropertyFillerTextWords__Group__024322 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__1_in_rule__PropertyFillerTextWords__Group__024325 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__1__Impl_in_rule__PropertyFillerTextWords__Group__124383 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__2_in_rule__PropertyFillerTextWords__Group__124386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_97_in_rule__PropertyFillerTextWords__Group__1__Impl24414 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__2__Impl_in_rule__PropertyFillerTextWords__Group__224445 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__CountAssignment_2_in_rule__PropertyFillerTextWords__Group__2__Impl24472 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__024509 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800800L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__1_in_rule__PropertyFillerUnsignedDoubleRange__Group__024512 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_98_in_rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl24540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__124571 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800800L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__2_in_rule__PropertyFillerUnsignedDoubleRange__Group__124574 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__0_in_rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl24601 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__224632 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__3_in_rule__PropertyFillerUnsignedDoubleRange__Group__224635 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl24663 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__324694 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__4_in_rule__PropertyFillerUnsignedDoubleRange__Group__324697 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3_in_rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl24724 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__424754 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__5_in_rule__PropertyFillerUnsignedDoubleRange__Group__424757 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_89_in_rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl24785 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__524816 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__0_in_rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl24843 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__024886 = new BitSet(new long[]{0x0000001000000050L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__1_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__024889 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl24916 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__124947 = new BitSet(new long[]{0x0000001000000050L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__2_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__124950 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl24978 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__225009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl25036 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__025072 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__1_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__025075 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl25103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__125134 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl25161 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__025195 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__1_in_rule__PropertyFillerUnsignedDoubleRandom__Group__025198 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_99_in_rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl25226 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__125257 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__125260 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl25288 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__225319 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__3_in_rule__PropertyFillerUnsignedDoubleRandom__Group__225322 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl25351 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl25363 = new BitSet(new long[]{0x0000001000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__325396 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl25424 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__025463 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__1_in_rule__PropertyFillerUnsignedIntegerRange__Group__025466 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__125524 = new BitSet(new long[]{0x0000000000000050L,0x0000000004800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__2_in_rule__PropertyFillerUnsignedIntegerRange__Group__125527 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_100_in_rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl25555 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__225586 = new BitSet(new long[]{0x0000000000000050L,0x0000000004800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__3_in_rule__PropertyFillerUnsignedIntegerRange__Group__225589 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__0_in_rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl25616 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__325647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__0_in_rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl25674 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__025713 = new BitSet(new long[]{0x0000000000000050L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__1_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__025716 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl25743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__125774 = new BitSet(new long[]{0x0000000000000050L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__2_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__125777 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl25805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__225836 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl25863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__025899 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__1_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__025902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl25930 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__125961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl25988 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__026022 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__1_in_rule__PropertyFillerUnsignedIntegerRandom__Group__026025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_101_in_rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl26053 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__126084 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__126087 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl26115 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__226146 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__3_in_rule__PropertyFillerUnsignedIntegerRandom__Group__226149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl26178 = new BitSet(new long[]{0x0000000000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl26190 = new BitSet(new long[]{0x0000000000000042L});
-        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__326223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl26251 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__0__Impl_in_rule__EntityMockDataType__Group__026290 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__1_in_rule__EntityMockDataType__Group__026293 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_102_in_rule__EntityMockDataType__Group__0__Impl26321 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__1__Impl_in_rule__EntityMockDataType__Group__126352 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__2_in_rule__EntityMockDataType__Group__126355 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__NameAssignment_1_in_rule__EntityMockDataType__Group__1__Impl26382 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__2__Impl_in_rule__EntityMockDataType__Group__226412 = new BitSet(new long[]{0x0400000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__3_in_rule__EntityMockDataType__Group__226415 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockDataType__Group__2__Impl26443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockDataType__Group__3__Impl_in_rule__EntityMockDataType__Group__326474 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockDataType__Group__3__Impl26502 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__0__Impl_in_rule__EntityMockEntities__Group__026541 = new BitSet(new long[]{0x9801000000000000L,0x0000008000000440L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__1_in_rule__EntityMockEntities__Group__026544 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__1__Impl_in_rule__EntityMockEntities__Group__126602 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__2_in_rule__EntityMockEntities__Group__126605 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_103_in_rule__EntityMockEntities__Group__1__Impl26633 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets012 {
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__2__Impl_in_rule__EntityMockEntities__Group__226664 = new BitSet(new long[]{0x0400000000000000L,0x0000010000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__3_in_rule__EntityMockEntities__Group__226667 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockEntities__Group__2__Impl26695 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__3__Impl_in_rule__EntityMockEntities__Group__326726 = new BitSet(new long[]{0x0400000000000000L,0x0000010000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__4_in_rule__EntityMockEntities__Group__326729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__EntitiesAssignment_3_in_rule__EntityMockEntities__Group__3__Impl26756 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntities__Group__4__Impl_in_rule__EntityMockEntities__Group__426787 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockEntities__Group__4__Impl26815 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__0__Impl_in_rule__EntityMockEntity__Group__026856 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__1_in_rule__EntityMockEntity__Group__026859 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_104_in_rule__EntityMockEntity__Group__0__Impl26887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__1__Impl_in_rule__EntityMockEntity__Group__126918 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__2_in_rule__EntityMockEntity__Group__126921 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__NameAssignment_1_in_rule__EntityMockEntity__Group__1__Impl26948 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__2__Impl_in_rule__EntityMockEntity__Group__226978 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__3_in_rule__EntityMockEntity__Group__226981 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_105_in_rule__EntityMockEntity__Group__2__Impl27009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__3__Impl_in_rule__EntityMockEntity__Group__327040 = new BitSet(new long[]{0x0000000000000000L,0x0000340000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__4_in_rule__EntityMockEntity__Group__327043 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__EntityRefAssignment_3_in_rule__EntityMockEntity__Group__3__Impl27070 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group__4__Impl_in_rule__EntityMockEntity__Group__427100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Alternatives_4_in_rule__EntityMockEntity__Group__4__Impl27127 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__0__Impl_in_rule__EntityMockEntity__Group_4_0__027167 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__1_in_rule__EntityMockEntity__Group_4_0__027170 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_106_in_rule__EntityMockEntity__Group_4_0__0__Impl27198 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__1__Impl_in_rule__EntityMockEntity__Group_4_0__127229 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__2_in_rule__EntityMockEntity__Group_4_0__127232 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__MinRowsAssignment_4_0_1_in_rule__EntityMockEntity__Group_4_0__1__Impl27259 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__2__Impl_in_rule__EntityMockEntity__Group_4_0__227289 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__3_in_rule__EntityMockEntity__Group_4_0__227292 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_107_in_rule__EntityMockEntity__Group_4_0__2__Impl27320 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__3__Impl_in_rule__EntityMockEntity__Group_4_0__327351 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__4_in_rule__EntityMockEntity__Group_4_0__327354 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__MaxRowsAssignment_4_0_3_in_rule__EntityMockEntity__Group_4_0__3__Impl27381 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__4__Impl_in_rule__EntityMockEntity__Group_4_0__427411 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__5_in_rule__EntityMockEntity__Group_4_0__427414 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockEntity__Group_4_0__4__Impl27442 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__5__Impl_in_rule__EntityMockEntity__Group_4_0__527473 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__6_in_rule__EntityMockEntity__Group_4_0__527476 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__TemporariesAssignment_4_0_5_in_rule__EntityMockEntity__Group_4_0__5__Impl27503 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__6__Impl_in_rule__EntityMockEntity__Group_4_0__627534 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__7_in_rule__EntityMockEntity__Group_4_0__627537 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__AttributesAssignment_4_0_6_in_rule__EntityMockEntity__Group_4_0__6__Impl27564 = new BitSet(new long[]{0x0000000000000002L,0x0180000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__7__Impl_in_rule__EntityMockEntity__Group_4_0__727595 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__8_in_rule__EntityMockEntity__Group_4_0__727598 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__CalculationsAssignment_4_0_7_in_rule__EntityMockEntity__Group_4_0__7__Impl27625 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_0__8__Impl_in_rule__EntityMockEntity__Group_4_0__827656 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockEntity__Group_4_0__8__Impl27684 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__0__Impl_in_rule__EntityMockEntity__Group_4_1__027733 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__1_in_rule__EntityMockEntity__Group_4_1__027736 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_108_in_rule__EntityMockEntity__Group_4_1__0__Impl27764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__1__Impl_in_rule__EntityMockEntity__Group_4_1__127795 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__2_in_rule__EntityMockEntity__Group_4_1__127798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__ByResourceAssignment_4_1_1_in_rule__EntityMockEntity__Group_4_1__1__Impl27825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__2__Impl_in_rule__EntityMockEntity__Group_4_1__227855 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000100L,0x0000000000200000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__3_in_rule__EntityMockEntity__Group_4_1__227858 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockEntity__Group_4_1__2__Impl27886 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__3__Impl_in_rule__EntityMockEntity__Group_4_1__327917 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000100L,0x0000000000200000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__4_in_rule__EntityMockEntity__Group_4_1__327920 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__ByResourceAttributesAssignment_4_1_3_in_rule__EntityMockEntity__Group_4_1__3__Impl27947 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__4__Impl_in_rule__EntityMockEntity__Group_4_1__427978 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000100L,0x0000000000200000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__5_in_rule__EntityMockEntity__Group_4_1__427981 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__CreateBlobMappingAssignment_4_1_4_in_rule__EntityMockEntity__Group_4_1__4__Impl28008 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_1__5__Impl_in_rule__EntityMockEntity__Group_4_1__528039 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockEntity__Group_4_1__5__Impl28067 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__0__Impl_in_rule__EntityMockEntity__Group_4_2__028110 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__1_in_rule__EntityMockEntity__Group_4_2__028113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_109_in_rule__EntityMockEntity__Group_4_2__0__Impl28141 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__1__Impl_in_rule__EntityMockEntity__Group_4_2__128172 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__2_in_rule__EntityMockEntity__Group_4_2__128175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__IteratorAssignment_4_2_1_in_rule__EntityMockEntity__Group_4_2__1__Impl28202 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__2__Impl_in_rule__EntityMockEntity__Group_4_2__228232 = new BitSet(new long[]{0x0000000000000000L,0x0002400000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__3_in_rule__EntityMockEntity__Group_4_2__228235 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__EntityMockEntity__Group_4_2__2__Impl28263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__3__Impl_in_rule__EntityMockEntity__Group_4_2__328294 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__4_in_rule__EntityMockEntity__Group_4_2__328297 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__IterateAssignment_4_2_3_in_rule__EntityMockEntity__Group_4_2__3__Impl28324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__4__Impl_in_rule__EntityMockEntity__Group_4_2__428354 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__5_in_rule__EntityMockEntity__Group_4_2__428357 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__EntityMockEntity__Group_4_2__4__Impl28385 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__5__Impl_in_rule__EntityMockEntity__Group_4_2__528416 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__6_in_rule__EntityMockEntity__Group_4_2__528419 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__TemporariesAssignment_4_2_5_in_rule__EntityMockEntity__Group_4_2__5__Impl28446 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__6__Impl_in_rule__EntityMockEntity__Group_4_2__628477 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__7_in_rule__EntityMockEntity__Group_4_2__628480 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__AttributesAssignment_4_2_6_in_rule__EntityMockEntity__Group_4_2__6__Impl28507 = new BitSet(new long[]{0x0000000000000002L,0x0180000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__7__Impl_in_rule__EntityMockEntity__Group_4_2__728538 = new BitSet(new long[]{0x0400000000000000L,0x0190000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__8_in_rule__EntityMockEntity__Group_4_2__728541 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__CalculationsAssignment_4_2_7_in_rule__EntityMockEntity__Group_4_2__7__Impl28568 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockEntity__Group_4_2__8__Impl_in_rule__EntityMockEntity__Group_4_2__828599 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__EntityMockEntity__Group_4_2__8__Impl28627 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__0__Impl_in_rule__IntegerIterate__Group__028676 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__1_in_rule__IntegerIterate__Group__028679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_110_in_rule__IntegerIterate__Group__0__Impl28707 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__1__Impl_in_rule__IntegerIterate__Group__128738 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__2_in_rule__IntegerIterate__Group__128741 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__FromAssignment_1_in_rule__IntegerIterate__Group__1__Impl28768 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__2__Impl_in_rule__IntegerIterate__Group__228798 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__3_in_rule__IntegerIterate__Group__228801 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_111_in_rule__IntegerIterate__Group__2__Impl28829 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets013 {
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__3__Impl_in_rule__IntegerIterate__Group__328860 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__4_in_rule__IntegerIterate__Group__328863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__UntilAssignment_3_in_rule__IntegerIterate__Group__3__Impl28890 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__4__Impl_in_rule__IntegerIterate__Group__428920 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__5_in_rule__IntegerIterate__Group__428923 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_112_in_rule__IntegerIterate__Group__4__Impl28951 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__Group__5__Impl_in_rule__IntegerIterate__Group__528982 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IntegerIterate__StepAssignment_5_in_rule__IntegerIterate__Group__5__Impl29009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__0__Impl_in_rule__DateIterate__Group__029051 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000001C00000L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__1_in_rule__DateIterate__Group__029054 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_113_in_rule__DateIterate__Group__0__Impl29082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__1__Impl_in_rule__DateIterate__Group__129113 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__2_in_rule__DateIterate__Group__129116 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__FromAssignment_1_in_rule__DateIterate__Group__1__Impl29143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__2__Impl_in_rule__DateIterate__Group__229173 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000001C00000L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__3_in_rule__DateIterate__Group__229176 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_111_in_rule__DateIterate__Group__2__Impl29204 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__3__Impl_in_rule__DateIterate__Group__329235 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__4_in_rule__DateIterate__Group__329238 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__UntilAssignment_3_in_rule__DateIterate__Group__3__Impl29265 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__4__Impl_in_rule__DateIterate__Group__429295 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__5_in_rule__DateIterate__Group__429298 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_114_in_rule__DateIterate__Group__4__Impl29326 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__5__Impl_in_rule__DateIterate__Group__529357 = new BitSet(new long[]{0x00F0000000000000L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__6_in_rule__DateIterate__Group__529360 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__StepCountAssignment_5_in_rule__DateIterate__Group__5__Impl29387 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__Group__6__Impl_in_rule__DateIterate__Group__629417 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__DateIterate__StepTypeAssignment_6_in_rule__DateIterate__Group__6__Impl29444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__0__Impl_in_rule__Date__Group_3__029488 = new BitSet(new long[]{0x0000001000000000L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__1_in_rule__Date__Group_3__029491 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__YearAssignment_3_0_in_rule__Date__Group_3__0__Impl29518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__1__Impl_in_rule__Date__Group_3__129548 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__2_in_rule__Date__Group_3__129551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__Date__Group_3__1__Impl29579 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__2__Impl_in_rule__Date__Group_3__229610 = new BitSet(new long[]{0x0000001000000000L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__3_in_rule__Date__Group_3__229613 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__MonthAssignment_3_2_in_rule__Date__Group_3__2__Impl29640 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__3__Impl_in_rule__Date__Group_3__329670 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__4_in_rule__Date__Group_3__329673 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__Date__Group_3__3__Impl29701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__Group_3__4__Impl_in_rule__Date__Group_3__429732 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Date__DayAssignment_3_4_in_rule__Date__Group_3__4__Impl29759 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__0__Impl_in_rule__EntityMockByResourceAttribute__Group__029799 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__1_in_rule__EntityMockByResourceAttribute__Group__029802 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__1__Impl_in_rule__EntityMockByResourceAttribute__Group__129860 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__2_in_rule__EntityMockByResourceAttribute__Group__129863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockByResourceAttribute__Group__1__Impl29891 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__2__Impl_in_rule__EntityMockByResourceAttribute__Group__229922 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__3_in_rule__EntityMockByResourceAttribute__Group__229925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__AttributeRefAssignment_2_in_rule__EntityMockByResourceAttribute__Group__2__Impl29952 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__3__Impl_in_rule__EntityMockByResourceAttribute__Group__329982 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__4_in_rule__EntityMockByResourceAttribute__Group__329985 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_115_in_rule__EntityMockByResourceAttribute__Group__3__Impl30013 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__Group__4__Impl_in_rule__EntityMockByResourceAttribute__Group__430044 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockByResourceAttribute__ResourceAttributeAssignment_4_in_rule__EntityMockByResourceAttribute__Group__4__Impl30071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__0__Impl_in_rule__EntityMockTemporary__Group__030111 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__1_in_rule__EntityMockTemporary__Group__030114 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_116_in_rule__EntityMockTemporary__Group__0__Impl30142 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__1__Impl_in_rule__EntityMockTemporary__Group__130173 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__2_in_rule__EntityMockTemporary__Group__130176 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__NameAssignment_1_in_rule__EntityMockTemporary__Group__1__Impl30203 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__2__Impl_in_rule__EntityMockTemporary__Group__230233 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__3_in_rule__EntityMockTemporary__Group__230236 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_117_in_rule__EntityMockTemporary__Group__2__Impl30264 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__Group__3__Impl_in_rule__EntityMockTemporary__Group__330295 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockTemporary__ObjectAssignment_3_in_rule__EntityMockTemporary__Group__3__Impl30322 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__0__Impl_in_rule__EntityMockEntityFunction__Group__030360 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__1_in_rule__EntityMockEntityFunction__Group__030363 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockEntityFunction__Group__0__Impl30391 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__1__Impl_in_rule__EntityMockEntityFunction__Group__130422 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__2_in_rule__EntityMockEntityFunction__Group__130425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__AttributeRefAssignment_1_in_rule__EntityMockEntityFunction__Group__1__Impl30452 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__2__Impl_in_rule__EntityMockEntityFunction__Group__230482 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__3_in_rule__EntityMockEntityFunction__Group__230485 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_118_in_rule__EntityMockEntityFunction__Group__2__Impl30513 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__3__Impl_in_rule__EntityMockEntityFunction__Group__330544 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__4_in_rule__EntityMockEntityFunction__Group__330547 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__EntityMockEntityFunction__Group__3__Impl30575 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__4__Impl_in_rule__EntityMockEntityFunction__Group__430606 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__5_in_rule__EntityMockEntityFunction__Group__430609 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4__0_in_rule__EntityMockEntityFunction__Group__4__Impl30636 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__5__Impl_in_rule__EntityMockEntityFunction__Group__530667 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__6_in_rule__EntityMockEntityFunction__Group__530670 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__EntityMockEntityFunction__Group__5__Impl30698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group__6__Impl_in_rule__EntityMockEntityFunction__Group__630729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__BodyAssignment_6_in_rule__EntityMockEntityFunction__Group__6__Impl30756 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4__0__Impl_in_rule__EntityMockEntityFunction__Group_4__030800 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4__1_in_rule__EntityMockEntityFunction__Group_4__030803 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__ParamsAssignment_4_0_in_rule__EntityMockEntityFunction__Group_4__0__Impl30830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4__1__Impl_in_rule__EntityMockEntityFunction__Group_4__130860 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4_1__0_in_rule__EntityMockEntityFunction__Group_4__1__Impl30887 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4_1__0__Impl_in_rule__EntityMockEntityFunction__Group_4_1__030922 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4_1__1_in_rule__EntityMockEntityFunction__Group_4_1__030925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__EntityMockEntityFunction__Group_4_1__0__Impl30953 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__Group_4_1__1__Impl_in_rule__EntityMockEntityFunction__Group_4_1__130984 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunction__ParamsAssignment_4_1_1_in_rule__EntityMockEntityFunction__Group_4_1__1__Impl31011 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__0__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1__031045 = new BitSet(new long[]{0x0000100000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__1_in_rule__EntityMockEntityFunctionParameter__Group_1__031048 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_0_in_rule__EntityMockEntityFunctionParameter__Group_1__0__Impl31075 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__1__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1__131105 = new BitSet(new long[]{0x0000100000000010L});
-    }
-
-    protected static class FollowSets014 {
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__2_in_rule__EntityMockEntityFunctionParameter__Group_1__131108 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1_1__0_in_rule__EntityMockEntityFunctionParameter__Group_1__1__Impl31135 = new BitSet(new long[]{0x0000100000000012L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__2__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1__231166 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__3_in_rule__EntityMockEntityFunctionParameter__Group_1__231169 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockEntityFunctionParameter__Group_1__2__Impl31197 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1__3__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1__331228 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__ReferenceRefAssignment_1_3_in_rule__EntityMockEntityFunctionParameter__Group_1__3__Impl31255 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1_1__0__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1_1__031293 = new BitSet(new long[]{0x0000100000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1_1__1_in_rule__EntityMockEntityFunctionParameter__Group_1_1__031296 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockEntityFunctionParameter__Group_1_1__0__Impl31325 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__Group_1_1__1__Impl_in_rule__EntityMockEntityFunctionParameter__Group_1_1__131358 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_1_1_in_rule__EntityMockEntityFunctionParameter__Group_1_1__1__Impl31385 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__0__Impl_in_rule__EntityMockReferencedObjectAttribute__Group__031419 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__1_in_rule__EntityMockReferencedObjectAttribute__Group__031422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__1__Impl_in_rule__EntityMockReferencedObjectAttribute__Group__131480 = new BitSet(new long[]{0x0000100000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__2_in_rule__EntityMockReferencedObjectAttribute__Group__131483 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__TemporaryAssignment_1_in_rule__EntityMockReferencedObjectAttribute__Group__1__Impl31510 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__2__Impl_in_rule__EntityMockReferencedObjectAttribute__Group__231540 = new BitSet(new long[]{0x0000100000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__3_in_rule__EntityMockReferencedObjectAttribute__Group__231543 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group_2__0_in_rule__EntityMockReferencedObjectAttribute__Group__2__Impl31570 = new BitSet(new long[]{0x0000100000000012L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__3__Impl_in_rule__EntityMockReferencedObjectAttribute__Group__331601 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__4_in_rule__EntityMockReferencedObjectAttribute__Group__331604 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockReferencedObjectAttribute__Group__3__Impl31632 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group__4__Impl_in_rule__EntityMockReferencedObjectAttribute__Group__431663 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__AttributeAssignment_4_in_rule__EntityMockReferencedObjectAttribute__Group__4__Impl31690 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group_2__0__Impl_in_rule__EntityMockReferencedObjectAttribute__Group_2__031730 = new BitSet(new long[]{0x0000100000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group_2__1_in_rule__EntityMockReferencedObjectAttribute__Group_2__031733 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockReferencedObjectAttribute__Group_2__0__Impl31762 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__Group_2__1__Impl_in_rule__EntityMockReferencedObjectAttribute__Group_2__131795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockReferencedObjectAttribute__EmbeddedAssignment_2_1_in_rule__EntityMockReferencedObjectAttribute__Group_2__1__Impl31822 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__0__Impl_in_rule__EntityMockAttributeByObject__Group_0__031856 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__1_in_rule__EntityMockAttributeByObject__Group_0__031859 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockAttributeByObject__Group_0__0__Impl31887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__1__Impl_in_rule__EntityMockAttributeByObject__Group_0__131918 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__2_in_rule__EntityMockAttributeByObject__Group_0__131921 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__AttributeRefAssignment_0_1_in_rule__EntityMockAttributeByObject__Group_0__1__Impl31948 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0__2__Impl_in_rule__EntityMockAttributeByObject__Group_0__231978 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0_2__0_in_rule__EntityMockAttributeByObject__Group_0__2__Impl32005 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0_2__0__Impl_in_rule__EntityMockAttributeByObject__Group_0_2__032041 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0_2__1_in_rule__EntityMockAttributeByObject__Group_0_2__032044 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_115_in_rule__EntityMockAttributeByObject__Group_0_2__0__Impl32072 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_0_2__1__Impl_in_rule__EntityMockAttributeByObject__Group_0_2__132103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__ReferenceAssignment_0_2_1_in_rule__EntityMockAttributeByObject__Group_0_2__1__Impl32130 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__0__Impl_in_rule__EntityMockAttributeByObject__Group_1__032164 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__1_in_rule__EntityMockAttributeByObject__Group_1__032167 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_119_in_rule__EntityMockAttributeByObject__Group_1__0__Impl32195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__1__Impl_in_rule__EntityMockAttributeByObject__Group_1__132226 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__2_in_rule__EntityMockAttributeByObject__Group_1__132229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__ResourceEnumAssignment_1_1_in_rule__EntityMockAttributeByObject__Group_1__1__Impl32256 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__2__Impl_in_rule__EntityMockAttributeByObject__Group_1__232286 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__3_in_rule__EntityMockAttributeByObject__Group_1__232289 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__EntityMockAttributeByObject__Group_1__2__Impl32317 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__Group_1__3__Impl_in_rule__EntityMockAttributeByObject__Group_1__332348 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByObject__ResourceAttributeAssignment_1_3_in_rule__EntityMockAttributeByObject__Group_1__3__Impl32375 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__0__Impl_in_rule__EntityMockAttributeFiller__Group__032413 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__1_in_rule__EntityMockAttributeFiller__Group__032416 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__EntityMockAttributeFiller__Group__0__Impl32444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__1__Impl_in_rule__EntityMockAttributeFiller__Group__132475 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__2_in_rule__EntityMockAttributeFiller__Group__132478 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__AttributeRefAssignment_1_in_rule__EntityMockAttributeFiller__Group__1__Impl32505 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__2__Impl_in_rule__EntityMockAttributeFiller__Group__232535 = new BitSet(new long[]{0x0000000000000000L,0x0000003FF9780000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__3_in_rule__EntityMockAttributeFiller__Group__232538 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_rule__EntityMockAttributeFiller__Group__2__Impl32566 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__Group__3__Impl_in_rule__EntityMockAttributeFiller__Group__332597 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeFiller__FillerTypeAssignment_3_in_rule__EntityMockAttributeFiller__Group__3__Impl32624 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__0__Impl_in_rule__EntityMockAttributeByReference__Group__032662 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__1_in_rule__EntityMockAttributeByReference__Group__032665 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_120_in_rule__EntityMockAttributeByReference__Group__0__Impl32693 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__1__Impl_in_rule__EntityMockAttributeByReference__Group__132724 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__2_in_rule__EntityMockAttributeByReference__Group__132727 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__AttributeRefAssignment_1_in_rule__EntityMockAttributeByReference__Group__1__Impl32754 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__2__Impl_in_rule__EntityMockAttributeByReference__Group__232784 = new BitSet(new long[]{0x0000000000010010L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__3_in_rule__EntityMockAttributeByReference__Group__232787 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_107_in_rule__EntityMockAttributeByReference__Group__2__Impl32815 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__3__Impl_in_rule__EntityMockAttributeByReference__Group__332846 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__4_in_rule__EntityMockAttributeByReference__Group__332849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Alternatives_3_in_rule__EntityMockAttributeByReference__Group__3__Impl32876 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group__4__Impl_in_rule__EntityMockAttributeByReference__Group__432906 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__0_in_rule__EntityMockAttributeByReference__Group__4__Impl32933 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__0__Impl_in_rule__EntityMockAttributeByReference__Group_4__032974 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__1_in_rule__EntityMockAttributeByReference__Group_4__032977 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_121_in_rule__EntityMockAttributeByReference__Group_4__0__Impl33005 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__1__Impl_in_rule__EntityMockAttributeByReference__Group_4__133036 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__2_in_rule__EntityMockAttributeByReference__Group_4__133039 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__OptionalForAssignment_4_1_in_rule__EntityMockAttributeByReference__Group_4__1__Impl33066 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__EntityMockAttributeByReference__Group_4__2__Impl_in_rule__EntityMockAttributeByReference__Group_4__233096 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_122_in_rule__EntityMockAttributeByReference__Group_4__2__Impl33124 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SignedNumber__Group__0__Impl_in_rule__SignedNumber__Group__033161 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__SignedNumber__Group__1_in_rule__SignedNumber__Group__033164 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__SignedNumber__Group__0__Impl33193 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SignedNumber__Group__1__Impl_in_rule__SignedNumber__Group__133226 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__SignedNumber__Group__1__Impl33253 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0__Impl_in_rule__UnsignedNumber__Group__033286 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1_in_rule__UnsignedNumber__Group__033289 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group__0__Impl33316 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1__Impl_in_rule__UnsignedNumber__Group__133345 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0_in_rule__UnsignedNumber__Group__1__Impl33372 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0__Impl_in_rule__UnsignedNumber__Group_1__033407 = new BitSet(new long[]{0x0000000000000040L});
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1_in_rule__UnsignedNumber__Group_1__033410 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__UnsignedNumber__Group_1__0__Impl33438 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets015 {
-        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1__Impl_in_rule__UnsignedNumber__Group_1__133469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group_1__1__Impl33496 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SINT__Group__0__Impl_in_rule__SINT__Group__033529 = new BitSet(new long[]{0x0000001000000040L});
-        public static final BitSet FOLLOW_rule__SINT__Group__1_in_rule__SINT__Group__033532 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_36_in_rule__SINT__Group__0__Impl33561 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SINT__Group__1__Impl_in_rule__SINT__Group__133594 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__SINT__Group__1__Impl33621 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group__0__Impl_in_rule__QualifiedName__Group__033654 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group__1_in_rule__QualifiedName__Group__033657 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group__0__Impl33684 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group__1__Impl_in_rule__QualifiedName__Group__133713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0_in_rule__QualifiedName__Group__1__Impl33740 = new BitSet(new long[]{0x0000100000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0__Impl_in_rule__QualifiedName__Group_1__033775 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1_in_rule__QualifiedName__Group_1__033778 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__QualifiedName__Group_1__0__Impl33807 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1__Impl_in_rule__QualifiedName__Group_1__133839 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group_1__1__Impl33866 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__033899 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__033902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__133960 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__133963 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_123_in_rule__XAnnotation__Group__1__Impl33991 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__234022 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__234025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl34052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__334082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl34109 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__034148 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000018L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__034151 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XAnnotation__Group_3__0__Impl34180 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__134212 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000018L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__134215 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl34242 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__234273 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XAnnotation__Group_3__2__Impl34301 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0__Impl_in_rule__XAnnotation__Group_3_1_0__034338 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__034341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0_in_rule__XAnnotation__Group_3_1_0__0__Impl34368 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1__Impl_in_rule__XAnnotation__Group_3_1_0__134398 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0_in_rule__XAnnotation__Group_3_1_0__1__Impl34425 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__034460 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1_in_rule__XAnnotation__Group_3_1_0_1__034463 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XAnnotation__Group_3_1_0_1__0__Impl34491 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1__Impl_in_rule__XAnnotation__Group_3_1_0_1__134522 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1_in_rule__XAnnotation__Group_3_1_0_1__1__Impl34549 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__034583 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__034586 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl34613 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__134643 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl34670 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__034704 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl34731 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__034763 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__034766 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl34793 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__134823 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl34851 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__034886 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__034889 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl34916 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__134946 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__134949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl34976 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__235007 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_124_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl35035 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__035072 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl35099 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__035131 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__035134 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__135192 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__135195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_125_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl35223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__235254 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_126_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl35282 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__035319 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__035322 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl35349 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__135379 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl35406 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__035441 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__035444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl35472 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__135503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl35530 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__035564 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__035567 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl35594 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__135623 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl35650 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__035685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__035688 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__135746 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl35775 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl35787 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__035824 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__035827 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl35855 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__135886 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl35913 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__035947 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-    }
-
-    protected static class FollowSets016 {
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__035950 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl35977 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__136007 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__136010 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl36037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__236068 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_124_in_rule__XAnnotationElementValue__Group_0__2__Impl36096 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__036133 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl36160 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__036192 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__036195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__136253 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__136256 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_125_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl36284 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__236315 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_126_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl36343 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__036380 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__036383 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl36410 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__136440 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl36467 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__036502 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__036505 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl36533 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__136564 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValue__Group_0_1_1__1__Impl36591 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__036625 = new BitSet(new long[]{0x0003C00000000010L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__036628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__136686 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__136689 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl36716 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__236746 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__236749 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl36776 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__336805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl36832 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__036870 = new BitSet(new long[]{0x00000000183E0000L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__036873 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl36900 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__136929 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl36956 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__036991 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__036994 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl37021 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__137051 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl37078 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0__Impl_in_rule__XAssignment__Group_1_1_0__037112 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0_in_rule__XAssignment__Group_1_1_0__0__Impl37139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0__Impl_in_rule__XAssignment__Group_1_1_0_0__037171 = new BitSet(new long[]{0x00000000183E0000L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__037174 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1__Impl_in_rule__XAssignment__Group_1_1_0_0__137232 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_1_1_0_0_1_in_rule__XAssignment__Group_1_1_0_0__1__Impl37259 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__037293 = new BitSet(new long[]{0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__037296 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpMultiAssign__Group_5__0__Impl37324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__137355 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__137358 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpMultiAssign__Group_5__1__Impl37386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__237417 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl37445 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__037482 = new BitSet(new long[]{0x000000000C000000L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__037485 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_6__0__Impl37513 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__137544 = new BitSet(new long[]{0x000000000C000000L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__137547 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_6__1__Impl37576 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__237609 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_26_in_rule__OpMultiAssign__Group_6__2__Impl37637 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__037674 = new BitSet(new long[]{0x0000000000004000L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__037677 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl37704 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__137733 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl37760 = new BitSet(new long[]{0x0000000000004002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__037795 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__037798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl37825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__137855 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl37882 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__037916 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl37943 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0__Impl_in_rule__XOrExpression__Group_1_0_0__037975 = new BitSet(new long[]{0x0000000000004000L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__037978 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1__Impl_in_rule__XOrExpression__Group_1_0_0__138036 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOrExpression__FeatureAssignment_1_0_0_1_in_rule__XOrExpression__Group_1_0_0__1__Impl38063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__038097 = new BitSet(new long[]{0x0000000000008000L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__038100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl38127 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__138156 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl38183 = new BitSet(new long[]{0x0000000000008002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__038218 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__038221 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl38248 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__138278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl38305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__038339 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl38366 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0__Impl_in_rule__XAndExpression__Group_1_0_0__038398 = new BitSet(new long[]{0x0000000000008000L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__038401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1__Impl_in_rule__XAndExpression__Group_1_0_0__138459 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAndExpression__FeatureAssignment_1_0_0_1_in_rule__XAndExpression__Group_1_0_0__1__Impl38486 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets017 {
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__038520 = new BitSet(new long[]{0x0000000003C00000L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__038523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl38550 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__138579 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl38606 = new BitSet(new long[]{0x0000000003C00002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__038641 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__038644 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl38671 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__138701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl38728 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__038762 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl38789 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0__Impl_in_rule__XEqualityExpression__Group_1_0_0__038821 = new BitSet(new long[]{0x0000000003C00000L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__038824 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1__Impl_in_rule__XEqualityExpression__Group_1_0_0__138882 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XEqualityExpression__FeatureAssignment_1_0_0_1_in_rule__XEqualityExpression__Group_1_0_0__1__Impl38909 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__038943 = new BitSet(new long[]{0x000000001C000000L,0x8000000000000000L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__038946 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl38973 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__139002 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl39029 = new BitSet(new long[]{0x000000001C000002L,0x8000000000000000L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__039064 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__039067 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl39094 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__139124 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl39151 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0__039185 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0_in_rule__XRelationalExpression__Group_1_0_0__0__Impl39212 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__039244 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__039247 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__139305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_127_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl39333 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__039368 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__039371 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl39398 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__139428 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl39455 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0__039489 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0_in_rule__XRelationalExpression__Group_1_1_0__0__Impl39516 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__039548 = new BitSet(new long[]{0x000000001C000000L,0x8000000000000000L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__039551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__139609 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1_in_rule__XRelationalExpression__Group_1_1_0_0__1__Impl39636 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__039670 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__039673 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpCompare__Group_1__0__Impl39701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__139732 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl39760 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__039795 = new BitSet(new long[]{0x00000007F8000000L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__039798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl39825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__139854 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl39881 = new BitSet(new long[]{0x00000007F8000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__039916 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__039919 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl39946 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__139976 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl40003 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__040037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl40064 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__040096 = new BitSet(new long[]{0x00000007F8000000L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__040099 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__140157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1_in_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl40184 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__040218 = new BitSet(new long[]{0x0000000080000000L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__040221 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_2__0__Impl40249 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__140280 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_31_in_rule__OpOther__Group_2__1__Impl40308 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__040343 = new BitSet(new long[]{0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__040346 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_5__0__Impl40374 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__140405 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl40432 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0__Impl_in_rule__OpOther__Group_5_1_0__040466 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0_in_rule__OpOther__Group_5_1_0__0__Impl40493 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0__Impl_in_rule__OpOther__Group_5_1_0_0__040525 = new BitSet(new long[]{0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__040528 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_5_1_0_0__0__Impl40556 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1__Impl_in_rule__OpOther__Group_5_1_0_0__140587 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_5_1_0_0__1__Impl40615 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__040650 = new BitSet(new long[]{0x0000000110000000L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__040653 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpOther__Group_6__0__Impl40681 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__140712 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl40739 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0__Impl_in_rule__OpOther__Group_6_1_0__040773 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0_in_rule__OpOther__Group_6_1_0__0__Impl40800 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0__Impl_in_rule__OpOther__Group_6_1_0_0__040832 = new BitSet(new long[]{0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__040835 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpOther__Group_6_1_0_0__0__Impl40863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1__Impl_in_rule__OpOther__Group_6_1_0_0__140894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__OpOther__Group_6_1_0_0__1__Impl40922 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__040957 = new BitSet(new long[]{0x0000001800000000L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__040960 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__Group__0__Impl40987 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1__Impl_in_rule__XAdditiveExpression__Group__141016 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0_in_rule__XAdditiveExpression__Group__1__Impl41043 = new BitSet(new long[]{0x0000001800000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0__Impl_in_rule__XAdditiveExpression__Group_1__041078 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1_in_rule__XAdditiveExpression__Group_1__041081 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets018 {
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0_in_rule__XAdditiveExpression__Group_1__0__Impl41108 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1__Impl_in_rule__XAdditiveExpression__Group_1__141138 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__RightOperandAssignment_1_1_in_rule__XAdditiveExpression__Group_1__1__Impl41165 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0__041199 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0_in_rule__XAdditiveExpression__Group_1_0__0__Impl41226 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0_0__041258 = new BitSet(new long[]{0x0000001800000000L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1_in_rule__XAdditiveExpression__Group_1_0_0__041261 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1__Impl_in_rule__XAdditiveExpression__Group_1_0_0__141319 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XAdditiveExpression__FeatureAssignment_1_0_0_1_in_rule__XAdditiveExpression__Group_1_0_0__1__Impl41346 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0__Impl_in_rule__XMultiplicativeExpression__Group__041380 = new BitSet(new long[]{0x000001E000000000L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1_in_rule__XMultiplicativeExpression__Group__041383 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__Group__0__Impl41410 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1__Impl_in_rule__XMultiplicativeExpression__Group__141439 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0_in_rule__XMultiplicativeExpression__Group__1__Impl41466 = new BitSet(new long[]{0x000001E000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0__Impl_in_rule__XMultiplicativeExpression__Group_1__041501 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1_in_rule__XMultiplicativeExpression__Group_1__041504 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0_in_rule__XMultiplicativeExpression__Group_1__0__Impl41531 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1__Impl_in_rule__XMultiplicativeExpression__Group_1__141561 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__RightOperandAssignment_1_1_in_rule__XMultiplicativeExpression__Group_1__1__Impl41588 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0__041622 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0_in_rule__XMultiplicativeExpression__Group_1_0__0__Impl41649 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0_0__041681 = new BitSet(new long[]{0x000001E000000000L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1_in_rule__XMultiplicativeExpression__Group_1_0_0__041684 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1__Impl_in_rule__XMultiplicativeExpression__Group_1_0_0__141742 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1_in_rule__XMultiplicativeExpression__Group_1_0_0__1__Impl41769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0__Impl_in_rule__XUnaryOperation__Group_0__041803 = new BitSet(new long[]{0x0000021800000000L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1_in_rule__XUnaryOperation__Group_0__041806 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1__Impl_in_rule__XUnaryOperation__Group_0__141864 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2_in_rule__XUnaryOperation__Group_0__141867 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__FeatureAssignment_0_1_in_rule__XUnaryOperation__Group_0__1__Impl41894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2__Impl_in_rule__XUnaryOperation__Group_0__241924 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XUnaryOperation__OperandAssignment_0_2_in_rule__XUnaryOperation__Group_0__2__Impl41951 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0__Impl_in_rule__XCastedExpression__Group__041987 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1_in_rule__XCastedExpression__Group__041990 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXPostfixOperation_in_rule__XCastedExpression__Group__0__Impl42017 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1__Impl_in_rule__XCastedExpression__Group__142046 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0_in_rule__XCastedExpression__Group__1__Impl42073 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0__Impl_in_rule__XCastedExpression__Group_1__042108 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1_in_rule__XCastedExpression__Group_1__042111 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0_in_rule__XCastedExpression__Group_1__0__Impl42138 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1__Impl_in_rule__XCastedExpression__Group_1__142168 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__TypeAssignment_1_1_in_rule__XCastedExpression__Group_1__1__Impl42195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0__Impl_in_rule__XCastedExpression__Group_1_0__042229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0_in_rule__XCastedExpression__Group_1_0__0__Impl42256 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0__Impl_in_rule__XCastedExpression__Group_1_0_0__042288 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1_in_rule__XCastedExpression__Group_1_0_0__042291 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1__Impl_in_rule__XCastedExpression__Group_1_0_0__142349 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_115_in_rule__XCastedExpression__Group_1_0_0__1__Impl42377 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0__Impl_in_rule__XPostfixOperation__Group__042412 = new BitSet(new long[]{0x00000C0000000000L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1_in_rule__XPostfixOperation__Group__042415 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_rule__XPostfixOperation__Group__0__Impl42442 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1__Impl_in_rule__XPostfixOperation__Group__142471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0_in_rule__XPostfixOperation__Group__1__Impl42498 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0__Impl_in_rule__XPostfixOperation__Group_1__042533 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0_in_rule__XPostfixOperation__Group_1__0__Impl42560 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0__Impl_in_rule__XPostfixOperation__Group_1_0__042592 = new BitSet(new long[]{0x00000C0000000000L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1_in_rule__XPostfixOperation__Group_1_0__042595 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1__Impl_in_rule__XPostfixOperation__Group_1_0__142653 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XPostfixOperation__FeatureAssignment_1_0_1_in_rule__XPostfixOperation__Group_1_0__1__Impl42680 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0__Impl_in_rule__XMemberFeatureCall__Group__042714 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000006000000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1_in_rule__XMemberFeatureCall__Group__042717 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_rule__XMemberFeatureCall__Group__0__Impl42744 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1__Impl_in_rule__XMemberFeatureCall__Group__142773 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_in_rule__XMemberFeatureCall__Group__1__Impl42800 = new BitSet(new long[]{0x0000100000000002L,0x0000000000000000L,0x0000000006000000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0__042835 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1_in_rule__XMemberFeatureCall__Group_1_0__042838 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_0__0__Impl42865 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0__142895 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ValueAssignment_1_0_1_in_rule__XMemberFeatureCall__Group_1_0__1__Impl42922 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0_0__042956 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__0_in_rule__XMemberFeatureCall__Group_1_0_0__0__Impl42983 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__043015 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000002000000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1_in_rule__XMemberFeatureCall__Group_1_0_0_0__043018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__143076 = new BitSet(new long[]{0x0003C00000000010L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2_in_rule__XMemberFeatureCall__Group_1_0_0_0__143079 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_0_0_0_1_in_rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl43106 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__243136 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__3_in_rule__XMemberFeatureCall__Group_1_0_0_0__243139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2_in_rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl43166 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__343196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl43223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1__043260 = new BitSet(new long[]{0x0007C00010000010L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1_in_rule__XMemberFeatureCall__Group_1_1__043263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0_in_rule__XMemberFeatureCall__Group_1_1__0__Impl43290 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1__143320 = new BitSet(new long[]{0x0007C00010000010L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2_in_rule__XMemberFeatureCall__Group_1_1__143323 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1__1__Impl43350 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1__243381 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3_in_rule__XMemberFeatureCall__Group_1_1__243384 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_1_2_in_rule__XMemberFeatureCall__Group_1_1__2__Impl43411 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1__343441 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4_in_rule__XMemberFeatureCall__Group_1_1__343444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0_in_rule__XMemberFeatureCall__Group_1_1__3__Impl43471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4__Impl_in_rule__XMemberFeatureCall__Group_1_1__443502 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4_in_rule__XMemberFeatureCall__Group_1_1__4__Impl43529 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_0__043570 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_1_0__0__Impl43597 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_0_0__043629 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000006000000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1_in_rule__XMemberFeatureCall__Group_1_1_0_0__043632 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_0_0__143690 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets019 {
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_1_0_0_1_in_rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl43717 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__043751 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_1__043754 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__XMemberFeatureCall__Group_1_1_1__0__Impl43782 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__143813 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2_in_rule__XMemberFeatureCall__Group_1_1_1__143816 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1_in_rule__XMemberFeatureCall__Group_1_1_1__1__Impl43843 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__243873 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3_in_rule__XMemberFeatureCall__Group_1_1_1__243876 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__0_in_rule__XMemberFeatureCall__Group_1_1_1__2__Impl43903 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__343934 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__XMemberFeatureCall__Group_1_1_1__3__Impl43962 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_1_2__044001 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1_in_rule__XMemberFeatureCall__Group_1_1_1_2__044004 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl44032 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_1_2__144063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1_in_rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl44090 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__044124 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1_in_rule__XMemberFeatureCall__Group_1_1_3__044127 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0_in_rule__XMemberFeatureCall__Group_1_1_3__0__Impl44154 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__144184 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2_in_rule__XMemberFeatureCall__Group_1_1_3__144187 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_1_3_1_in_rule__XMemberFeatureCall__Group_1_1_3__1__Impl44214 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__244245 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XMemberFeatureCall__Group_1_1_3__2__Impl44273 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__044310 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__044313 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl44340 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__144370 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl44397 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__044432 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__044435 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl44463 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__144494 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl44521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0__Impl_in_rule__XSetLiteral__Group__044555 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1_in_rule__XSetLiteral__Group__044558 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1__Impl_in_rule__XSetLiteral__Group__144616 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2_in_rule__XSetLiteral__Group__144619 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_125_in_rule__XSetLiteral__Group__1__Impl44647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2__Impl_in_rule__XSetLiteral__Group__244678 = new BitSet(new long[]{0x060FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3_in_rule__XSetLiteral__Group__244681 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__XSetLiteral__Group__2__Impl44709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3__Impl_in_rule__XSetLiteral__Group__344740 = new BitSet(new long[]{0x060FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4_in_rule__XSetLiteral__Group__344743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0_in_rule__XSetLiteral__Group__3__Impl44770 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4__Impl_in_rule__XSetLiteral__Group__444801 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__XSetLiteral__Group__4__Impl44829 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0__Impl_in_rule__XSetLiteral__Group_3__044870 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1_in_rule__XSetLiteral__Group_3__044873 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_0_in_rule__XSetLiteral__Group_3__0__Impl44900 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1__Impl_in_rule__XSetLiteral__Group_3__144930 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0_in_rule__XSetLiteral__Group_3__1__Impl44957 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0__Impl_in_rule__XSetLiteral__Group_3_1__044992 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1_in_rule__XSetLiteral__Group_3_1__044995 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XSetLiteral__Group_3_1__0__Impl45023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1__Impl_in_rule__XSetLiteral__Group_3_1__145054 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_1_1_in_rule__XSetLiteral__Group_3_1__1__Impl45081 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__0__Impl_in_rule__XListLiteral__Group__045115 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__1_in_rule__XListLiteral__Group__045118 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__1__Impl_in_rule__XListLiteral__Group__145176 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__2_in_rule__XListLiteral__Group__145179 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_125_in_rule__XListLiteral__Group__1__Impl45207 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__2__Impl_in_rule__XListLiteral__Group__245238 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__3_in_rule__XListLiteral__Group__245241 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_126_in_rule__XListLiteral__Group__2__Impl45269 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__3__Impl_in_rule__XListLiteral__Group__345300 = new BitSet(new long[]{0x020FC218100001F0L,0x7800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__4_in_rule__XListLiteral__Group__345303 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0_in_rule__XListLiteral__Group__3__Impl45330 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group__4__Impl_in_rule__XListLiteral__Group__445361 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_124_in_rule__XListLiteral__Group__4__Impl45389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0__Impl_in_rule__XListLiteral__Group_3__045430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1_in_rule__XListLiteral__Group_3__045433 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_0_in_rule__XListLiteral__Group_3__0__Impl45460 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1__Impl_in_rule__XListLiteral__Group_3__145490 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0_in_rule__XListLiteral__Group_3__1__Impl45517 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0__Impl_in_rule__XListLiteral__Group_3_1__045552 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1_in_rule__XListLiteral__Group_3_1__045555 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XListLiteral__Group_3_1__0__Impl45583 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1__Impl_in_rule__XListLiteral__Group_3_1__145614 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_1_1_in_rule__XListLiteral__Group_3_1__1__Impl45641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__0__Impl_in_rule__XClosure__Group__045675 = new BitSet(new long[]{0x020FE219100001F0L,0x6800000000000108L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XClosure__Group__1_in_rule__XClosure__Group__045678 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0__0_in_rule__XClosure__Group__0__Impl45705 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__1__Impl_in_rule__XClosure__Group__145735 = new BitSet(new long[]{0x020FE219100001F0L,0x6800000000000108L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XClosure__Group__2_in_rule__XClosure__Group__145738 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1__0_in_rule__XClosure__Group__1__Impl45765 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__2__Impl_in_rule__XClosure__Group__245796 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__3_in_rule__XClosure__Group__245799 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__ExpressionAssignment_2_in_rule__XClosure__Group__2__Impl45826 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group__3__Impl_in_rule__XClosure__Group__345856 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_124_in_rule__XClosure__Group__3__Impl45884 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0__0__Impl_in_rule__XClosure__Group_0__045923 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0_in_rule__XClosure__Group_0__0__Impl45950 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0__Impl_in_rule__XClosure__Group_0_0__045982 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1_in_rule__XClosure__Group_0_0__045985 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1__Impl_in_rule__XClosure__Group_0_0__146043 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_126_in_rule__XClosure__Group_0_0__1__Impl46071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1__0__Impl_in_rule__XClosure__Group_1__046106 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0_in_rule__XClosure__Group_1__0__Impl46133 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets020 {
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0__Impl_in_rule__XClosure__Group_1_0__046165 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1_in_rule__XClosure__Group_1_0__046168 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0_in_rule__XClosure__Group_1_0__0__Impl46195 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1__Impl_in_rule__XClosure__Group_1_0__146226 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__ExplicitSyntaxAssignment_1_0_1_in_rule__XClosure__Group_1_0__1__Impl46253 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0__Impl_in_rule__XClosure__Group_1_0_0__046287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1_in_rule__XClosure__Group_1_0_0__046290 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0_in_rule__XClosure__Group_1_0_0__0__Impl46317 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1__Impl_in_rule__XClosure__Group_1_0_0__146347 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0_in_rule__XClosure__Group_1_0_0__1__Impl46374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0__Impl_in_rule__XClosure__Group_1_0_0_1__046409 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1_in_rule__XClosure__Group_1_0_0_1__046412 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XClosure__Group_1_0_0_1__0__Impl46440 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1__Impl_in_rule__XClosure__Group_1_0_0_1__146471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1_in_rule__XClosure__Group_1_0_0_1__1__Impl46498 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0__Impl_in_rule__XExpressionInClosure__Group__046532 = new BitSet(new long[]{0x020FE219100001F0L,0x6800000000000108L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1_in_rule__XExpressionInClosure__Group__046535 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1__Impl_in_rule__XExpressionInClosure__Group__146593 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0_in_rule__XExpressionInClosure__Group__1__Impl46620 = new BitSet(new long[]{0x020FE218100001F2L,0x6800000000000108L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0__Impl_in_rule__XExpressionInClosure__Group_1__046655 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1_in_rule__XExpressionInClosure__Group_1__046658 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__ExpressionsAssignment_1_0_in_rule__XExpressionInClosure__Group_1__0__Impl46685 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1__Impl_in_rule__XExpressionInClosure__Group_1__146715 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_128_in_rule__XExpressionInClosure__Group_1__1__Impl46744 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group__0__Impl_in_rule__XShortClosure__Group__046781 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group__1_in_rule__XShortClosure__Group__046784 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0_in_rule__XShortClosure__Group__0__Impl46811 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group__1__Impl_in_rule__XShortClosure__Group__146841 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__ExpressionAssignment_1_in_rule__XShortClosure__Group__1__Impl46868 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0__Impl_in_rule__XShortClosure__Group_0__046902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0_in_rule__XShortClosure__Group_0__0__Impl46929 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0__Impl_in_rule__XShortClosure__Group_0_0__046961 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1_in_rule__XShortClosure__Group_0_0__046964 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1__Impl_in_rule__XShortClosure__Group_0_0__147022 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2_in_rule__XShortClosure__Group_0_0__147025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0_in_rule__XShortClosure__Group_0_0__1__Impl47052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2__Impl_in_rule__XShortClosure__Group_0_0__247083 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2_in_rule__XShortClosure__Group_0_0__2__Impl47110 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0__Impl_in_rule__XShortClosure__Group_0_0_1__047146 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1_in_rule__XShortClosure__Group_0_0_1__047149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0_in_rule__XShortClosure__Group_0_0_1__0__Impl47176 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1__Impl_in_rule__XShortClosure__Group_0_0_1__147206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0_in_rule__XShortClosure__Group_0_0_1__1__Impl47233 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0__Impl_in_rule__XShortClosure__Group_0_0_1_1__047268 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1_in_rule__XShortClosure__Group_0_0_1_1__047271 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XShortClosure__Group_0_0_1_1__0__Impl47299 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1__Impl_in_rule__XShortClosure__Group_0_0_1_1__147330 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1_in_rule__XShortClosure__Group_0_0_1_1__1__Impl47357 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0__Impl_in_rule__XParenthesizedExpression__Group__047391 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1_in_rule__XParenthesizedExpression__Group__047394 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XParenthesizedExpression__Group__0__Impl47422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1__Impl_in_rule__XParenthesizedExpression__Group__147453 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2_in_rule__XParenthesizedExpression__Group__147456 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XParenthesizedExpression__Group__1__Impl47483 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2__Impl_in_rule__XParenthesizedExpression__Group__247512 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XParenthesizedExpression__Group__2__Impl47540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__0__Impl_in_rule__XIfExpression__Group__047577 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__1_in_rule__XIfExpression__Group__047580 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__1__Impl_in_rule__XIfExpression__Group__147638 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__2_in_rule__XIfExpression__Group__147641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_129_in_rule__XIfExpression__Group__1__Impl47669 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__2__Impl_in_rule__XIfExpression__Group__247700 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__3_in_rule__XIfExpression__Group__247703 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XIfExpression__Group__2__Impl47731 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__3__Impl_in_rule__XIfExpression__Group__347762 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__4_in_rule__XIfExpression__Group__347765 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__IfAssignment_3_in_rule__XIfExpression__Group__3__Impl47792 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__4__Impl_in_rule__XIfExpression__Group__447822 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__5_in_rule__XIfExpression__Group__447825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XIfExpression__Group__4__Impl47853 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__5__Impl_in_rule__XIfExpression__Group__547884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__6_in_rule__XIfExpression__Group__547887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__ThenAssignment_5_in_rule__XIfExpression__Group__5__Impl47914 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group__6__Impl_in_rule__XIfExpression__Group__647944 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0_in_rule__XIfExpression__Group__6__Impl47971 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0__Impl_in_rule__XIfExpression__Group_6__048016 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1_in_rule__XIfExpression__Group_6__048019 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_130_in_rule__XIfExpression__Group_6__0__Impl48048 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1__Impl_in_rule__XIfExpression__Group_6__148080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XIfExpression__ElseAssignment_6_1_in_rule__XIfExpression__Group_6__1__Impl48107 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0__Impl_in_rule__XSwitchExpression__Group__048141 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1_in_rule__XSwitchExpression__Group__048144 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1__Impl_in_rule__XSwitchExpression__Group__148202 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2_in_rule__XSwitchExpression__Group__148205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_131_in_rule__XSwitchExpression__Group__1__Impl48233 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2__Impl_in_rule__XSwitchExpression__Group__248264 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3_in_rule__XSwitchExpression__Group__248267 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Alternatives_2_in_rule__XSwitchExpression__Group__2__Impl48294 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3__Impl_in_rule__XSwitchExpression__Group__348324 = new BitSet(new long[]{0x0400000100000010L,0x0000000000000028L,0x0000000000000070L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4_in_rule__XSwitchExpression__Group__348327 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__XSwitchExpression__Group__3__Impl48355 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4__Impl_in_rule__XSwitchExpression__Group__448386 = new BitSet(new long[]{0x0400000100000010L,0x0000000000000028L,0x0000000000000070L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5_in_rule__XSwitchExpression__Group__448389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__CasesAssignment_4_in_rule__XSwitchExpression__Group__4__Impl48416 = new BitSet(new long[]{0x0000000100000012L,0x0000000000000028L,0x0000000000000050L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5__Impl_in_rule__XSwitchExpression__Group__548447 = new BitSet(new long[]{0x0400000100000010L,0x0000000000000028L,0x0000000000000070L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6_in_rule__XSwitchExpression__Group__548450 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0_in_rule__XSwitchExpression__Group__5__Impl48477 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6__Impl_in_rule__XSwitchExpression__Group__648508 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__XSwitchExpression__Group__6__Impl48536 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0__Impl_in_rule__XSwitchExpression__Group_2_0__048581 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-    }
-
-    protected static class FollowSets021 {
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1_in_rule__XSwitchExpression__Group_2_0__048584 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0_in_rule__XSwitchExpression__Group_2_0__0__Impl48611 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1__Impl_in_rule__XSwitchExpression__Group_2_0__148641 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2_in_rule__XSwitchExpression__Group_2_0__148644 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_0_1_in_rule__XSwitchExpression__Group_2_0__1__Impl48671 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2__Impl_in_rule__XSwitchExpression__Group_2_0__248701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XSwitchExpression__Group_2_0__2__Impl48729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_0_0__048766 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__0_in_rule__XSwitchExpression__Group_2_0_0__0__Impl48793 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__048825 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1_in_rule__XSwitchExpression__Group_2_0_0_0__048828 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XSwitchExpression__Group_2_0_0_0__0__Impl48856 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__148887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2_in_rule__XSwitchExpression__Group_2_0_0_0__148890 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1_in_rule__XSwitchExpression__Group_2_0_0_0__1__Impl48917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__248947 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_132_in_rule__XSwitchExpression__Group_2_0_0_0__2__Impl48975 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0__Impl_in_rule__XSwitchExpression__Group_2_1__049012 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1_in_rule__XSwitchExpression__Group_2_1__049015 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0_in_rule__XSwitchExpression__Group_2_1__0__Impl49042 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1__Impl_in_rule__XSwitchExpression__Group_2_1__149073 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_1_1_in_rule__XSwitchExpression__Group_2_1__1__Impl49100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0__Impl_in_rule__XSwitchExpression__Group_2_1_0__049134 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__0_in_rule__XSwitchExpression__Group_2_1_0__0__Impl49161 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_1_0_0__049193 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1_in_rule__XSwitchExpression__Group_2_1_0_0__049196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0_in_rule__XSwitchExpression__Group_2_1_0_0__0__Impl49223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1__Impl_in_rule__XSwitchExpression__Group_2_1_0_0__149253 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_132_in_rule__XSwitchExpression__Group_2_1_0_0__1__Impl49281 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0__Impl_in_rule__XSwitchExpression__Group_5__049316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1_in_rule__XSwitchExpression__Group_5__049319 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_133_in_rule__XSwitchExpression__Group_5__0__Impl49347 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1__Impl_in_rule__XSwitchExpression__Group_5__149378 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2_in_rule__XSwitchExpression__Group_5__149381 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_132_in_rule__XSwitchExpression__Group_5__1__Impl49409 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2__Impl_in_rule__XSwitchExpression__Group_5__249440 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSwitchExpression__DefaultAssignment_5_2_in_rule__XSwitchExpression__Group_5__2__Impl49467 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__0__Impl_in_rule__XCasePart__Group__049503 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000028L,0x0000000000000050L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__1_in_rule__XCasePart__Group__049506 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__1__Impl_in_rule__XCasePart__Group__149564 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000028L,0x0000000000000050L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__2_in_rule__XCasePart__Group__149567 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__TypeGuardAssignment_1_in_rule__XCasePart__Group__1__Impl49594 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__2__Impl_in_rule__XCasePart__Group__249625 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000028L,0x0000000000000050L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__3_in_rule__XCasePart__Group__249628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0_in_rule__XCasePart__Group__2__Impl49655 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group__3__Impl_in_rule__XCasePart__Group__349686 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Alternatives_3_in_rule__XCasePart__Group__3__Impl49713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0__Impl_in_rule__XCasePart__Group_2__049751 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1_in_rule__XCasePart__Group_2__049754 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_134_in_rule__XCasePart__Group_2__0__Impl49782 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1__Impl_in_rule__XCasePart__Group_2__149813 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__CaseAssignment_2_1_in_rule__XCasePart__Group_2__1__Impl49840 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0__Impl_in_rule__XCasePart__Group_3_0__049874 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1_in_rule__XCasePart__Group_3_0__049877 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_132_in_rule__XCasePart__Group_3_0__0__Impl49905 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1__Impl_in_rule__XCasePart__Group_3_0__149936 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCasePart__ThenAssignment_3_0_1_in_rule__XCasePart__Group_3_0__1__Impl49963 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0__Impl_in_rule__XForLoopExpression__Group__049997 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1_in_rule__XForLoopExpression__Group__050000 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0_in_rule__XForLoopExpression__Group__0__Impl50027 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1__Impl_in_rule__XForLoopExpression__Group__150057 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2_in_rule__XForLoopExpression__Group__150060 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__ForExpressionAssignment_1_in_rule__XForLoopExpression__Group__1__Impl50087 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2__Impl_in_rule__XForLoopExpression__Group__250117 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3_in_rule__XForLoopExpression__Group__250120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XForLoopExpression__Group__2__Impl50148 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3__Impl_in_rule__XForLoopExpression__Group__350179 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__EachExpressionAssignment_3_in_rule__XForLoopExpression__Group__3__Impl50206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0__Impl_in_rule__XForLoopExpression__Group_0__050244 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0_in_rule__XForLoopExpression__Group_0__0__Impl50271 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0__Impl_in_rule__XForLoopExpression__Group_0_0__050303 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1_in_rule__XForLoopExpression__Group_0_0__050306 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1__Impl_in_rule__XForLoopExpression__Group_0_0__150364 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2_in_rule__XForLoopExpression__Group_0_0__150367 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_135_in_rule__XForLoopExpression__Group_0_0__1__Impl50395 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2__Impl_in_rule__XForLoopExpression__Group_0_0__250426 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3_in_rule__XForLoopExpression__Group_0_0__250429 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XForLoopExpression__Group_0_0__2__Impl50457 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3__Impl_in_rule__XForLoopExpression__Group_0_0__350488 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4_in_rule__XForLoopExpression__Group_0_0__350491 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__DeclaredParamAssignment_0_0_3_in_rule__XForLoopExpression__Group_0_0__3__Impl50518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4__Impl_in_rule__XForLoopExpression__Group_0_0__450548 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_132_in_rule__XForLoopExpression__Group_0_0__4__Impl50576 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0__Impl_in_rule__XBasicForLoopExpression__Group__050617 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1_in_rule__XBasicForLoopExpression__Group__050620 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1__Impl_in_rule__XBasicForLoopExpression__Group__150678 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2_in_rule__XBasicForLoopExpression__Group__150681 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_135_in_rule__XBasicForLoopExpression__Group__1__Impl50709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2__Impl_in_rule__XBasicForLoopExpression__Group__250740 = new BitSet(new long[]{0x020FE218100001F0L,0x6800000000000108L,0x000000001002FF8BL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3_in_rule__XBasicForLoopExpression__Group__250743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XBasicForLoopExpression__Group__2__Impl50771 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3__Impl_in_rule__XBasicForLoopExpression__Group__350802 = new BitSet(new long[]{0x020FE218100001F0L,0x6800000000000108L,0x000000001002FF8BL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4_in_rule__XBasicForLoopExpression__Group__350805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0_in_rule__XBasicForLoopExpression__Group__3__Impl50832 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4__Impl_in_rule__XBasicForLoopExpression__Group__450863 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8BL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5_in_rule__XBasicForLoopExpression__Group__450866 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_128_in_rule__XBasicForLoopExpression__Group__4__Impl50894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5__Impl_in_rule__XBasicForLoopExpression__Group__550925 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8BL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6_in_rule__XBasicForLoopExpression__Group__550928 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__ExpressionAssignment_5_in_rule__XBasicForLoopExpression__Group__5__Impl50955 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets022 {
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6__Impl_in_rule__XBasicForLoopExpression__Group__650986 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000018L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7_in_rule__XBasicForLoopExpression__Group__650989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_128_in_rule__XBasicForLoopExpression__Group__6__Impl51017 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7__Impl_in_rule__XBasicForLoopExpression__Group__751048 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000018L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8_in_rule__XBasicForLoopExpression__Group__751051 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0_in_rule__XBasicForLoopExpression__Group__7__Impl51078 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8__Impl_in_rule__XBasicForLoopExpression__Group__851109 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9_in_rule__XBasicForLoopExpression__Group__851112 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XBasicForLoopExpression__Group__8__Impl51140 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9__Impl_in_rule__XBasicForLoopExpression__Group__951171 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__EachExpressionAssignment_9_in_rule__XBasicForLoopExpression__Group__9__Impl51198 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0__Impl_in_rule__XBasicForLoopExpression__Group_3__051248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1_in_rule__XBasicForLoopExpression__Group_3__051251 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0_in_rule__XBasicForLoopExpression__Group_3__0__Impl51278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1__Impl_in_rule__XBasicForLoopExpression__Group_3__151308 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0_in_rule__XBasicForLoopExpression__Group_3__1__Impl51335 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0__Impl_in_rule__XBasicForLoopExpression__Group_3_1__051370 = new BitSet(new long[]{0x020FE218100001F0L,0x6800000000000108L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1_in_rule__XBasicForLoopExpression__Group_3_1__051373 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XBasicForLoopExpression__Group_3_1__0__Impl51401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1__Impl_in_rule__XBasicForLoopExpression__Group_3_1__151432 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1_in_rule__XBasicForLoopExpression__Group_3_1__1__Impl51459 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0__Impl_in_rule__XBasicForLoopExpression__Group_7__051493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1_in_rule__XBasicForLoopExpression__Group_7__051496 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0_in_rule__XBasicForLoopExpression__Group_7__0__Impl51523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1__Impl_in_rule__XBasicForLoopExpression__Group_7__151553 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0_in_rule__XBasicForLoopExpression__Group_7__1__Impl51580 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0__Impl_in_rule__XBasicForLoopExpression__Group_7_1__051615 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1_in_rule__XBasicForLoopExpression__Group_7_1__051618 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XBasicForLoopExpression__Group_7_1__0__Impl51646 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1__Impl_in_rule__XBasicForLoopExpression__Group_7_1__151677 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1_in_rule__XBasicForLoopExpression__Group_7_1__1__Impl51704 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0__Impl_in_rule__XWhileExpression__Group__051738 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1_in_rule__XWhileExpression__Group__051741 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1__Impl_in_rule__XWhileExpression__Group__151799 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2_in_rule__XWhileExpression__Group__151802 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_136_in_rule__XWhileExpression__Group__1__Impl51830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2__Impl_in_rule__XWhileExpression__Group__251861 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3_in_rule__XWhileExpression__Group__251864 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XWhileExpression__Group__2__Impl51892 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3__Impl_in_rule__XWhileExpression__Group__351923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4_in_rule__XWhileExpression__Group__351926 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__PredicateAssignment_3_in_rule__XWhileExpression__Group__3__Impl51953 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4__Impl_in_rule__XWhileExpression__Group__451983 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5_in_rule__XWhileExpression__Group__451986 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XWhileExpression__Group__4__Impl52014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5__Impl_in_rule__XWhileExpression__Group__552045 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XWhileExpression__BodyAssignment_5_in_rule__XWhileExpression__Group__5__Impl52072 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0__Impl_in_rule__XDoWhileExpression__Group__052114 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1_in_rule__XDoWhileExpression__Group__052117 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1__Impl_in_rule__XDoWhileExpression__Group__152175 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2_in_rule__XDoWhileExpression__Group__152178 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_137_in_rule__XDoWhileExpression__Group__1__Impl52206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2__Impl_in_rule__XDoWhileExpression__Group__252237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3_in_rule__XDoWhileExpression__Group__252240 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__BodyAssignment_2_in_rule__XDoWhileExpression__Group__2__Impl52267 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3__Impl_in_rule__XDoWhileExpression__Group__352297 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4_in_rule__XDoWhileExpression__Group__352300 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_136_in_rule__XDoWhileExpression__Group__3__Impl52328 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4__Impl_in_rule__XDoWhileExpression__Group__452359 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5_in_rule__XDoWhileExpression__Group__452362 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XDoWhileExpression__Group__4__Impl52390 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5__Impl_in_rule__XDoWhileExpression__Group__552421 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6_in_rule__XDoWhileExpression__Group__552424 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__PredicateAssignment_5_in_rule__XDoWhileExpression__Group__5__Impl52451 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6__Impl_in_rule__XDoWhileExpression__Group__652481 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XDoWhileExpression__Group__6__Impl52509 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0__Impl_in_rule__XBlockExpression__Group__052554 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1_in_rule__XBlockExpression__Group__052557 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1__Impl_in_rule__XBlockExpression__Group__152615 = new BitSet(new long[]{0x060FE218100001F0L,0x6800000000000108L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2_in_rule__XBlockExpression__Group__152618 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__XBlockExpression__Group__1__Impl52646 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2__Impl_in_rule__XBlockExpression__Group__252677 = new BitSet(new long[]{0x060FE218100001F0L,0x6800000000000108L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3_in_rule__XBlockExpression__Group__252680 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0_in_rule__XBlockExpression__Group__2__Impl52707 = new BitSet(new long[]{0x020FE218100001F2L,0x6800000000000108L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3__Impl_in_rule__XBlockExpression__Group__352738 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_rule__XBlockExpression__Group__3__Impl52766 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0__Impl_in_rule__XBlockExpression__Group_2__052805 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1_in_rule__XBlockExpression__Group_2__052808 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__ExpressionsAssignment_2_0_in_rule__XBlockExpression__Group_2__0__Impl52835 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1__Impl_in_rule__XBlockExpression__Group_2__152865 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_128_in_rule__XBlockExpression__Group_2__1__Impl52894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0__Impl_in_rule__XVariableDeclaration__Group__052931 = new BitSet(new long[]{0x0000200000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__1_in_rule__XVariableDeclaration__Group__052934 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__1__Impl_in_rule__XVariableDeclaration__Group__152992 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__2_in_rule__XVariableDeclaration__Group__152995 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Alternatives_1_in_rule__XVariableDeclaration__Group__1__Impl53022 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__2__Impl_in_rule__XVariableDeclaration__Group__253052 = new BitSet(new long[]{0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__3_in_rule__XVariableDeclaration__Group__253055 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Alternatives_2_in_rule__XVariableDeclaration__Group__2__Impl53082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__3__Impl_in_rule__XVariableDeclaration__Group__353112 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__0_in_rule__XVariableDeclaration__Group__3__Impl53139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0__Impl_in_rule__XVariableDeclaration__Group_2_0__053178 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__0_in_rule__XVariableDeclaration__Group_2_0__0__Impl53205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__0__Impl_in_rule__XVariableDeclaration__Group_2_0_0__053237 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__1_in_rule__XVariableDeclaration__Group_2_0_0__053240 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__TypeAssignment_2_0_0_0_in_rule__XVariableDeclaration__Group_2_0_0__0__Impl53267 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__1__Impl_in_rule__XVariableDeclaration__Group_2_0_0__153297 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_0_0_1_in_rule__XVariableDeclaration__Group_2_0_0__1__Impl53324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__0__Impl_in_rule__XVariableDeclaration__Group_3__053358 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__1_in_rule__XVariableDeclaration__Group_3__053361 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets023 {
-        public static final BitSet FOLLOW_13_in_rule__XVariableDeclaration__Group_3__0__Impl53389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__1__Impl_in_rule__XVariableDeclaration__Group_3__153420 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XVariableDeclaration__RightAssignment_3_1_in_rule__XVariableDeclaration__Group_3__1__Impl53447 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0__Impl_in_rule__JvmFormalParameter__Group__053481 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__1_in_rule__JvmFormalParameter__Group__053484 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__ParameterTypeAssignment_0_in_rule__JvmFormalParameter__Group__0__Impl53511 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__1__Impl_in_rule__JvmFormalParameter__Group__153542 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmFormalParameter__NameAssignment_1_in_rule__JvmFormalParameter__Group__1__Impl53569 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0__Impl_in_rule__FullJvmFormalParameter__Group__053603 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__1_in_rule__FullJvmFormalParameter__Group__053606 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__ParameterTypeAssignment_0_in_rule__FullJvmFormalParameter__Group__0__Impl53633 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__1__Impl_in_rule__FullJvmFormalParameter__Group__153663 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__NameAssignment_1_in_rule__FullJvmFormalParameter__Group__1__Impl53690 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0__Impl_in_rule__XFeatureCall__Group__053724 = new BitSet(new long[]{0x0007C00010000010L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__1_in_rule__XFeatureCall__Group__053727 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__1__Impl_in_rule__XFeatureCall__Group__153785 = new BitSet(new long[]{0x0007C00010000010L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__2_in_rule__XFeatureCall__Group__153788 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__0_in_rule__XFeatureCall__Group__1__Impl53815 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__2__Impl_in_rule__XFeatureCall__Group__253846 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__3_in_rule__XFeatureCall__Group__253849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureAssignment_2_in_rule__XFeatureCall__Group__2__Impl53876 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__3__Impl_in_rule__XFeatureCall__Group__353906 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__4_in_rule__XFeatureCall__Group__353909 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__0_in_rule__XFeatureCall__Group__3__Impl53936 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group__4__Impl_in_rule__XFeatureCall__Group__453967 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_4_in_rule__XFeatureCall__Group__4__Impl53994 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__0__Impl_in_rule__XFeatureCall__Group_1__054035 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__1_in_rule__XFeatureCall__Group_1__054038 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__XFeatureCall__Group_1__0__Impl54066 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__1__Impl_in_rule__XFeatureCall__Group_1__154097 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__2_in_rule__XFeatureCall__Group_1__154100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__TypeArgumentsAssignment_1_1_in_rule__XFeatureCall__Group_1__1__Impl54127 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__2__Impl_in_rule__XFeatureCall__Group_1__254157 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__3_in_rule__XFeatureCall__Group_1__254160 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__0_in_rule__XFeatureCall__Group_1__2__Impl54187 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__3__Impl_in_rule__XFeatureCall__Group_1__354218 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__XFeatureCall__Group_1__3__Impl54246 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__0__Impl_in_rule__XFeatureCall__Group_1_2__054285 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__1_in_rule__XFeatureCall__Group_1_2__054288 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XFeatureCall__Group_1_2__0__Impl54316 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__1__Impl_in_rule__XFeatureCall__Group_1_2__154347 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__TypeArgumentsAssignment_1_2_1_in_rule__XFeatureCall__Group_1_2__1__Impl54374 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__0__Impl_in_rule__XFeatureCall__Group_3__054408 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__1_in_rule__XFeatureCall__Group_3__054411 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__ExplicitOperationCallAssignment_3_0_in_rule__XFeatureCall__Group_3__0__Impl54438 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__1__Impl_in_rule__XFeatureCall__Group_3__154468 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__2_in_rule__XFeatureCall__Group_3__154471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Alternatives_3_1_in_rule__XFeatureCall__Group_3__1__Impl54498 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__2__Impl_in_rule__XFeatureCall__Group_3__254529 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XFeatureCall__Group_3__2__Impl54557 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0__Impl_in_rule__XFeatureCall__Group_3_1_1__054594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__1_in_rule__XFeatureCall__Group_3_1_1__054597 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0_in_rule__XFeatureCall__Group_3_1_1__0__Impl54624 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__1__Impl_in_rule__XFeatureCall__Group_3_1_1__154654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__0_in_rule__XFeatureCall__Group_3_1_1__1__Impl54681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__0__Impl_in_rule__XFeatureCall__Group_3_1_1_1__054716 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__1_in_rule__XFeatureCall__Group_3_1_1_1__054719 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XFeatureCall__Group_3_1_1_1__0__Impl54747 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__1__Impl_in_rule__XFeatureCall__Group_3_1_1_1__154778 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1_in_rule__XFeatureCall__Group_3_1_1_1__1__Impl54805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0__Impl_in_rule__XConstructorCall__Group__054839 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__1_in_rule__XConstructorCall__Group__054842 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__1__Impl_in_rule__XConstructorCall__Group__154900 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__2_in_rule__XConstructorCall__Group__154903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_138_in_rule__XConstructorCall__Group__1__Impl54931 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__2__Impl_in_rule__XConstructorCall__Group__254962 = new BitSet(new long[]{0x0000000010000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__3_in_rule__XConstructorCall__Group__254965 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ConstructorAssignment_2_in_rule__XConstructorCall__Group__2__Impl54992 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__3__Impl_in_rule__XConstructorCall__Group__355022 = new BitSet(new long[]{0x0000000010000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__4_in_rule__XConstructorCall__Group__355025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__0_in_rule__XConstructorCall__Group__3__Impl55052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__4__Impl_in_rule__XConstructorCall__Group__455083 = new BitSet(new long[]{0x0000000010000000L,0x4000000000000008L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__5_in_rule__XConstructorCall__Group__455086 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__0_in_rule__XConstructorCall__Group__4__Impl55113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group__5__Impl_in_rule__XConstructorCall__Group__555144 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_5_in_rule__XConstructorCall__Group__5__Impl55171 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__0__Impl_in_rule__XConstructorCall__Group_3__055214 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__1_in_rule__XConstructorCall__Group_3__055217 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__XConstructorCall__Group_3__0__Impl55246 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__1__Impl_in_rule__XConstructorCall__Group_3__155278 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__2_in_rule__XConstructorCall__Group_3__155281 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__TypeArgumentsAssignment_3_1_in_rule__XConstructorCall__Group_3__1__Impl55308 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__2__Impl_in_rule__XConstructorCall__Group_3__255338 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__3_in_rule__XConstructorCall__Group_3__255341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__0_in_rule__XConstructorCall__Group_3__2__Impl55368 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__3__Impl_in_rule__XConstructorCall__Group_3__355399 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__XConstructorCall__Group_3__3__Impl55427 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__0__Impl_in_rule__XConstructorCall__Group_3_2__055466 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__1_in_rule__XConstructorCall__Group_3_2__055469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XConstructorCall__Group_3_2__0__Impl55497 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__1__Impl_in_rule__XConstructorCall__Group_3_2__155528 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__TypeArgumentsAssignment_3_2_1_in_rule__XConstructorCall__Group_3_2__1__Impl55555 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__0__Impl_in_rule__XConstructorCall__Group_4__055589 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__1_in_rule__XConstructorCall__Group_4__055592 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0_in_rule__XConstructorCall__Group_4__0__Impl55619 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__1__Impl_in_rule__XConstructorCall__Group_4__155649 = new BitSet(new long[]{0x020FC219100001F0L,0x6800000000000018L,0x000000001802FF8AL});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__2_in_rule__XConstructorCall__Group_4__155652 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Alternatives_4_1_in_rule__XConstructorCall__Group_4__1__Impl55679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__2__Impl_in_rule__XConstructorCall__Group_4__255710 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XConstructorCall__Group_4__2__Impl55738 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets024 {
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0__Impl_in_rule__XConstructorCall__Group_4_1_1__055775 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__1_in_rule__XConstructorCall__Group_4_1_1__055778 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_1_0_in_rule__XConstructorCall__Group_4_1_1__0__Impl55805 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__1__Impl_in_rule__XConstructorCall__Group_4_1_1__155835 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__0_in_rule__XConstructorCall__Group_4_1_1__1__Impl55862 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__0__Impl_in_rule__XConstructorCall__Group_4_1_1_1__055897 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__1_in_rule__XConstructorCall__Group_4_1_1_1__055900 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XConstructorCall__Group_4_1_1_1__0__Impl55928 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__1__Impl_in_rule__XConstructorCall__Group_4_1_1_1__155959 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1_in_rule__XConstructorCall__Group_4_1_1_1__1__Impl55986 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0__Impl_in_rule__XBooleanLiteral__Group__056020 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__1_in_rule__XBooleanLiteral__Group__056023 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__1__Impl_in_rule__XBooleanLiteral__Group__156081 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XBooleanLiteral__Alternatives_1_in_rule__XBooleanLiteral__Group__1__Impl56108 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0__Impl_in_rule__XNullLiteral__Group__056142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_rule__XNullLiteral__Group__1_in_rule__XNullLiteral__Group__056145 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNullLiteral__Group__1__Impl_in_rule__XNullLiteral__Group__156203 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_139_in_rule__XNullLiteral__Group__1__Impl56231 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0__Impl_in_rule__XNumberLiteral__Group__056266 = new BitSet(new long[]{0x00000000000000E0L});
-        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__1_in_rule__XNumberLiteral__Group__056269 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__1__Impl_in_rule__XNumberLiteral__Group__156327 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XNumberLiteral__ValueAssignment_1_in_rule__XNumberLiteral__Group__1__Impl56354 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0__Impl_in_rule__XStringLiteral__Group__056388 = new BitSet(new long[]{0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__XStringLiteral__Group__1_in_rule__XStringLiteral__Group__056391 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XStringLiteral__Group__1__Impl_in_rule__XStringLiteral__Group__156449 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XStringLiteral__ValueAssignment_1_in_rule__XStringLiteral__Group__1__Impl56476 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0__Impl_in_rule__XTypeLiteral__Group__056510 = new BitSet(new long[]{0x00080000000001E0L,0x6000000000000000L,0x0000000010001800L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__1_in_rule__XTypeLiteral__Group__056513 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__1__Impl_in_rule__XTypeLiteral__Group__156571 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__2_in_rule__XTypeLiteral__Group__156574 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_140_in_rule__XTypeLiteral__Group__1__Impl56602 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__2__Impl_in_rule__XTypeLiteral__Group__256633 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__3_in_rule__XTypeLiteral__Group__256636 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XTypeLiteral__Group__2__Impl56664 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__3__Impl_in_rule__XTypeLiteral__Group__356695 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000010L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__4_in_rule__XTypeLiteral__Group__356698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__TypeAssignment_3_in_rule__XTypeLiteral__Group__3__Impl56725 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__4__Impl_in_rule__XTypeLiteral__Group__456755 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000010L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__5_in_rule__XTypeLiteral__Group__456758 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__ArrayDimensionsAssignment_4_in_rule__XTypeLiteral__Group__4__Impl56785 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__5__Impl_in_rule__XTypeLiteral__Group__556816 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XTypeLiteral__Group__5__Impl56844 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0__Impl_in_rule__XThrowExpression__Group__056887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__1_in_rule__XThrowExpression__Group__056890 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__1__Impl_in_rule__XThrowExpression__Group__156948 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__2_in_rule__XThrowExpression__Group__156951 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_141_in_rule__XThrowExpression__Group__1__Impl56979 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__Group__2__Impl_in_rule__XThrowExpression__Group__257010 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XThrowExpression__ExpressionAssignment_2_in_rule__XThrowExpression__Group__2__Impl57037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0__Impl_in_rule__XReturnExpression__Group__057073 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__1_in_rule__XReturnExpression__Group__057076 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__1__Impl_in_rule__XReturnExpression__Group__157134 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__2_in_rule__XReturnExpression__Group__157137 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_142_in_rule__XReturnExpression__Group__1__Impl57165 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__Group__2__Impl_in_rule__XReturnExpression__Group__257196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XReturnExpression__ExpressionAssignment_2_in_rule__XReturnExpression__Group__2__Impl57223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0__Impl_in_rule__XTryCatchFinallyExpression__Group__057260 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__1_in_rule__XTryCatchFinallyExpression__Group__057263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__1__Impl_in_rule__XTryCatchFinallyExpression__Group__157321 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__2_in_rule__XTryCatchFinallyExpression__Group__157324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_143_in_rule__XTryCatchFinallyExpression__Group__1__Impl57352 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__2__Impl_in_rule__XTryCatchFinallyExpression__Group__257383 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000050000L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__3_in_rule__XTryCatchFinallyExpression__Group__257386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__ExpressionAssignment_2_in_rule__XTryCatchFinallyExpression__Group__2__Impl57413 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__3__Impl_in_rule__XTryCatchFinallyExpression__Group__357443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Alternatives_3_in_rule__XTryCatchFinallyExpression__Group__3__Impl57470 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0__057508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__1_in_rule__XTryCatchFinallyExpression__Group_3_0__057511 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0_in_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl57540 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0_in_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl57552 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0__157585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__0_in_rule__XTryCatchFinallyExpression__Group_3_0__1__Impl57612 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0_1__057647 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__1_in_rule__XTryCatchFinallyExpression__Group_3_0_1__057650 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_144_in_rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl57679 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0_1__157711 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1_in_rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl57738 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_1__057772 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__1_in_rule__XTryCatchFinallyExpression__Group_3_1__057775 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_144_in_rule__XTryCatchFinallyExpression__Group_3_1__0__Impl57803 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_1__157834 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1_in_rule__XTryCatchFinallyExpression__Group_3_1__1__Impl57861 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0__Impl_in_rule__XSynchronizedExpression__Group__057895 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__1_in_rule__XSynchronizedExpression__Group__057898 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0__0_in_rule__XSynchronizedExpression__Group__0__Impl57925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__1__Impl_in_rule__XSynchronizedExpression__Group__157955 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__2_in_rule__XSynchronizedExpression__Group__157958 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__ParamAssignment_1_in_rule__XSynchronizedExpression__Group__1__Impl57985 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__2__Impl_in_rule__XSynchronizedExpression__Group__258015 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__3_in_rule__XSynchronizedExpression__Group__258018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XSynchronizedExpression__Group__2__Impl58046 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__3__Impl_in_rule__XSynchronizedExpression__Group__358077 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__ExpressionAssignment_3_in_rule__XSynchronizedExpression__Group__3__Impl58104 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0__0__Impl_in_rule__XSynchronizedExpression__Group_0__058142 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__0_in_rule__XSynchronizedExpression__Group_0__0__Impl58169 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__0__Impl_in_rule__XSynchronizedExpression__Group_0_0__058201 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__1_in_rule__XSynchronizedExpression__Group_0_0__058204 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__1__Impl_in_rule__XSynchronizedExpression__Group_0_0__158262 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__2_in_rule__XSynchronizedExpression__Group_0_0__158265 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_145_in_rule__XSynchronizedExpression__Group_0_0__1__Impl58293 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets025 {
-        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__2__Impl_in_rule__XSynchronizedExpression__Group_0_0__258324 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XSynchronizedExpression__Group_0_0__2__Impl58352 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__0__Impl_in_rule__XCatchClause__Group__058389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__1_in_rule__XCatchClause__Group__058392 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_146_in_rule__XCatchClause__Group__0__Impl58421 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__1__Impl_in_rule__XCatchClause__Group__158453 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__2_in_rule__XCatchClause__Group__158456 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XCatchClause__Group__1__Impl58484 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__2__Impl_in_rule__XCatchClause__Group__258515 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__3_in_rule__XCatchClause__Group__258518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__DeclaredParamAssignment_2_in_rule__XCatchClause__Group__2__Impl58545 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__3__Impl_in_rule__XCatchClause__Group__358575 = new BitSet(new long[]{0x020FC218100001F0L,0x6800000000000008L,0x000000001002FF8AL});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__4_in_rule__XCatchClause__Group__358578 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XCatchClause__Group__3__Impl58606 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__Group__4__Impl_in_rule__XCatchClause__Group__458637 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XCatchClause__ExpressionAssignment_4_in_rule__XCatchClause__Group__4__Impl58664 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1__0__Impl_in_rule__Number__Group_1__058704 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__Number__Group_1__1_in_rule__Number__Group_1__058707 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Alternatives_1_0_in_rule__Number__Group_1__0__Impl58734 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1__1__Impl_in_rule__Number__Group_1__158764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1_1__0_in_rule__Number__Group_1__1__Impl58791 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1_1__0__Impl_in_rule__Number__Group_1_1__058826 = new BitSet(new long[]{0x00000000000000C0L});
-        public static final BitSet FOLLOW_rule__Number__Group_1_1__1_in_rule__Number__Group_1_1__058829 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__Number__Group_1_1__0__Impl58857 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Group_1_1__1__Impl_in_rule__Number__Group_1_1__158888 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__Number__Alternatives_1_1_1_in_rule__Number__Group_1_1__1__Impl58915 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0__Impl_in_rule__JvmTypeReference__Group_0__058950 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__1_in_rule__JvmTypeReference__Group_0__058953 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_rule__JvmTypeReference__Group_0__0__Impl58980 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__1__Impl_in_rule__JvmTypeReference__Group_0__159009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1__0_in_rule__JvmTypeReference__Group_0__1__Impl59036 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1__0__Impl_in_rule__JvmTypeReference__Group_0_1__059071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__0_in_rule__JvmTypeReference__Group_0_1__0__Impl59098 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__0__Impl_in_rule__JvmTypeReference__Group_0_1_0__059130 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__1_in_rule__JvmTypeReference__Group_0_1_0__059133 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__1__Impl_in_rule__JvmTypeReference__Group_0_1_0__159191 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleArrayBrackets_in_rule__JvmTypeReference__Group_0_1_0__1__Impl59218 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0__Impl_in_rule__ArrayBrackets__Group__059251 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__1_in_rule__ArrayBrackets__Group__059254 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_126_in_rule__ArrayBrackets__Group__0__Impl59282 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__1__Impl_in_rule__ArrayBrackets__Group__159313 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_124_in_rule__ArrayBrackets__Group__1__Impl59341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0__Impl_in_rule__XFunctionTypeRef__Group__059376 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__1_in_rule__XFunctionTypeRef__Group__059379 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__0_in_rule__XFunctionTypeRef__Group__0__Impl59406 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__1__Impl_in_rule__XFunctionTypeRef__Group__159437 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__2_in_rule__XFunctionTypeRef__Group__159440 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_32_in_rule__XFunctionTypeRef__Group__1__Impl59468 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__2__Impl_in_rule__XFunctionTypeRef__Group__259499 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ReturnTypeAssignment_2_in_rule__XFunctionTypeRef__Group__2__Impl59526 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__0__Impl_in_rule__XFunctionTypeRef__Group_0__059562 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000018L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__1_in_rule__XFunctionTypeRef__Group_0__059565 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XFunctionTypeRef__Group_0__0__Impl59593 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__1__Impl_in_rule__XFunctionTypeRef__Group_0__159624 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000018L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__2_in_rule__XFunctionTypeRef__Group_0__159627 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__0_in_rule__XFunctionTypeRef__Group_0__1__Impl59654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__2__Impl_in_rule__XFunctionTypeRef__Group_0__259685 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_rule__XFunctionTypeRef__Group_0__2__Impl59713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__0__Impl_in_rule__XFunctionTypeRef__Group_0_1__059750 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__1_in_rule__XFunctionTypeRef__Group_0_1__059753 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0_in_rule__XFunctionTypeRef__Group_0_1__0__Impl59780 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__1__Impl_in_rule__XFunctionTypeRef__Group_0_1__159810 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__0_in_rule__XFunctionTypeRef__Group_0_1__1__Impl59837 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__0__Impl_in_rule__XFunctionTypeRef__Group_0_1_1__059872 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__1_in_rule__XFunctionTypeRef__Group_0_1_1__059875 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__XFunctionTypeRef__Group_0_1_1__0__Impl59903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__1__Impl_in_rule__XFunctionTypeRef__Group_0_1_1__159934 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1_in_rule__XFunctionTypeRef__Group_0_1_1__1__Impl59961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0__Impl_in_rule__JvmParameterizedTypeReference__Group__059995 = new BitSet(new long[]{0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__1_in_rule__JvmParameterizedTypeReference__Group__059998 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__TypeAssignment_0_in_rule__JvmParameterizedTypeReference__Group__0__Impl60025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__1__Impl_in_rule__JvmParameterizedTypeReference__Group__160055 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__0_in_rule__JvmParameterizedTypeReference__Group__1__Impl60082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1__060117 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__1_in_rule__JvmParameterizedTypeReference__Group_1__060120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__JvmParameterizedTypeReference__Group_1__0__Impl60149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1__160181 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__2_in_rule__JvmParameterizedTypeReference__Group_1__160184 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1_in_rule__JvmParameterizedTypeReference__Group_1__1__Impl60211 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1__260241 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__3_in_rule__JvmParameterizedTypeReference__Group_1__260244 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__0_in_rule__JvmParameterizedTypeReference__Group_1__2__Impl60271 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__3__Impl_in_rule__JvmParameterizedTypeReference__Group_1__360302 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__4_in_rule__JvmParameterizedTypeReference__Group_1__360305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__JvmParameterizedTypeReference__Group_1__3__Impl60333 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__4__Impl_in_rule__JvmParameterizedTypeReference__Group_1__460364 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__0_in_rule__JvmParameterizedTypeReference__Group_1__4__Impl60391 = new BitSet(new long[]{0x0000100000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_2__060432 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__1_in_rule__JvmParameterizedTypeReference__Group_1_2__060435 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__JvmParameterizedTypeReference__Group_1_2__0__Impl60463 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_2__160494 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1_in_rule__JvmParameterizedTypeReference__Group_1_2__1__Impl60521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__060555 = new BitSet(new long[]{0x0000000000000010L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__1_in_rule__JvmParameterizedTypeReference__Group_1_4__060558 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0__0_in_rule__JvmParameterizedTypeReference__Group_1_4__0__Impl60585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__160615 = new BitSet(new long[]{0x0000000010000000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__2_in_rule__JvmParameterizedTypeReference__Group_1_4__160618 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1_in_rule__JvmParameterizedTypeReference__Group_1_4__1__Impl60645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__260675 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__0_in_rule__JvmParameterizedTypeReference__Group_1_4__2__Impl60702 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets026 {
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0__060739 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__0_in_rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl60766 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__060798 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__060801 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__160859 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl60887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__060922 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__1_in_rule__JvmParameterizedTypeReference__Group_1_4_2__060925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl60954 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__160986 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__2_in_rule__JvmParameterizedTypeReference__Group_1_4_2__160989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1_in_rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl61016 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__261046 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__3_in_rule__JvmParameterizedTypeReference__Group_1_4_2__261049 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0_in_rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl61076 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__361107 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl61135 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__061174 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__061177 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_69_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl61205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__161236 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl61263 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0__Impl_in_rule__JvmWildcardTypeReference__Group__061297 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L,0x0000000000080000L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__1_in_rule__JvmWildcardTypeReference__Group__061300 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__1__Impl_in_rule__JvmWildcardTypeReference__Group__161358 = new BitSet(new long[]{0x0004400000000000L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__2_in_rule__JvmWildcardTypeReference__Group__161361 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_147_in_rule__JvmWildcardTypeReference__Group__1__Impl61389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__2__Impl_in_rule__JvmWildcardTypeReference__Group__261420 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Alternatives_2_in_rule__JvmWildcardTypeReference__Group__2__Impl61447 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0__Impl_in_rule__JvmWildcardTypeReference__Group_2_0__061484 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__1_in_rule__JvmWildcardTypeReference__Group_2_0__061487 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0_in_rule__JvmWildcardTypeReference__Group_2_0__0__Impl61514 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__1__Impl_in_rule__JvmWildcardTypeReference__Group_2_0__161544 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1_in_rule__JvmWildcardTypeReference__Group_2_0__1__Impl61571 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0__Impl_in_rule__JvmWildcardTypeReference__Group_2_1__061606 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__1_in_rule__JvmWildcardTypeReference__Group_2_1__061609 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0_in_rule__JvmWildcardTypeReference__Group_2_1__0__Impl61636 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__1__Impl_in_rule__JvmWildcardTypeReference__Group_2_1__161666 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1_in_rule__JvmWildcardTypeReference__Group_2_1__1__Impl61693 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0__Impl_in_rule__JvmUpperBound__Group__061728 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__1_in_rule__JvmUpperBound__Group__061731 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_46_in_rule__JvmUpperBound__Group__0__Impl61759 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__1__Impl_in_rule__JvmUpperBound__Group__161790 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBound__TypeReferenceAssignment_1_in_rule__JvmUpperBound__Group__1__Impl61817 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0__Impl_in_rule__JvmUpperBoundAnded__Group__061851 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__1_in_rule__JvmUpperBoundAnded__Group__061854 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_148_in_rule__JvmUpperBoundAnded__Group__0__Impl61882 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__1__Impl_in_rule__JvmUpperBoundAnded__Group__161913 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__TypeReferenceAssignment_1_in_rule__JvmUpperBoundAnded__Group__1__Impl61940 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0__Impl_in_rule__JvmLowerBound__Group__061974 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__1_in_rule__JvmLowerBound__Group__061977 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_50_in_rule__JvmLowerBound__Group__0__Impl62005 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__1__Impl_in_rule__JvmLowerBound__Group__162036 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBound__TypeReferenceAssignment_1_in_rule__JvmLowerBound__Group__1__Impl62063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0__Impl_in_rule__JvmLowerBoundAnded__Group__062097 = new BitSet(new long[]{0x0000000100000010L,0x0000000000000008L});
-        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__1_in_rule__JvmLowerBoundAnded__Group__062100 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_148_in_rule__JvmLowerBoundAnded__Group__0__Impl62128 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__1__Impl_in_rule__JvmLowerBoundAnded__Group__162159 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__TypeReferenceAssignment_1_in_rule__JvmLowerBoundAnded__Group__1__Impl62186 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0__Impl_in_rule__QualifiedNameWithWildcard__Group__062222 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__1_in_rule__QualifiedNameWithWildcard__Group__062225 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__QualifiedNameWithWildcard__Group__0__Impl62252 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__1__Impl_in_rule__QualifiedNameWithWildcard__Group__162281 = new BitSet(new long[]{0x0000002000000000L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__2_in_rule__QualifiedNameWithWildcard__Group__162284 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__QualifiedNameWithWildcard__Group__1__Impl62312 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__2__Impl_in_rule__QualifiedNameWithWildcard__Group__262343 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_37_in_rule__QualifiedNameWithWildcard__Group__2__Impl62371 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0__Impl_in_rule__XImportDeclaration__Group__062408 = new BitSet(new long[]{0x0000800000000010L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__1_in_rule__XImportDeclaration__Group__062411 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_48_in_rule__XImportDeclaration__Group__0__Impl62439 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__1__Impl_in_rule__XImportDeclaration__Group__162470 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__2_in_rule__XImportDeclaration__Group__162473 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Alternatives_1_in_rule__XImportDeclaration__Group__1__Impl62500 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__2__Impl_in_rule__XImportDeclaration__Group__262530 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_128_in_rule__XImportDeclaration__Group__2__Impl62559 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0__Impl_in_rule__XImportDeclaration__Group_1_0__062598 = new BitSet(new long[]{0x0002000000000010L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__1_in_rule__XImportDeclaration__Group_1_0__062601 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__StaticAssignment_1_0_0_in_rule__XImportDeclaration__Group_1_0__0__Impl62628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__1__Impl_in_rule__XImportDeclaration__Group_1_0__162658 = new BitSet(new long[]{0x0002000000000010L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__2_in_rule__XImportDeclaration__Group_1_0__162661 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__ExtensionAssignment_1_0_1_in_rule__XImportDeclaration__Group_1_0__1__Impl62688 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__2__Impl_in_rule__XImportDeclaration__Group_1_0__262719 = new BitSet(new long[]{0x0000002000000010L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__3_in_rule__XImportDeclaration__Group_1_0__262722 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_0_2_in_rule__XImportDeclaration__Group_1_0__2__Impl62749 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__3__Impl_in_rule__XImportDeclaration__Group_1_0__362779 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__XImportDeclaration__Alternatives_1_0_3_in_rule__XImportDeclaration__Group_1_0__3__Impl62806 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0__Impl_in_rule__QualifiedNameInStaticImport__Group__062844 = new BitSet(new long[]{0x0000100000000000L});
-        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__1_in_rule__QualifiedNameInStaticImport__Group__062847 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedNameInStaticImport__Group__0__Impl62874 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__1__Impl_in_rule__QualifiedNameInStaticImport__Group__162903 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rule__QualifiedNameInStaticImport__Group__1__Impl62931 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockPackage_in_rule__EntityMockModel__PackagesAssignment62971 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityModelImport_in_rule__EntityMockPackage__ImportsAssignment_163002 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__EntityMockPackage__RunPriorityAssignment_3_163033 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityModelImport_in_rule__EntityMockPackage__ImportsAssignment_4_163064 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRunningDataInterchanges_in_rule__EntityMockPackage__DatainterchangesAssignment_563095 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResources_in_rule__EntityMockPackage__ResourcesAssignment_663126 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjects_in_rule__EntityMockPackage__ObjectsAssignment_763157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockDataTypes_in_rule__EntityMockPackage__DatatypesAssignment_863188 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntities_in_rule__EntityMockPackage__EntitiesAssignment_963219 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets027 {
-        public static final BitSet FOLLOW_ruleEntityMockQualifiedNameWithWildCard_in_rule__EntityModelImport__ImportedNamespaceAssignment63250 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRunningDataInterchange_in_rule__RunningDataInterchanges__DatainterchangesAssignment_363281 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__RunningDataInterchange__DatainterchangeRefAssignment_263316 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_STRING_in_rule__RunningDataInterchange__FileURLAssignment_463351 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResource_in_rule__EntityMockResources__ResourcesAssignment_363382 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockResource__NameAssignment_163413 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResourceAttribute_in_rule__EntityMockResource__AttributesAssignment_3_2_063444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockResourceDataRow_in_rule__EntityMockResource__DatarowsAssignment_663475 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockResourceAttribute__NameAssignment_163506 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockResourceDataRow__NameAssignment_163537 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_STRING_in_rule__EntityMockResourceDataRow__ValuesAssignment_2_1_063568 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObject_in_rule__EntityMockObjects__ObjectsAssignment_363599 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObject__NameAssignment_163630 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectEnum_in_rule__EntityMockObject__EnumerationsAssignment_363661 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIEntityMockObjectAttribute_in_rule__EntityMockObject__AttributesAssignment_463692 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFunction_in_rule__EntityMockObject__CalculationsAssignment_563723 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectEnum__NameAssignment_163754 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectEnum__UsingResourceAssignment_363789 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockDataType_in_rule__EntityMockDataTypes__DatatypesAssignment_363824 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectPlainValue__NameAssignment_163855 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_STRING_in_rule__EntityMockObjectPlainValue__ValuesAssignment_3_063886 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectResourceValue__NameAssignment_163917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectResourceValue__ResourceEnumAssignment_363952 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectResourceValue__ResourceAttributeAssignment_4_163991 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectArrayValue__NameAssignment_164026 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectArrayValue__EnumerationAssignment_364061 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectItemValue_in_rule__EntityMockObjectArrayValue__ItemsAssignment_564096 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectItemValue__DatarowAssignment_164131 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_STRING_in_rule__EntityMockObjectItemValue__ValuesAssignment_3_064166 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectEmbed__NameAssignment_264197 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectEmbed__ObjectAssignment_464232 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectFunction__NameAssignment_164267 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_rule__EntityMockObjectFunction__OftypeAssignment_364298 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFunctionParameter_in_rule__EntityMockObjectFunction__ParamsAssignment_6_064329 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockObjectFunctionParameter_in_rule__EntityMockObjectFunction__ParamsAssignment_6_1_164360 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__EntityMockObjectFunction__BodyAssignment_864391 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__EntityMockObjectFunctionParameter__ParameterTypeAssignment_064422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockObjectFunctionParameter__NameAssignment_164457 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockObjectFill__NameAssignment_164492 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerType_in_rule__EntityMockObjectFill__FillerTypeAssignment_364523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerDateFuture__DateFutureYearsAssignment_164554 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerDatePast__DatePastYearsAssignment_164585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerDateRange__DateBeginYearsAssignment_164616 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerDateRange__DateEndYearsAssignment_364647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_064678 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_164713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_064748 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_164783 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_364818 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_164849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_264880 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_064911 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_164946 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_064981 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_165016 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_165051 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_265082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_STRING_in_rule__PropertyFillerTextRandom__ItemsAssignment_265113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerTextParagraphs__CountAssignment_265144 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerTextSentences__CountAssignment_265175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerTextWords__CountAssignment_265206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_065237 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_165272 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_065307 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_165342 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_365377 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_165408 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_265439 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_065470 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_165505 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_065540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_165575 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_165610 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_265641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockDataType__NameAssignment_165672 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntity_in_rule__EntityMockEntities__EntitiesAssignment_365703 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockEntity__NameAssignment_165734 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntity__EntityRefAssignment_365769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__EntityMockEntity__MinRowsAssignment_4_0_165804 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__EntityMockEntity__MaxRowsAssignment_4_0_365835 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockTemporary_in_rule__EntityMockEntity__TemporariesAssignment_4_0_565866 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIEntityMockAttribute_in_rule__EntityMockEntity__AttributesAssignment_4_0_665897 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunction_in_rule__EntityMockEntity__CalculationsAssignment_4_0_765928 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntity__ByResourceAssignment_4_1_165963 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockByResourceAttribute_in_rule__EntityMockEntity__ByResourceAttributesAssignment_4_1_365998 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_149_in_rule__EntityMockEntity__CreateBlobMappingAssignment_4_1_466034 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntity__IteratorAssignment_4_2_166077 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIIterate_in_rule__EntityMockEntity__IterateAssignment_4_2_366112 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockTemporary_in_rule__EntityMockEntity__TemporariesAssignment_4_2_566143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIEntityMockAttribute_in_rule__EntityMockEntity__AttributesAssignment_4_2_666174 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunction_in_rule__EntityMockEntity__CalculationsAssignment_4_2_766205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__IntegerIterate__FromAssignment_166236 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSINT_in_rule__IntegerIterate__UntilAssignment_366267 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__IntegerIterate__StepAssignment_566298 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDate_in_rule__DateIterate__FromAssignment_166329 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDate_in_rule__DateIterate__UntilAssignment_366360 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__DateIterate__StepCountAssignment_566391 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEDateStepType_in_rule__DateIterate__StepTypeAssignment_666422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_150_in_rule__Date__YesterdayAssignment_066458 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_151_in_rule__Date__TodayAssignment_166502 = new BitSet(new long[]{0x0000000000000002L});
-    }
-
-    protected static class FollowSets028 {
-        public static final BitSet FOLLOW_152_in_rule__Date__TomorrowAssignment_266546 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__Date__YearAssignment_3_066585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__Date__MonthAssignment_3_266616 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__Date__DayAssignment_3_466647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockByResourceAttribute__AttributeRefAssignment_266682 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockByResourceAttribute__ResourceAttributeAssignment_466721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__EntityMockTemporary__NameAssignment_166756 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockTemporary__ObjectAssignment_366791 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntityFunction__AttributeRefAssignment_166830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunctionParameter_in_rule__EntityMockEntityFunction__ParamsAssignment_4_066865 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockEntityFunctionParameter_in_rule__EntityMockEntityFunction__ParamsAssignment_4_1_166896 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__EntityMockEntityFunction__BodyAssignment_666927 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntityFunctionParameter__AttributeRefAssignment_066962 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_067001 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntityFunctionParameter__ReferencePathsAssignment_1_1_167040 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockEntityFunctionParameter__ReferenceRefAssignment_1_367079 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockReferencedObjectAttribute__TemporaryAssignment_167118 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockReferencedObjectAttribute__EmbeddedAssignment_2_167157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockReferencedObjectAttribute__AttributeAssignment_467196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeByObject__AttributeRefAssignment_0_167235 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEntityMockReferencedObjectAttribute_in_rule__EntityMockAttributeByObject__ReferenceAssignment_0_2_167270 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeByObject__ResourceEnumAssignment_1_167305 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeByObject__ResourceAttributeAssignment_1_367344 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeFiller__AttributeRefAssignment_167383 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePropertyFillerType_in_rule__EntityMockAttributeFiller__FillerTypeAssignment_367418 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeByReference__AttributeRefAssignment_167453 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ID_in_rule__EntityMockAttributeByReference__MockedEntityAssignment_3_167492 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_rule__EntityMockAttributeByReference__OptionalForAssignment_4_167527 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__XAnnotation__AnnotationTypeAssignment_267562 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_067597 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_167628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_rule__XAnnotation__ValueAssignment_3_1_167659 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleValidID_in_rule__XAnnotationElementValuePair__ElementAssignment_0_0_067694 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_rule__XAnnotationElementValuePair__ValueAssignment_167729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_067760 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_167791 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_167822 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__ElementsAssignment_0_1_067853 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__ElementsAssignment_0_1_1_167884 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__XAssignment__FeatureAssignment_0_167919 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAssignment_in_rule__XAssignment__ValueAssignment_0_367954 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpMultiAssign_in_rule__XAssignment__FeatureAssignment_1_1_0_0_167989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAssignment_in_rule__XAssignment__RightOperandAssignment_1_1_168024 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpOr_in_rule__XOrExpression__FeatureAssignment_1_0_0_168059 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__RightOperandAssignment_1_168094 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpAnd_in_rule__XAndExpression__FeatureAssignment_1_0_0_168129 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__RightOperandAssignment_1_168164 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpEquality_in_rule__XEqualityExpression__FeatureAssignment_1_0_0_168199 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__RightOperandAssignment_1_168234 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__XRelationalExpression__TypeAssignment_1_0_168265 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpCompare_in_rule__XRelationalExpression__FeatureAssignment_1_1_0_0_168300 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__RightOperandAssignment_1_1_168335 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpOther_in_rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_168370 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__RightOperandAssignment_1_168405 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpAdd_in_rule__XAdditiveExpression__FeatureAssignment_1_0_0_168440 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__RightOperandAssignment_1_168475 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpMulti_in_rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_168510 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__RightOperandAssignment_1_168545 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpUnary_in_rule__XUnaryOperation__FeatureAssignment_0_168580 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XUnaryOperation__OperandAssignment_0_268615 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__XCastedExpression__TypeAssignment_1_168646 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleOpPostfix_in_rule__XPostfixOperation__FeatureAssignment_1_0_168681 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_153_in_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_168721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_268764 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXAssignment_in_rule__XMemberFeatureCall__ValueAssignment_1_0_168799 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_154_in_rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_168835 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_153_in_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_268879 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_168918 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_168949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdOrSuper_in_rule__XMemberFeatureCall__FeatureAssignment_1_1_268984 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_069024 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXShortClosure_in_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_069063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_069094 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_169125 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXClosure_in_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_469156 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XSetLiteral__ElementsAssignment_3_069187 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XSetLiteral__ElementsAssignment_3_1_169218 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XListLiteral__ElementsAssignment_3_069249 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpression_in_rule__XListLiteral__ElementsAssignment_3_1_169280 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_069311 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_169342 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_155_in_rule__XClosure__ExplicitSyntaxAssignment_1_0_169378 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_rule__XClosure__ExpressionAssignment_269417 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/internal/EntityMockDSLActivator.java b/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/internal/EntityMockDSLActivator.java
deleted file mode 100644
index 5c13e58..0000000
--- a/org.eclipse.osbp.xtext.entitymock.ui/src-gen/org/eclipse/osbp/xtext/entitymock/ui/internal/EntityMockDSLActivator.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
-package org.eclipse.osbp.xtext.entitymock.ui.internal;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.eclipse.xtext.util.Modules2;
-import org.osgi.framework.BundleContext;
-
-import com.google.common.collect.Maps;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-/**
- * This class was generated. Customizations should only happen in a newly
- * introduced subclass. 
- */
-public class EntityMockDSLActivator extends AbstractUIPlugin {
-	
-	public static final String ORG_ECLIPSE_OSBP_XTEXT_ENTITYMOCK_ENTITYMOCKDSL = "org.eclipse.osbp.xtext.entitymock.EntityMockDSL";
-	
-	private static final Logger logger = Logger.getLogger(EntityMockDSLActivator.class);
-	
-	private static EntityMockDSLActivator INSTANCE;
-	
-	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
-	
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		INSTANCE = this;
-	}
-	
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		injectors.clear();
-		INSTANCE = null;
-		super.stop(context);
-	}
-	
-	public static EntityMockDSLActivator getInstance() {
-		return INSTANCE;
-	}
-	
-	public Injector getInjector(String language) {
-		synchronized (injectors) {
-			Injector injector = injectors.get(language);
-			if (injector == null) {
-				injectors.put(language, injector = createInjector(language));
-			}
-			return injector;
-		}
-	}
-	
-	protected Injector createInjector(String language) {
-		try {
-			Module runtimeModule = getRuntimeModule(language);
-			Module sharedStateModule = getSharedStateModule();
-			Module uiModule = getUiModule(language);
-			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
-			return Guice.createInjector(mergedModule);
-		} catch (Exception e) {
-			logger.error("Failed to create injector for " + language);
-			logger.error(e.getMessage(), e);
-			throw new RuntimeException("Failed to create injector for " + language, e);
-		}
-	}
-
-	protected Module getRuntimeModule(String grammar) {
-		if (ORG_ECLIPSE_OSBP_XTEXT_ENTITYMOCK_ENTITYMOCKDSL.equals(grammar)) {
-			return new org.eclipse.osbp.xtext.entitymock.EntityMockDSLRuntimeModule();
-		}
-		
-		throw new IllegalArgumentException(grammar);
-	}
-	
-	protected Module getUiModule(String grammar) {
-		if (ORG_ECLIPSE_OSBP_XTEXT_ENTITYMOCK_ENTITYMOCKDSL.equals(grammar)) {
-			return new org.eclipse.osbp.xtext.entitymock.ui.EntityMockDSLUiModule(this);
-		}
-		
-		throw new IllegalArgumentException(grammar);
-	}
-	
-	protected Module getSharedStateModule() {
-		return new SharedStateModule();
-	}
-	
-}
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataType.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataType.java
deleted file mode 100644
index 883968c..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataType.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Entity Mock Data Type</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.EntityMockDataType#getName <em>Name</em>}</li>
- * </ul>
- * </p>
- *
- * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockDataType()
- * @model
- * @generated
- */
-public interface EntityMockDataType extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Name</em>' attribute.
-	 * @see #setName(String)
-	 * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockDataType_Name()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getName();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.entitymock.EntityMockDataType#getName <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Name</em>' attribute.
-	 * @see #getName()
-	 * @generated
-	 */
-	void setName(String value);
-
-} // EntityMockDataType
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataTypes.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataTypes.java
deleted file mode 100644
index c89d6e7..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockDataTypes.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock;
-
-import org.eclipse.emf.common.util.EList;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Entity Mock Data Types</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.EntityMockDataTypes#getDatatypes <em>Datatypes</em>}</li>
- * </ul>
- * </p>
- *
- * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockDataTypes()
- * @model
- * @generated
- */
-public interface EntityMockDataTypes extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Datatypes</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.entitymock.EntityMockDataType}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Datatypes</em>' containment reference list isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Datatypes</em>' containment reference list.
-	 * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockDataTypes_Datatypes()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<EntityMockDataType> getDatatypes();
-
-} // EntityMockDataTypes
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockTemporary.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockTemporary.java
deleted file mode 100644
index 94e0d15..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/EntityMockTemporary.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Entity Mock Temporary</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.EntityMockTemporary#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.EntityMockTemporary#getObject <em>Object</em>}</li>
- * </ul>
- * </p>
- *
- * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockTemporary()
- * @model
- * @generated
- */
-public interface EntityMockTemporary extends EntityMockLazyResolver {
-	/**
-	 * Returns the value of the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Name</em>' attribute.
-	 * @see #setName(String)
-	 * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockTemporary_Name()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getName();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.entitymock.EntityMockTemporary#getName <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Name</em>' attribute.
-	 * @see #getName()
-	 * @generated
-	 */
-	void setName(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Object</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Object</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Object</em>' reference.
-	 * @see #setObject(EntityMockObject)
-	 * @see org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage#getEntityMockTemporary_Object()
-	 * @model
-	 * @generated
-	 */
-	EntityMockObject getObject();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.entitymock.EntityMockTemporary#getObject <em>Object</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Object</em>' reference.
-	 * @see #getObject()
-	 * @generated
-	 */
-	void setObject(EntityMockObject value);
-
-} // EntityMockTemporary
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypeImpl.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypeImpl.java
deleted file mode 100644
index 56d80e5..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypeImpl.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage;
-import org.eclipse.osbp.xtext.entitymock.EntityMockDataType;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Entity Mock Data Type</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.impl.EntityMockDataTypeImpl#getName <em>Name</em>}</li>
- * </ul>
- * </p>
- *
- * @generated
- */
-public class EntityMockDataTypeImpl extends MinimalEObjectImpl.Container implements EntityMockDataType {
-	/**
-	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String NAME_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected String name = NAME_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected EntityMockDataTypeImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return EntityMockDSLPackage.Literals.ENTITY_MOCK_DATA_TYPE;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setName(String newName) {
-		String oldName = name;
-		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPE__NAME, oldName, name));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPE__NAME:
-				return getName();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPE__NAME:
-				setName((String)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPE__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPE__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (name: ");
-		result.append(name);
-		result.append(')');
-		return result.toString();
-	}
-
-} //EntityMockDataTypeImpl
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypesImpl.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypesImpl.java
deleted file mode 100644
index 66b08ba..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockDataTypesImpl.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock.impl;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.NotificationChain;
-
-import org.eclipse.emf.common.util.EList;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.InternalEList;
-
-import org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage;
-import org.eclipse.osbp.xtext.entitymock.EntityMockDataType;
-import org.eclipse.osbp.xtext.entitymock.EntityMockDataTypes;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Entity Mock Data Types</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.impl.EntityMockDataTypesImpl#getDatatypes <em>Datatypes</em>}</li>
- * </ul>
- * </p>
- *
- * @generated
- */
-public class EntityMockDataTypesImpl extends MinimalEObjectImpl.Container implements EntityMockDataTypes {
-	/**
-	 * The cached value of the '{@link #getDatatypes() <em>Datatypes</em>}' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDatatypes()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<EntityMockDataType> datatypes;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected EntityMockDataTypesImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return EntityMockDSLPackage.Literals.ENTITY_MOCK_DATA_TYPES;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EList<EntityMockDataType> getDatatypes() {
-		if (datatypes == null) {
-			datatypes = new EObjectContainmentEList<EntityMockDataType>(EntityMockDataType.class, this, EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES);
-		}
-		return datatypes;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES:
-				return ((InternalEList<?>)getDatatypes()).basicRemove(otherEnd, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES:
-				return getDatatypes();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@SuppressWarnings("unchecked")
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES:
-				getDatatypes().clear();
-				getDatatypes().addAll((Collection<? extends EntityMockDataType>)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES:
-				getDatatypes().clear();
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_DATA_TYPES__DATATYPES:
-				return datatypes != null && !datatypes.isEmpty();
-		}
-		return super.eIsSet(featureID);
-	}
-
-} //EntityMockDataTypesImpl
diff --git a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockTemporaryImpl.java b/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockTemporaryImpl.java
deleted file mode 100644
index 613055c..0000000
--- a/org.eclipse.osbp.xtext.entitymock/emf-gen/org/eclipse/osbp/xtext/entitymock/impl/EntityMockTemporaryImpl.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.entitymock.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
-import org.eclipse.osbp.xtext.entitymock.EntityMockDSLPackage;
-import org.eclipse.osbp.xtext.entitymock.EntityMockObject;
-import org.eclipse.osbp.xtext.entitymock.EntityMockTemporary;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Entity Mock Temporary</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.impl.EntityMockTemporaryImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.entitymock.impl.EntityMockTemporaryImpl#getObject <em>Object</em>}</li>
- * </ul>
- * </p>
- *
- * @generated
- */
-public class EntityMockTemporaryImpl extends EntityMockLazyResolverImpl implements EntityMockTemporary {
-	/**
-	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String NAME_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected String name = NAME_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getObject() <em>Object</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getObject()
-	 * @generated
-	 * @ordered
-	 */
-	protected EntityMockObject object;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected EntityMockTemporaryImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return EntityMockDSLPackage.Literals.ENTITY_MOCK_TEMPORARY;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setName(String newName) {
-		String oldName = name;
-		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__NAME, oldName, name));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EntityMockObject getObject() {
-		if (object != null && object.eIsProxy()) {
-			InternalEObject oldObject = (InternalEObject)object;
-			object = (EntityMockObject)eResolveProxy(oldObject);
-			if (object != oldObject) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT, oldObject, object));
-			}
-		}
-		return object;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EntityMockObject basicGetObject() {
-		return object;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setObject(EntityMockObject newObject) {
-		EntityMockObject oldObject = object;
-		object = newObject;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT, oldObject, object));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__NAME:
-				return getName();
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT:
-				if (resolve) return getObject();
-				return basicGetObject();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__NAME:
-				setName((String)newValue);
-				return;
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT:
-				setObject((EntityMockObject)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT:
-				setObject((EntityMockObject)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case EntityMockDSLPackage.ENTITY_MOCK_TEMPORARY__OBJECT:
-				return object != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (name: ");
-		result.append(name);
-		result.append(')');
-		return result.toString();
-	}
-
-} //EntityMockTemporaryImpl
diff --git a/org.eclipse.osbp.xtext.entitymock/src-gen/org/eclipse/osbp/xtext/entitymock/parser/antlr/internal/InternalEntityMockDSLLexer.java b/org.eclipse.osbp.xtext.entitymock/src-gen/org/eclipse/osbp/xtext/entitymock/parser/antlr/internal/InternalEntityMockDSLLexer.java
index 9fa9c4a..7163db6 100644
--- a/org.eclipse.osbp.xtext.entitymock/src-gen/org/eclipse/osbp/xtext/entitymock/parser/antlr/internal/InternalEntityMockDSLLexer.java
+++ b/org.eclipse.osbp.xtext.entitymock/src-gen/org/eclipse/osbp/xtext/entitymock/parser/antlr/internal/InternalEntityMockDSLLexer.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-
 package org.eclipse.osbp.xtext.entitymock.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -5971,4 +5957,4 @@
     }
  
 
-}
+}
\ No newline at end of file
