/**
 *                                                                            
 * 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 2.0        
 * which accompanies this distribution, and is available at                  
 * https://www.eclipse.org/legal/epl-2.0/                                 
 *                                 
 * SPDX-License-Identifier: EPL-2.0                                 
 *                                                                            
 * Contributors:   
 * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
 */
package org.eclipse.osbp.xtext.table.serializer;

import com.google.inject.Inject;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.xtext.table.services.TableDSLGrammarAccess;
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 class TableDSLSyntacticSequencer extends AbstractSyntacticSequencer {

	protected TableDSLGrammarAccess grammarAccess;
	protected AbstractElementAlias match_TableDatamart___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q;
	protected AbstractElementAlias match_TableDtoDatasource___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q;
	protected AbstractElementAlias match_TablePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q;
	protected AbstractElementAlias match_TableValue_IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0___or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0______;
	protected AbstractElementAlias match_TableValue_LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_______or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__;
	protected AbstractElementAlias match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a;
	protected AbstractElementAlias match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a;
	protected AbstractElementAlias match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a__a__;
	protected AbstractElementAlias match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__a;
	protected AbstractElementAlias match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__p;
	protected AbstractElementAlias match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__a;
	protected AbstractElementAlias match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__p;
	protected AbstractElementAlias match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a;
	protected AbstractElementAlias match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a;
	protected AbstractElementAlias match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a__a__;
	protected AbstractElementAlias match_TableValue___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_______or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or_______RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_____RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0______;
	protected AbstractElementAlias match_TableValue___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a;
	protected AbstractElementAlias match_TableValue___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_______or___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or_______RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_____RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0______;
	protected AbstractElementAlias match_TableValue___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a;
	protected AbstractElementAlias match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4____a;
	protected AbstractElementAlias match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q__p;
	protected AbstractElementAlias match_TableValue_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q__p;
	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_3_q;
	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
	
	@Inject
	protected void init(IGrammarAccess access) {
		grammarAccess = (TableDSLGrammarAccess) access;
		match_TableDatamart___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableDatamartAccess().getLeftCurlyBracketKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getTableDatamartAccess().getRightCurlyBracketKeyword_2_2()));
		match_TableDtoDatasource___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableDtoDatasourceAccess().getLeftCurlyBracketKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getTableDtoDatasourceAccess().getRightCurlyBracketKeyword_2_2()));
		match_TablePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTablePackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTablePackageAccess().getRightCurlyBracketKeyword_3_2()));
		match_TableValue_IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0___or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0______ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()))), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()))), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()));
		match_TableValue_LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_______or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()))), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()));
		match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())));
		match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()));
		match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()))));
		match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()));
		match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()));
		match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()));
		match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()));
		match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())));
		match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()));
		match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()))));
		match_TableValue___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_______or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or_______RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_____RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0______ = new AlternativeAlias(false, false, new GroupAlias(false, false, new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())))), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()))), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()))));
		match_TableValue___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()));
		match_TableValue___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_______or___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or_______RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_____RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0______ = new AlternativeAlias(false, false, new GroupAlias(false, false, new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())))), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()))), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0())));
		match_TableValue___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()));
		match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4____a = new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())));
		match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q__p = new GroupAlias(true, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())));
		match_TableValue_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q__p = new GroupAlias(true, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLookupsKeyword_4_1_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_1_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_1_4()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getIntervalsKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getLeftCurlyBracketKeyword_4_0_2()), new TokenAlias(false, false, grammarAccess.getTableValueAccess().getRightCurlyBracketKeyword_4_0_4())));
		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_3_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
		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_TableDatamart___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q.equals(syntax))
				emit_TableDatamart___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableDtoDatasource___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q.equals(syntax))
				emit_TableDtoDatasource___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TablePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q.equals(syntax))
				emit_TablePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue_IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0___or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0______.equals(syntax))
				emit_TableValue_IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0___or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0______(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue_LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_______or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__.equals(syntax))
				emit_TableValue_LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_______or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a.equals(syntax))
				emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a.equals(syntax))
				emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a__a__.equals(syntax))
				emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__a.equals(syntax))
				emit_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__p.equals(syntax))
				emit_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__a.equals(syntax))
				emit_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__p.equals(syntax))
				emit_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a.equals(syntax))
				emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a.equals(syntax))
				emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a__a__.equals(syntax))
				emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_______or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or_______RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_____RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0______.equals(syntax))
				emit_TableValue___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_______or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or_______RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_____RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0______(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a.equals(syntax))
				emit_TableValue___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_______or___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or_______RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_____RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0______.equals(syntax))
				emit_TableValue___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_______or___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or_______RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_____RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0______(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a.equals(syntax))
				emit_TableValue___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4____a.equals(syntax))
				emit_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4____a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q__p.equals(syntax))
				emit_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if (match_TableValue_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q__p.equals(syntax))
				emit_TableValue_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q__p(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_3_q.equals(syntax))
				emit_XImportDeclaration_SemicolonKeyword_3_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);
		}
	}

	/**
	 * Ambiguous syntax:
	 *     ('{' '}')?
	 *
	 * This ambiguous syntax occurs at:
	 *     datamartRef=[DatamartDefinition|ID] (ambiguity) (rule end)
	 */
	protected void emit_TableDatamart___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}')?
	 *
	 * This ambiguous syntax occurs at:
	 *     dtoSource=[LDto|ID] (ambiguity) (rule end)
	 */
	protected void emit_TableDtoDatasource___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}')?
	 *
	 * This ambiguous syntax occurs at:
	 *     name=QualifiedName (ambiguity) (rule end)
	 */
	protected void emit_TablePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         (
	  *             'intervals' 
	  *             ('{' '}' 'intervals')* 
	  *             '{' 
	  *             '}' 
	  *             'lookups' 
	  *             '{' 
	  *             '}' 
	  *             ('lookups' '{' '}')* 
	  *             (
	  *                 'intervals' 
	  *                 ('{' '}' 'intervals')* 
	  *                 '{' 
	  *                 '}' 
	  *                 'lookups' 
	  *                 '{' 
	  *                 '}' 
	  *                 ('lookups' '{' '}')*
	  *             )* 
	  *             ('intervals' | ('intervals' ('{' '}' 'intervals')* '{' '}' 'intervals'))
	  *         ) | 
	  *         'intervals' | 
	  *         ('intervals' ('{' '}' 'intervals')* '{' '}' 'intervals')
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelLookup?='hidelabel' '{' '}' ('lookups' '{' '}')* (ambiguity) hideLabelInterval?='hidelabel'
	 */
	protected void emit_TableValue_IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0___or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___IntervalsKeyword_4_0_0_or___IntervalsKeyword_4_0_0___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0__a_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0______(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         (
	  *             'lookups' 
	  *             ('{' '}' 'lookups')* 
	  *             '{' 
	  *             '}' 
	  *             'intervals' 
	  *             '{' 
	  *             '}' 
	  *             ('intervals' '{' '}')* 
	  *             (
	  *                 'lookups' 
	  *                 ('{' '}' 'lookups')* 
	  *                 '{' 
	  *                 '}' 
	  *                 'intervals' 
	  *                 '{' 
	  *                 '}' 
	  *                 ('intervals' '{' '}')*
	  *             )* 
	  *             ('lookups' | ('lookups' ('{' '}' 'lookups')* '{' '}' 'lookups'))
	  *         ) | 
	  *         'lookups' | 
	  *         ('lookups' ('{' '}' 'lookups')* '{' '}' 'lookups')
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelInterval?='hidelabel' '{' '}' ('intervals' '{' '}')* (ambiguity) hideLabelLookup?='hidelabel'
	 */
	protected void emit_TableValue_LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___LookupsKeyword_4_1_0_or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_______or___LookupsKeyword_4_1_0___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__a_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('intervals' '{' '}' ('lookups' '{' '}')*)*
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelInterval?='hidelabel' '{' '}' ('lookups' '{' '}')* (ambiguity) (rule end)
	 *     intervals+=TableInterval '}' ('lookups' '{' '}')* (ambiguity) (rule end)
	 */
	protected void emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('intervals' '{' '}')*
	 *
	 * This ambiguous syntax occurs at:
	 *     (
	 *         hideLabelInterval?='hidelabel' 
	 *         '{' 
	 *         '}' 
	 *         (ambiguity) 
	 *         (
	 *             ('lookups' ('{' '}' 'lookups')* '{' '}' 'intervals' '{' '}' (ambiguity) ('lookups' ('{' '}' 'lookups')* '{' '}' 'intervals' '{' '}' (ambiguity))* ('lookups' | ('lookups' ('{' '}' 'lookups')* '{' '}' 'lookups'))) | 
	 *             'lookups' | 
	 *             ('lookups' ('{' '}' 'lookups')* '{' '}' 'lookups')
	 *         ) 
	 *         hideLabelLookup?='hidelabel'
	 *     )
	 *     collapsed?='collapse' (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     collapsed?='collapse' (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     column=TableValueElement (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     column=TableValueElement (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     formatter=TableFormatter (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     formatter=TableFormatter (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     hideLabelInterval?='hidelabel' '{' '}' (ambiguity) (('lookups' '{' '}')? ('lookups' '{' '}' 'intervals' '{' '}')?)+ 'lookups' '{' lookups+=TableLookup
	 *     hideLabelLookup?='hidelabel' '{' '}' (ambiguity) ('lookups' '{' '}' (ambiguity))* (rule end)
	 *     iconName=STRING (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     iconName=STRING (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     image=TableImage (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     image=TableImage (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     lookups+=TableLookup '}' (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 *     lookups+=TableLookup '}' (ambiguity) ('lookups' '{' '}' (ambiguity))* (rule end)
	 *     tooltipPattern=TableTooltipPattern (ambiguity) 'lookups' '{' ('}' (ambiguity) 'lookups' '{')* lookups+=TableLookup
	 *     tooltipPattern=TableTooltipPattern (ambiguity) 'lookups' ('{' '}' (ambiguity) 'lookups')* hideLabelLookup?='hidelabel'
	 */
	protected void emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         ('intervals' '{' ('}' 'intervals' '{')*) | 
	  *         (
	  *             ('intervals' '{' ('}' 'intervals' '{')* '}')? 
	  *             ('lookups' '{' '}')+ 
	  *             'intervals' 
	  *             '{' 
	  *             ('}' 'intervals' '{')* 
	  *             ('}' ('lookups' '{' '}')+ 'intervals' '{' ('}' 'intervals' '{')*)*
	  *         )
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     lookups+=TableLookup '}' (ambiguity) intervals+=TableInterval
	 */
	protected void emit_TableValue___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__p_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}' ('lookups' '{' '}')* 'intervals')*
	 *
	 * This ambiguous syntax occurs at:
	 *     collapsed?='collapse' ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     column=TableValueElement ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     formatter=TableFormatter ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     iconName=STRING ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     image=TableImage ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     intervals+=TableInterval '}' ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 *     tooltipPattern=TableTooltipPattern ('lookups' '{' '}')* 'intervals' (ambiguity) hideLabelInterval?='hidelabel'
	 */
	protected void emit_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}' ('lookups' '{' '}')* 'intervals')+
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelInterval?='hidelabel' (ambiguity) hideLabelInterval?='hidelabel'
	 */
	protected void emit_TableValue___LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}' ('intervals' '{' '}')* 'lookups')*
	 *
	 * This ambiguous syntax occurs at:
	 *     collapsed?='collapse' ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     column=TableValueElement ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     formatter=TableFormatter ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     iconName=STRING ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     image=TableImage ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     lookups+=TableLookup '}' ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 *     tooltipPattern=TableTooltipPattern ('intervals' '{' '}')* 'lookups' (ambiguity) hideLabelLookup?='hidelabel'
	 */
	protected void emit_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('{' '}' ('intervals' '{' '}')* 'lookups')+
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelLookup?='hidelabel' (ambiguity) hideLabelLookup?='hidelabel'
	 */
	protected void emit_TableValue___LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('lookups' '{' '}' ('intervals' '{' '}')*)*
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelLookup?='hidelabel' '{' '}' ('intervals' '{' '}')* (ambiguity) (rule end)
	 *     lookups+=TableLookup '}' ('intervals' '{' '}')* (ambiguity) (rule end)
	 */
	protected void emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('lookups' '{' '}')*
	 *
	 * This ambiguous syntax occurs at:
	 *     (
	 *         hideLabelLookup?='hidelabel' 
	 *         '{' 
	 *         '}' 
	 *         (ambiguity) 
	 *         (
	 *             (
	 *                 'intervals' 
	 *                 ('{' '}' 'intervals')* 
	 *                 '{' 
	 *                 '}' 
	 *                 'lookups' 
	 *                 '{' 
	 *                 '}' 
	 *                 (ambiguity) 
	 *                 ('intervals' ('{' '}' 'intervals')* '{' '}' 'lookups' '{' '}' (ambiguity))* 
	 *                 ('intervals' | ('intervals' ('{' '}' 'intervals')* '{' '}' 'intervals'))
	 *             ) | 
	 *             'intervals' | 
	 *             ('intervals' ('{' '}' 'intervals')* '{' '}' 'intervals')
	 *         ) 
	 *         hideLabelInterval?='hidelabel'
	 *     )
	 *     collapsed?='collapse' (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     collapsed?='collapse' (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     column=TableValueElement (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     column=TableValueElement (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     formatter=TableFormatter (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     formatter=TableFormatter (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     hideLabelInterval?='hidelabel' '{' '}' (ambiguity) ('intervals' '{' '}' (ambiguity))* (rule end)
	 *     hideLabelLookup?='hidelabel' '{' '}' (ambiguity) (('intervals' '{' '}')? ('intervals' '{' '}' 'lookups' '{' '}')?)+ 'intervals' '{' intervals+=TableInterval
	 *     iconName=STRING (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     iconName=STRING (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     image=TableImage (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     image=TableImage (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     intervals+=TableInterval '}' (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 *     intervals+=TableInterval '}' (ambiguity) ('intervals' '{' '}' (ambiguity))* (rule end)
	 *     tooltipPattern=TableTooltipPattern (ambiguity) 'intervals' '{' ('}' (ambiguity) 'intervals' '{')* intervals+=TableInterval
	 *     tooltipPattern=TableTooltipPattern (ambiguity) 'intervals' ('{' '}' (ambiguity) 'intervals')* hideLabelInterval?='hidelabel'
	 */
	protected void emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         ('lookups' '{' ('}' 'lookups' '{')*) | 
	  *         (
	  *             ('lookups' '{' ('}' 'lookups' '{')* '}')? 
	  *             ('intervals' '{' '}')+ 
	  *             'lookups' 
	  *             '{' 
	  *             ('}' 'lookups' '{')* 
	  *             ('}' ('intervals' '{' '}')+ 'lookups' '{' ('}' 'lookups' '{')*)*
	  *         )
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     intervals+=TableInterval '}' (ambiguity) lookups+=TableLookup
	 */
	protected void emit_TableValue___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__p_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         (
	  *             (
	  *                 ('}' 'intervals' '{' ('}' 'intervals' '{')*) | 
	  *                 (
	  *                     '}' 
	  *                     'lookups' 
	  *                     '{' 
	  *                     '}' 
	  *                     ('lookups' '{' '}')* 
	  *                     'intervals' 
	  *                     '{' 
	  *                     ('}' 'intervals' '{')*
	  *                 )
	  *             ) 
	  *             '}' 
	  *             'lookups' 
	  *             '{' 
	  *             '}' 
	  *             ('lookups' '{' '}')* 
	  *             (
	  *                 'intervals' 
	  *                 '{' 
	  *                 ('}' 'intervals' '{')* 
	  *                 '}' 
	  *                 'lookups' 
	  *                 '{' 
	  *                 '}' 
	  *                 ('lookups' '{' '}')*
	  *             )* 
	  *             ('lookups' | ('intervals' '{' ('}' 'intervals' '{')* '}' 'lookups'))
	  *         ) | 
	  *         ('}' 'lookups') | 
	  *         (
	  *             '}' 
	  *             'intervals' 
	  *             '{' 
	  *             ('}' 'intervals' '{')* 
	  *             '}' 
	  *             'lookups'
	  *         ) | 
	  *         (
	  *             '}' 
	  *             'lookups' 
	  *             '{' 
	  *             '}' 
	  *             ('lookups' '{' '}')* 
	  *             ('lookups' | ('intervals' '{' ('}' 'intervals' '{')* '}' 'lookups'))
	  *         )
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     intervals+=TableInterval (ambiguity) hideLabelLookup?='hidelabel'
	 */
	protected void emit_TableValue___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_______or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0___or_______RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a___or___RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_____RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a__a___LookupsKeyword_4_1_0_or___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2___RightCurlyBracketKeyword_4_0_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0______(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('}' ('lookups' '{' '}')* 'intervals' '{')*
	 *
	 * This ambiguous syntax occurs at:
	 *     collapsed?='collapse' ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 *     column=TableValueElement ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 *     formatter=TableFormatter ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 *     hideLabelInterval?='hidelabel' '{' (ambiguity) intervals+=TableInterval
	 *     iconName=STRING ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 *     image=TableImage ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 *     intervals+=TableInterval (ambiguity) intervals+=TableInterval
	 *     tooltipPattern=TableTooltipPattern ('lookups' '{' '}')* 'intervals' '{' (ambiguity) intervals+=TableInterval
	 */
	protected void emit_TableValue___RightCurlyBracketKeyword_4_0_4___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__a_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         (
	  *             (
	  *                 ('}' 'lookups' '{' ('}' 'lookups' '{')*) | 
	  *                 (
	  *                     '}' 
	  *                     'intervals' 
	  *                     '{' 
	  *                     '}' 
	  *                     ('intervals' '{' '}')* 
	  *                     'lookups' 
	  *                     '{' 
	  *                     ('}' 'lookups' '{')*
	  *                 )
	  *             ) 
	  *             '}' 
	  *             'intervals' 
	  *             '{' 
	  *             '}' 
	  *             ('intervals' '{' '}')* 
	  *             (
	  *                 'lookups' 
	  *                 '{' 
	  *                 ('}' 'lookups' '{')* 
	  *                 '}' 
	  *                 'intervals' 
	  *                 '{' 
	  *                 '}' 
	  *                 ('intervals' '{' '}')*
	  *             )* 
	  *             ('intervals' | ('lookups' '{' ('}' 'lookups' '{')* '}' 'intervals'))
	  *         ) | 
	  *         ('}' 'intervals') | 
	  *         (
	  *             '}' 
	  *             'lookups' 
	  *             '{' 
	  *             ('}' 'lookups' '{')* 
	  *             '}' 
	  *             'intervals'
	  *         ) | 
	  *         (
	  *             '}' 
	  *             'intervals' 
	  *             '{' 
	  *             '}' 
	  *             ('intervals' '{' '}')* 
	  *             ('intervals' | ('lookups' '{' ('}' 'lookups' '{')* '}' 'intervals'))
	  *         )
	  *     )
	 *
	 * This ambiguous syntax occurs at:
	 *     lookups+=TableLookup (ambiguity) hideLabelInterval?='hidelabel'
	 */
	protected void emit_TableValue___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_______or___RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0___or_______RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a___or___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_____RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a__a___IntervalsKeyword_4_0_0_or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2___RightCurlyBracketKeyword_4_1_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0______(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('}' ('intervals' '{' '}')* 'lookups' '{')*
	 *
	 * This ambiguous syntax occurs at:
	 *     collapsed?='collapse' ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 *     column=TableValueElement ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 *     formatter=TableFormatter ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 *     hideLabelLookup?='hidelabel' '{' (ambiguity) lookups+=TableLookup
	 *     iconName=STRING ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 *     image=TableImage ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 *     lookups+=TableLookup (ambiguity) lookups+=TableLookup
	 *     tooltipPattern=TableTooltipPattern ('intervals' '{' '}')* 'lookups' '{' (ambiguity) lookups+=TableLookup
	 */
	protected void emit_TableValue___RightCurlyBracketKeyword_4_1_4___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__a_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (('intervals' '{' '}') | ('lookups' '{' '}'))*
	 *
	 * This ambiguous syntax occurs at:
	 *     collapsed?='collapse' (ambiguity) (rule end)
	 *     column=TableValueElement (ambiguity) (rule end)
	 *     formatter=TableFormatter (ambiguity) (rule end)
	 *     iconName=STRING (ambiguity) (rule end)
	 *     image=TableImage (ambiguity) (rule end)
	 *     tooltipPattern=TableTooltipPattern (ambiguity) (rule end)
	 */
	protected void emit_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4___or___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4____a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         ('intervals' '{' '}')? 
	  *         (
	  *             'intervals' 
	  *             '{' 
	  *             '}' 
	  *             'lookups' 
	  *             '{' 
	  *             '}'
	  *         )?
	  *     )+
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelLookup?='hidelabel' '{' '}' ('lookups' '{' '}')* (ambiguity) 'intervals' '{' intervals+=TableInterval
	 */
	protected void emit_TableValue_____IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q___IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4_LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     (
	  *         ('lookups' '{' '}')? 
	  *         (
	  *             'lookups' 
	  *             '{' 
	  *             '}' 
	  *             'intervals' 
	  *             '{' 
	  *             '}'
	  *         )?
	  *     )+
	 *
	 * This ambiguous syntax occurs at:
	 *     hideLabelInterval?='hidelabel' '{' '}' ('intervals' '{' '}')* (ambiguity) 'lookups' '{' lookups+=TableLookup
	 */
	protected void emit_TableValue_____LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4__q___LookupsKeyword_4_1_0_LeftCurlyBracketKeyword_4_1_2_RightCurlyBracketKeyword_4_1_4_IntervalsKeyword_4_0_0_LeftCurlyBracketKeyword_4_0_2_RightCurlyBracketKeyword_4_0_4__q__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('(' ')')?
	 *
	 * This ambiguous syntax occurs at:
	 *     annotationType=[JvmAnnotationType|QualifiedName] (ambiguity) (rule end)
	 */
	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ';'?
	 *
	 * This ambiguous syntax occurs at:
	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' ')' (rule end)
	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' (rule end)
	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
	 */
	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ';'?
	 *
	 * This ambiguous syntax occurs at:
	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) (rule end)
	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
	 */
	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ('(' ')')?
	 *
	 * This ambiguous syntax occurs at:
	 *     (rule start) (ambiguity) '=>' returnType=JvmTypeReference
	 */
	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     ';'?
	 *
	 * This ambiguous syntax occurs at:
	 *     importedFullyQualifiedName=QualifiedName (ambiguity) (rule end)
	 *     importedNamespace=QualifiedNameWithWildcard (ambiguity) (rule end)
	 *     importedType=[JvmDeclaredType|QualifiedName] (ambiguity) (rule end)
	 *     memberName=ValidID (ambiguity) (rule end)
	 *     wildcard?='*' (ambiguity) (rule end)
	 */
	protected void emit_XImportDeclaration_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     '('*
	 *
	 * This ambiguous syntax occurs at:
	 *     (rule start) (ambiguity) '#' '[' ']' (rule start)
	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
	 *     (rule start) (ambiguity) '#' '{' '}' (rule start)
	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
	 *     (rule start) (ambiguity) 'do' body=XExpression
	 *     (rule start) (ambiguity) 'false' (rule start)
	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
	 *     (rule start) (ambiguity) 'null' (rule start)
	 *     (rule start) (ambiguity) 'return' (rule start)
	 *     (rule start) (ambiguity) 'return' expression=XExpression
	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'switch' switch=XExpression
	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
	 *     (rule start) (ambiguity) 'throw' expression=XExpression
	 *     (rule start) (ambiguity) 'try' expression=XExpression
	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
	 *     (rule start) (ambiguity) '{' '}' (rule start)
	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
	 *     (rule start) (ambiguity) isTrue?='true'
	 *     (rule start) (ambiguity) value=Number
	 *     (rule start) (ambiguity) value=STRING
	 *     (rule start) (ambiguity) {XAssignment.assignable=}
	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
	 *     (rule start) (ambiguity) {XCastedExpression.target=}
	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
	 */
	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Ambiguous syntax:
	 *     '('+
	 *
	 * This ambiguous syntax occurs at:
	 *     (rule start) (ambiguity) '#' '[' ']' ')' (rule start)
	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
	 *     (rule start) (ambiguity) '#' '{' '}' ')' (rule start)
	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
	 *     (rule start) (ambiguity) 'do' body=XExpression
	 *     (rule start) (ambiguity) 'false' ')' (rule start)
	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
	 *     (rule start) (ambiguity) 'null' ')' (rule start)
	 *     (rule start) (ambiguity) 'return' ')' (rule start)
	 *     (rule start) (ambiguity) 'return' expression=XExpression
	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
	 *     (rule start) (ambiguity) 'switch' switch=XExpression
	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
	 *     (rule start) (ambiguity) 'throw' expression=XExpression
	 *     (rule start) (ambiguity) 'try' expression=XExpression
	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
	 *     (rule start) (ambiguity) '{' '}' ')' (rule start)
	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
	 *     (rule start) (ambiguity) isTrue?='true'
	 *     (rule start) (ambiguity) value=Number
	 *     (rule start) (ambiguity) value=STRING
	 *     (rule start) (ambiguity) {XAssignment.assignable=}
	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
	 *     (rule start) (ambiguity) {XCastedExpression.target=}
	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
	 */
	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
}
