/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * 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:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.dsl.entity.xtext.serializer;

import com.google.inject.Inject;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
import org.eclipse.xtext.IGrammarAccess;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;

@SuppressWarnings("all")
public abstract class AbstractEntityGrammarSyntacticSequencer extends AbstractSyntacticSequencer {

	protected EntityGrammarGrammarAccess grammarAccess;
	protected AbstractElementAlias match_AttributeMatchingConstraint_SemicolonKeyword_3_q;
	protected AbstractElementAlias match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q;
	protected AbstractElementAlias match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q;
	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q;
	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q;
	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q;
	protected AbstractElementAlias match_Class_SemicolonKeyword_2_0_8_2_q;
	protected AbstractElementAlias match_Class_SemicolonKeyword_2_1_5_2_q;
	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q;
	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q;
	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q;
	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q;
	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q;
	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q;
	protected AbstractElementAlias match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q;
	protected AbstractElementAlias match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q;
	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
	protected AbstractElementAlias match_Import_SemicolonKeyword_2_q;
	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q;
	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q;
	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q;
	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q;
	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q;
	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q;
	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
	protected AbstractElementAlias match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q;
	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
	protected AbstractElementAlias match_XExpressionInClosure_SemicolonKeyword_1_1_q;
	protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
	
	@Inject
	protected void init(IGrammarAccess access) {
		grammarAccess = (EntityGrammarGrammarAccess) access;
		match_AttributeMatchingConstraint_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
		match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q = new TokenAlias(false, true, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_0_1_8_1());
		match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q = new TokenAlias(false, true, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_1_1_1_6());
		match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()));
		match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()));
		match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_1_3_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_1_3_2()));
		match_Class_SemicolonKeyword_2_0_8_2_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2());
		match_Class_SemicolonKeyword_2_1_5_2_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2());
		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
		match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1());
		match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_0_5());
		match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_2_8());
		match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()));
		match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()));
		match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_2_3_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_2_3_2()));
		match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q = new TokenAlias(false, true, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2());
		match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q = new TokenAlias(false, true, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2());
		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
		match_Import_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getImportAccess().getSemicolonKeyword_2());
		match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_0_2());
		match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_1_2());
		match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_2_2());
		match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_0_2());
		match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_1_2());
		match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_2_2());
		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()));
		match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()));
		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(false, true, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
		match_XExpressionInClosure_SemicolonKeyword_1_1_q = new TokenAlias(false, true, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
		match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
		match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(true, false, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
	}
	
	@Override
	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
		if(ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
			return getArrayBracketsToken(semanticObject, ruleCall, node);
		else if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
			return getOpSingleAssignToken(semanticObject, ruleCall, node);
		return "";
	}
	
	/**
	 * ArrayBrackets :
	 * 	'[' ']'
	 * ;
	 */
	protected String getArrayBracketsToken(EObject semanticObject, RuleCall ruleCall, INode node) {
		if (node != null)
			return getTokenText(node);
		return "[]";
	}
	
	/**
	 * OpSingleAssign:
	 * 	'='
	 * ;
	 */
	protected String getOpSingleAssignToken(EObject semanticObject, RuleCall ruleCall, INode node) {
		if (node != null)
			return getTokenText(node);
		return "=";
	}
	
	@Override
	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
		List<INode> transitionNodes = collectNodes(fromNode, toNode);
		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
			if(match_AttributeMatchingConstraint_SemicolonKeyword_3_q.equals(syntax))
				emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q.equals(syntax))
				emit_BeanFeature_SemicolonKeyword_2_0_1_8_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q.equals(syntax))
				emit_BeanFeature_SemicolonKeyword_2_1_1_1_6_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q.equals(syntax))
				emit_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q.equals(syntax))
				emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q.equals(syntax))
				emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_Class_SemicolonKeyword_2_0_8_2_q.equals(syntax))
				emit_Class_SemicolonKeyword_2_0_8_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_Class_SemicolonKeyword_2_1_5_2_q.equals(syntax))
				emit_Class_SemicolonKeyword_2_1_5_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DataType_SemicolonKeyword_3_q.equals(syntax))
				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q.equals(syntax))
				emit_EntityFeature_SemicolonKeyword_2_0_1_9_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q.equals(syntax))
				emit_EntityFeature_SemicolonKeyword_2_1_1_0_5_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q.equals(syntax))
				emit_EntityFeature_SemicolonKeyword_2_1_1_2_8_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q.equals(syntax))
				emit_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q.equals(syntax))
				emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q.equals(syntax))
				emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q.equals(syntax))
				emit_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q.equals(syntax))
				emit_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_Import_SemicolonKeyword_2_q.equals(syntax))
				emit_Import_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q.equals(syntax))
				emit_TablePerClassStrategy_SemicolonKeyword_3_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q.equals(syntax))
				emit_TablePerClassStrategy_SemicolonKeyword_3_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q.equals(syntax))
				emit_TablePerClassStrategy_SemicolonKeyword_3_2_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q.equals(syntax))
				emit_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q.equals(syntax))
				emit_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q.equals(syntax))
				emit_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
				emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
				emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
				emit_XExpressionInClosure_SemicolonKeyword_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
				emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
				emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
			else acceptNodes(getLastNavigableState(), syntaxNodes);
		}
	}

	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_BeanFeature_SemicolonKeyword_2_0_1_8_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_BeanFeature_SemicolonKeyword_2_1_1_1_6_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_Class_SemicolonKeyword_2_0_8_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_Class_SemicolonKeyword_2_1_5_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' | ']')*
	 */
	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']' '['*)+
	 */
	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'* '[')+
	 */
	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (']'+ '['+)+
	 */
	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_EntityFeature_SemicolonKeyword_2_0_1_9_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_EntityFeature_SemicolonKeyword_2_1_1_0_5_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_EntityFeature_SemicolonKeyword_2_1_1_2_8_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('[' ']')?
	 */
	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('('* ')')*
	 */
	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('('* ')')+
	 */
	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('(' | ')')*
	 */
	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (')' '('*)+
	 */
	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (')'* '(')+
	 */
	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (')'+ '('+)+
	 */
	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_Import_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_2_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('{' '}')?
	 */
	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('(' ')')?
	 */
	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('(' ')')?
	 */
	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';'?
	 */
	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     '('*
	 */
	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     '('+
	 */
	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
}
