All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jbase.services.JbaseGrammarAccess Maven / Gradle / Ivy

There is a newer version: 0.12.2
Show newest version
/*
 * generated by Xtext 2.15.0
 */
package jbase.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Alternatives;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.Grammar;
import org.eclipse.xtext.GrammarUtil;
import org.eclipse.xtext.Group;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.TerminalRule;
import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;

@Singleton
public class JbaseGrammarAccess extends AbstractGrammarElementFinder {
	
	public class XJStatementOrBlockElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJStatementOrBlock");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cXBlockExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cXJSingleStatementParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		///**
		// * The syntactic predicate on XBlockExpression is required to avoid
		// * ambiguity with array literal.  However, XBlockExpression must come first, to
		// * be able to parse both while(...) {} and while(...) st; for example.
		// * If we put the predicate on single statement, then it does not seem to
		// * be possible to parse incomplete member feature call.
		// */ XJStatementOrBlock XExpression: //	XJArrayConstructorCall | not a valid statement
		//	=> XBlockExpression | XJSingleStatement;
		@Override public ParserRule getRule() { return rule; }
		
		////	XJArrayConstructorCall | not a valid statement
		//=> XBlockExpression | XJSingleStatement
		public Alternatives getAlternatives() { return cAlternatives; }
		
		////	XJArrayConstructorCall | not a valid statement
		//=> XBlockExpression
		public RuleCall getXBlockExpressionParserRuleCall_0() { return cXBlockExpressionParserRuleCall_0; }
		
		//XJSingleStatement
		public RuleCall getXJSingleStatementParserRuleCall_1() { return cXJSingleStatementParserRuleCall_1; }
	}
	public class XImportDeclarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XImportDeclaration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cStaticAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final Keyword cStaticStaticKeyword_1_0_0_0 = (Keyword)cStaticAssignment_1_0_0.eContents().get(0);
		private final Assignment cImportedTypeAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final CrossReference cImportedTypeJvmDeclaredTypeCrossReference_1_0_1_0 = (CrossReference)cImportedTypeAssignment_1_0_1.eContents().get(0);
		private final RuleCall cImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_1_0_1_0_1 = (RuleCall)cImportedTypeJvmDeclaredTypeCrossReference_1_0_1_0.eContents().get(1);
		private final Alternatives cAlternatives_1_0_2 = (Alternatives)cGroup_1_0.eContents().get(2);
		private final Assignment cWildcardAssignment_1_0_2_0 = (Assignment)cAlternatives_1_0_2.eContents().get(0);
		private final Keyword cWildcardAsteriskKeyword_1_0_2_0_0 = (Keyword)cWildcardAssignment_1_0_2_0.eContents().get(0);
		private final Assignment cMemberNameAssignment_1_0_2_1 = (Assignment)cAlternatives_1_0_2.eContents().get(1);
		private final RuleCall cMemberNameValidIDParserRuleCall_1_0_2_1_0 = (RuleCall)cMemberNameAssignment_1_0_2_1.eContents().get(0);
		private final Assignment cImportedTypeAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final CrossReference cImportedTypeJvmDeclaredTypeCrossReference_1_1_0 = (CrossReference)cImportedTypeAssignment_1_1.eContents().get(0);
		private final RuleCall cImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_1_1_0_1 = (RuleCall)cImportedTypeJvmDeclaredTypeCrossReference_1_1_0.eContents().get(1);
		private final Assignment cImportedNamespaceAssignment_1_2 = (Assignment)cAlternatives_1.eContents().get(2);
		private final RuleCall cImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0 = (RuleCall)cImportedNamespaceAssignment_1_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//@Override
		//XImportDeclaration xtype::XImportDeclaration:
		//	=> 'import' (static?='static' importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' |
		//	memberName=ValidID) | importedType=[types::JvmDeclaredType|QualifiedName] |
		//	importedNamespace=QualifiedNameWithWildcard) -> ';'*;
		@Override public ParserRule getRule() { return rule; }
		
		//=> 'import' (static?='static' importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' |
		//memberName=ValidID) | importedType=[types::JvmDeclaredType|QualifiedName] |
		//importedNamespace=QualifiedNameWithWildcard) -> ';'*
		public Group getGroup() { return cGroup; }
		
		//=> 'import'
		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
		
		//static?='static' importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' | memberName=ValidID)
		//| importedType=[types::JvmDeclaredType|QualifiedName] | importedNamespace=QualifiedNameWithWildcard
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//static?='static' importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' | memberName=ValidID)
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//static?='static'
		public Assignment getStaticAssignment_1_0_0() { return cStaticAssignment_1_0_0; }
		
		//'static'
		public Keyword getStaticStaticKeyword_1_0_0_0() { return cStaticStaticKeyword_1_0_0_0; }
		
		//importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport]
		public Assignment getImportedTypeAssignment_1_0_1() { return cImportedTypeAssignment_1_0_1; }
		
		//[types::JvmDeclaredType|QualifiedNameInStaticImport]
		public CrossReference getImportedTypeJvmDeclaredTypeCrossReference_1_0_1_0() { return cImportedTypeJvmDeclaredTypeCrossReference_1_0_1_0; }
		
		//QualifiedNameInStaticImport
		public RuleCall getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_1_0_1_0_1() { return cImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_1_0_1_0_1; }
		
		//wildcard?='*' | memberName=ValidID
		public Alternatives getAlternatives_1_0_2() { return cAlternatives_1_0_2; }
		
		//wildcard?='*'
		public Assignment getWildcardAssignment_1_0_2_0() { return cWildcardAssignment_1_0_2_0; }
		
		//'*'
		public Keyword getWildcardAsteriskKeyword_1_0_2_0_0() { return cWildcardAsteriskKeyword_1_0_2_0_0; }
		
		//memberName=ValidID
		public Assignment getMemberNameAssignment_1_0_2_1() { return cMemberNameAssignment_1_0_2_1; }
		
		//ValidID
		public RuleCall getMemberNameValidIDParserRuleCall_1_0_2_1_0() { return cMemberNameValidIDParserRuleCall_1_0_2_1_0; }
		
		//importedType=[types::JvmDeclaredType|QualifiedName]
		public Assignment getImportedTypeAssignment_1_1() { return cImportedTypeAssignment_1_1; }
		
		//[types::JvmDeclaredType|QualifiedName]
		public CrossReference getImportedTypeJvmDeclaredTypeCrossReference_1_1_0() { return cImportedTypeJvmDeclaredTypeCrossReference_1_1_0; }
		
		//QualifiedName
		public RuleCall getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_1_1_0_1() { return cImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_1_1_0_1; }
		
		//importedNamespace=QualifiedNameWithWildcard
		public Assignment getImportedNamespaceAssignment_1_2() { return cImportedNamespaceAssignment_1_2; }
		
		//QualifiedNameWithWildcard
		public RuleCall getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0() { return cImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0; }
		
		//-> ';'*
		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
	}
	public class JvmTypeReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.JvmTypeReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cJvmParameterizedTypeReferenceParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Action cJvmGenericArrayTypeReferenceComponentTypeAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
		private final RuleCall cArrayBracketsParserRuleCall_1_0_1 = (RuleCall)cGroup_1_0.eContents().get(1);
		
		//@Override
		//JvmTypeReference types::JvmTypeReference:
		//	JvmParameterizedTypeReference => ({types::JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
		//	// | XFunctionTypeRef;
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//JvmParameterizedTypeReference => ({types::JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
		public Group getGroup() { return cGroup; }
		
		//JvmParameterizedTypeReference
		public RuleCall getJvmParameterizedTypeReferenceParserRuleCall_0() { return cJvmParameterizedTypeReferenceParserRuleCall_0; }
		
		//=> ({types::JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
		public Group getGroup_1() { return cGroup_1; }
		
		//{types::JvmGenericArrayTypeReference.componentType=current} ArrayBrackets
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{types::JvmGenericArrayTypeReference.componentType=current}
		public Action getJvmGenericArrayTypeReferenceComponentTypeAction_1_0_0() { return cJvmGenericArrayTypeReferenceComponentTypeAction_1_0_0; }
		
		//ArrayBrackets
		public RuleCall getArrayBracketsParserRuleCall_1_0_1() { return cArrayBracketsParserRuleCall_1_0_1; }
	}
	public class FullJvmFormalParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.FullJvmFormalParameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJJvmFormalParameterAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cFinalAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cFinalFinalKeyword_1_0 = (Keyword)cFinalAssignment_1.eContents().get(0);
		private final Assignment cParameterTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cParameterTypeJvmTypeReferenceParserRuleCall_2_0 = (RuleCall)cParameterTypeAssignment_2.eContents().get(0);
		private final Assignment cVarArgsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cVarArgsFullStopFullStopFullStopKeyword_3_0 = (Keyword)cVarArgsAssignment_3.eContents().get(0);
		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cNameValidIDParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
		
		//@Override
		//FullJvmFormalParameter XJJvmFormalParameter:
		//	{XJJvmFormalParameter} final?='final'? parameterType=JvmTypeReference varArgs?='...'? name=ValidID;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJJvmFormalParameter} final?='final'? parameterType=JvmTypeReference varArgs?='...'? name=ValidID
		public Group getGroup() { return cGroup; }
		
		//{XJJvmFormalParameter}
		public Action getXJJvmFormalParameterAction_0() { return cXJJvmFormalParameterAction_0; }
		
		//final?='final'?
		public Assignment getFinalAssignment_1() { return cFinalAssignment_1; }
		
		//'final'
		public Keyword getFinalFinalKeyword_1_0() { return cFinalFinalKeyword_1_0; }
		
		//parameterType=JvmTypeReference
		public Assignment getParameterTypeAssignment_2() { return cParameterTypeAssignment_2; }
		
		//JvmTypeReference
		public RuleCall getParameterTypeJvmTypeReferenceParserRuleCall_2_0() { return cParameterTypeJvmTypeReferenceParserRuleCall_2_0; }
		
		//varArgs?='...'?
		public Assignment getVarArgsAssignment_3() { return cVarArgsAssignment_3; }
		
		//'...'
		public Keyword getVarArgsFullStopFullStopFullStopKeyword_3_0() { return cVarArgsFullStopFullStopFullStopKeyword_3_0; }
		
		//name=ValidID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ValidID
		public RuleCall getNameValidIDParserRuleCall_4_0() { return cNameValidIDParserRuleCall_4_0; }
	}
	public class XJSingleStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJSingleStatement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cXJSemicolonStatementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cXSwitchExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cXIfExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cXForLoopExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cXBasicForLoopExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cXWhileExpressionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cXJTryWithResourcesStatementParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cXTryCatchFinallyExpressionParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cXSynchronizedExpressionParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cXJEmptyStatementParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		
		//XJSingleStatement XExpression:
		//	XJSemicolonStatement | XSwitchExpression | XIfExpression | XForLoopExpression | XBasicForLoopExpression |
		//	XWhileExpression | XJTryWithResourcesStatement | XTryCatchFinallyExpression | XSynchronizedExpression |
		//	XJEmptyStatement;
		@Override public ParserRule getRule() { return rule; }
		
		//XJSemicolonStatement | XSwitchExpression | XIfExpression | XForLoopExpression | XBasicForLoopExpression |
		//XWhileExpression | XJTryWithResourcesStatement | XTryCatchFinallyExpression | XSynchronizedExpression |
		//XJEmptyStatement
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//XJSemicolonStatement
		public RuleCall getXJSemicolonStatementParserRuleCall_0() { return cXJSemicolonStatementParserRuleCall_0; }
		
		//XSwitchExpression
		public RuleCall getXSwitchExpressionParserRuleCall_1() { return cXSwitchExpressionParserRuleCall_1; }
		
		//XIfExpression
		public RuleCall getXIfExpressionParserRuleCall_2() { return cXIfExpressionParserRuleCall_2; }
		
		//XForLoopExpression
		public RuleCall getXForLoopExpressionParserRuleCall_3() { return cXForLoopExpressionParserRuleCall_3; }
		
		//XBasicForLoopExpression
		public RuleCall getXBasicForLoopExpressionParserRuleCall_4() { return cXBasicForLoopExpressionParserRuleCall_4; }
		
		//XWhileExpression
		public RuleCall getXWhileExpressionParserRuleCall_5() { return cXWhileExpressionParserRuleCall_5; }
		
		//XJTryWithResourcesStatement
		public RuleCall getXJTryWithResourcesStatementParserRuleCall_6() { return cXJTryWithResourcesStatementParserRuleCall_6; }
		
		//XTryCatchFinallyExpression
		public RuleCall getXTryCatchFinallyExpressionParserRuleCall_7() { return cXTryCatchFinallyExpressionParserRuleCall_7; }
		
		//XSynchronizedExpression
		public RuleCall getXSynchronizedExpressionParserRuleCall_8() { return cXSynchronizedExpressionParserRuleCall_8; }
		
		//XJEmptyStatement
		public RuleCall getXJEmptyStatementParserRuleCall_9() { return cXJEmptyStatementParserRuleCall_9; }
	}
	public class XJSemicolonStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJSemicolonStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJSemicolonStatementAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Alternatives cExpressionAlternatives_1_0 = (Alternatives)cExpressionAssignment_1.eContents().get(0);
		private final RuleCall cExpressionXJBranchingStatementParserRuleCall_1_0_0 = (RuleCall)cExpressionAlternatives_1_0.eContents().get(0);
		private final RuleCall cExpressionXExpressionOrVarDeclarationParserRuleCall_1_0_1 = (RuleCall)cExpressionAlternatives_1_0.eContents().get(1);
		private final RuleCall cExpressionXDoWhileExpressionParserRuleCall_1_0_2 = (RuleCall)cExpressionAlternatives_1_0.eContents().get(2);
		private final RuleCall cExpressionXReturnExpressionParserRuleCall_1_0_3 = (RuleCall)cExpressionAlternatives_1_0.eContents().get(3);
		private final RuleCall cExpressionXThrowExpressionParserRuleCall_1_0_4 = (RuleCall)cExpressionAlternatives_1_0.eContents().get(4);
		private final Assignment cSemicolonAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cSemicolonSemicolonKeyword_2_0 = (Keyword)cSemicolonAssignment_2.eContents().get(0);
		
		///*
		// * These are the Java statements that require a semicolon at the end.
		// * 
		// * The final ; is optional in order to be able to parse incomplete
		// * expressions, provide nicer error messages and give better content assist.
		// * The presence of ';' is checked by the validator
		// */ XJSemicolonStatement XExpression:
		//	{XJSemicolonStatement} expression=(XJBranchingStatement | XExpressionOrVarDeclaration | XDoWhileExpression |
		//	XReturnExpression | XThrowExpression)
		//	-> semicolon=';'?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJSemicolonStatement} expression=(XJBranchingStatement | XExpressionOrVarDeclaration | XDoWhileExpression |
		//XReturnExpression | XThrowExpression) -> semicolon=';'?
		public Group getGroup() { return cGroup; }
		
		//{XJSemicolonStatement}
		public Action getXJSemicolonStatementAction_0() { return cXJSemicolonStatementAction_0; }
		
		//expression=(XJBranchingStatement | XExpressionOrVarDeclaration | XDoWhileExpression | XReturnExpression |
		//XThrowExpression)
		public Assignment getExpressionAssignment_1() { return cExpressionAssignment_1; }
		
		//(XJBranchingStatement | XExpressionOrVarDeclaration | XDoWhileExpression | XReturnExpression | XThrowExpression)
		public Alternatives getExpressionAlternatives_1_0() { return cExpressionAlternatives_1_0; }
		
		//XJBranchingStatement
		public RuleCall getExpressionXJBranchingStatementParserRuleCall_1_0_0() { return cExpressionXJBranchingStatementParserRuleCall_1_0_0; }
		
		//XExpressionOrVarDeclaration
		public RuleCall getExpressionXExpressionOrVarDeclarationParserRuleCall_1_0_1() { return cExpressionXExpressionOrVarDeclarationParserRuleCall_1_0_1; }
		
		//XDoWhileExpression
		public RuleCall getExpressionXDoWhileExpressionParserRuleCall_1_0_2() { return cExpressionXDoWhileExpressionParserRuleCall_1_0_2; }
		
		//XReturnExpression
		public RuleCall getExpressionXReturnExpressionParserRuleCall_1_0_3() { return cExpressionXReturnExpressionParserRuleCall_1_0_3; }
		
		//XThrowExpression
		public RuleCall getExpressionXThrowExpressionParserRuleCall_1_0_4() { return cExpressionXThrowExpressionParserRuleCall_1_0_4; }
		
		//-> semicolon=';'?
		public Assignment getSemicolonAssignment_2() { return cSemicolonAssignment_2; }
		
		//';'
		public Keyword getSemicolonSemicolonKeyword_2_0() { return cSemicolonSemicolonKeyword_2_0; }
	}
	public class XJEmptyStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJEmptyStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJSemicolonStatementAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cSemicolonAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cSemicolonSemicolonKeyword_1_0 = (Keyword)cSemicolonAssignment_1.eContents().get(0);
		
		//XJEmptyStatement XExpression:
		//	{XJSemicolonStatement} semicolon=';';
		@Override public ParserRule getRule() { return rule; }
		
		//{XJSemicolonStatement} semicolon=';'
		public Group getGroup() { return cGroup; }
		
		//{XJSemicolonStatement}
		public Action getXJSemicolonStatementAction_0() { return cXJSemicolonStatementAction_0; }
		
		//semicolon=';'
		public Assignment getSemicolonAssignment_1() { return cSemicolonAssignment_1; }
		
		//';'
		public Keyword getSemicolonSemicolonKeyword_1_0() { return cSemicolonSemicolonKeyword_1_0; }
	}
	public class XJBranchingStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJBranchingStatement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cXJContinueStatementAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Keyword cContinueKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Action cXJBreakStatementAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Keyword cBreakKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		
		//XJBranchingStatement XExpression:
		//	{XJContinueStatement} "continue" | {XJBreakStatement} "break";
		@Override public ParserRule getRule() { return rule; }
		
		//{XJContinueStatement} "continue" | {XJBreakStatement} "break"
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//{XJContinueStatement} "continue"
		public Group getGroup_0() { return cGroup_0; }
		
		//{XJContinueStatement}
		public Action getXJContinueStatementAction_0_0() { return cXJContinueStatementAction_0_0; }
		
		//"continue"
		public Keyword getContinueKeyword_0_1() { return cContinueKeyword_0_1; }
		
		//{XJBreakStatement} "break"
		public Group getGroup_1() { return cGroup_1; }
		
		//{XJBreakStatement}
		public Action getXJBreakStatementAction_1_0() { return cXJBreakStatementAction_1_0; }
		
		//"break"
		public Keyword getBreakKeyword_1_1() { return cBreakKeyword_1_1; }
	}
	public class XBlockExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XBlockExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXBlockExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionsAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionsXJStatementOrBlockParserRuleCall_2_0 = (RuleCall)cExpressionsAssignment_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//@Override
		//XBlockExpression XExpression:
		//	{XBlockExpression}
		//	'{'
		//	expressions+=XJStatementOrBlock*
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//{XBlockExpression} '{' expressions+=XJStatementOrBlock* '}'
		public Group getGroup() { return cGroup; }
		
		//{XBlockExpression}
		public Action getXBlockExpressionAction_0() { return cXBlockExpressionAction_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
		
		//expressions+=XJStatementOrBlock*
		public Assignment getExpressionsAssignment_2() { return cExpressionsAssignment_2; }
		
		//XJStatementOrBlock
		public RuleCall getExpressionsXJStatementOrBlockParserRuleCall_2_0() { return cExpressionsXJStatementOrBlockParserRuleCall_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
	}
	public class XVariableDeclarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XVariableDeclaration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXJVariableDeclarationAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Assignment cFinalAssignment_0_0_1 = (Assignment)cGroup_0_0.eContents().get(1);
		private final Keyword cFinalFinalKeyword_0_0_1_0 = (Keyword)cFinalAssignment_0_0_1.eContents().get(0);
		private final Assignment cTypeAssignment_0_0_2 = (Assignment)cGroup_0_0.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_0_0_2_0 = (RuleCall)cTypeAssignment_0_0_2.eContents().get(0);
		private final Assignment cNameAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_0_0_3_0 = (RuleCall)cNameAssignment_0_0_3.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cEqualsSignKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cRightXExpressionParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cCommaKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cAdditionalVariablesAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cAdditionalVariablesXJAdditionalXVariableDeclarationParserRuleCall_2_1_0 = (RuleCall)cAdditionalVariablesAssignment_2_1.eContents().get(0);
		
		//@Override
		//XVariableDeclaration:
		//	=> ({XJVariableDeclaration} final?='final'?
		//	type=JvmTypeReference name=ValidID) ('=' right=XExpression)? (=> ','
		//	additionalVariables+=XJAdditionalXVariableDeclaration)*;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJVariableDeclaration} final?='final'? type=JvmTypeReference name=ValidID) ('=' right=XExpression)? (=> ','
		//additionalVariables+=XJAdditionalXVariableDeclaration)*
		public Group getGroup() { return cGroup; }
		
		//=> ({XJVariableDeclaration} final?='final'? type=JvmTypeReference name=ValidID)
		public Group getGroup_0() { return cGroup_0; }
		
		//{XJVariableDeclaration} final?='final'? type=JvmTypeReference name=ValidID
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJVariableDeclaration}
		public Action getXJVariableDeclarationAction_0_0_0() { return cXJVariableDeclarationAction_0_0_0; }
		
		//final?='final'?
		public Assignment getFinalAssignment_0_0_1() { return cFinalAssignment_0_0_1; }
		
		//'final'
		public Keyword getFinalFinalKeyword_0_0_1_0() { return cFinalFinalKeyword_0_0_1_0; }
		
		//type=JvmTypeReference
		public Assignment getTypeAssignment_0_0_2() { return cTypeAssignment_0_0_2; }
		
		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_0_0_2_0() { return cTypeJvmTypeReferenceParserRuleCall_0_0_2_0; }
		
		//name=ValidID
		public Assignment getNameAssignment_0_0_3() { return cNameAssignment_0_0_3; }
		
		//ValidID
		public RuleCall getNameValidIDParserRuleCall_0_0_3_0() { return cNameValidIDParserRuleCall_0_0_3_0; }
		
		//('=' right=XExpression)?
		public Group getGroup_1() { return cGroup_1; }
		
		//'='
		public Keyword getEqualsSignKeyword_1_0() { return cEqualsSignKeyword_1_0; }
		
		//right=XExpression
		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
		
		//XExpression
		public RuleCall getRightXExpressionParserRuleCall_1_1_0() { return cRightXExpressionParserRuleCall_1_1_0; }
		
		//(=> ',' additionalVariables+=XJAdditionalXVariableDeclaration)*
		public Group getGroup_2() { return cGroup_2; }
		
		//=> ','
		public Keyword getCommaKeyword_2_0() { return cCommaKeyword_2_0; }
		
		//additionalVariables+=XJAdditionalXVariableDeclaration
		public Assignment getAdditionalVariablesAssignment_2_1() { return cAdditionalVariablesAssignment_2_1; }
		
		//XJAdditionalXVariableDeclaration
		public RuleCall getAdditionalVariablesXJAdditionalXVariableDeclarationParserRuleCall_2_1_0() { return cAdditionalVariablesXJAdditionalXVariableDeclarationParserRuleCall_2_1_0; }
	}
	public class XJAdditionalXVariableDeclarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJAdditionalXVariableDeclaration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJAdditionalXVariableDeclarationAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cEqualsSignKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cRightAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cRightXExpressionParserRuleCall_2_1_0 = (RuleCall)cRightAssignment_2_1.eContents().get(0);
		
		//// the second predicate is to avoid ambiguities with for loops
		//// that already consider several variable declarations
		//// in our case we always parse them as several variable declarations
		//// since we allow them also as standard variable declarations as in Java
		//XJAdditionalXVariableDeclaration XVariableDeclaration:
		//	{XJAdditionalXVariableDeclaration} name=ValidID ('=' right=XExpression)?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJAdditionalXVariableDeclaration} name=ValidID ('=' right=XExpression)?
		public Group getGroup() { return cGroup; }
		
		//{XJAdditionalXVariableDeclaration}
		public Action getXJAdditionalXVariableDeclarationAction_0() { return cXJAdditionalXVariableDeclarationAction_0; }
		
		//name=ValidID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ValidID
		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
		
		//('=' right=XExpression)?
		public Group getGroup_2() { return cGroup_2; }
		
		//'='
		public Keyword getEqualsSignKeyword_2_0() { return cEqualsSignKeyword_2_0; }
		
		//right=XExpression
		public Assignment getRightAssignment_2_1() { return cRightAssignment_2_1; }
		
		//XExpression
		public RuleCall getRightXExpressionParserRuleCall_2_1_0() { return cRightXExpressionParserRuleCall_2_1_0; }
	}
	public class XAssignmentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XAssignment");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Group cGroup_0_0_0 = (Group)cGroup_0_0.eContents().get(0);
		private final Action cXJAssignmentAction_0_0_0_0 = (Action)cGroup_0_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_0_0_0_1 = (Assignment)cGroup_0_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0 = (CrossReference)cFeatureAssignment_0_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_0_0_2 = (Keyword)cGroup_0_0_0.eContents().get(2);
		private final Assignment cIndexesAssignment_0_0_0_3 = (Assignment)cGroup_0_0_0.eContents().get(3);
		private final RuleCall cIndexesXExpressionParserRuleCall_0_0_0_3_0 = (RuleCall)cIndexesAssignment_0_0_0_3.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_0_0_4 = (Keyword)cGroup_0_0_0.eContents().get(4);
		private final Group cGroup_0_0_0_5 = (Group)cGroup_0_0_0.eContents().get(5);
		private final Keyword cLeftSquareBracketKeyword_0_0_0_5_0 = (Keyword)cGroup_0_0_0_5.eContents().get(0);
		private final Assignment cIndexesAssignment_0_0_0_5_1 = (Assignment)cGroup_0_0_0_5.eContents().get(1);
		private final RuleCall cIndexesXExpressionParserRuleCall_0_0_0_5_1_0 = (RuleCall)cIndexesAssignment_0_0_0_5_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_0_0_5_2 = (Keyword)cGroup_0_0_0_5.eContents().get(2);
		private final RuleCall cOpSingleAssignParserRuleCall_0_0_0_6 = (RuleCall)cGroup_0_0_0.eContents().get(6);
		private final Assignment cValueAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cValueXAssignmentParserRuleCall_0_1_0 = (RuleCall)cValueAssignment_0_1.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXAssignmentAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0.eContents().get(1);
		private final RuleCall cOpSingleAssignParserRuleCall_1_0_0_2 = (RuleCall)cGroup_1_0_0.eContents().get(2);
		private final Assignment cValueAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cValueXAssignmentParserRuleCall_1_1_0 = (RuleCall)cValueAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final RuleCall cXOrExpressionParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Alternatives cAlternatives_2_1 = (Alternatives)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cAlternatives_2_1.eContents().get(0);
		private final Group cGroup_2_1_0_0 = (Group)cGroup_2_1_0.eContents().get(0);
		private final Group cGroup_2_1_0_0_0 = (Group)cGroup_2_1_0_0.eContents().get(0);
		private final Action cXJConditionalExpressionIfAction_2_1_0_0_0_0 = (Action)cGroup_2_1_0_0_0.eContents().get(0);
		private final Keyword cQuestionMarkKeyword_2_1_0_0_0_1 = (Keyword)cGroup_2_1_0_0_0.eContents().get(1);
		private final Assignment cThenAssignment_2_1_0_1 = (Assignment)cGroup_2_1_0.eContents().get(1);
		private final RuleCall cThenXExpressionParserRuleCall_2_1_0_1_0 = (RuleCall)cThenAssignment_2_1_0_1.eContents().get(0);
		private final Keyword cColonKeyword_2_1_0_2 = (Keyword)cGroup_2_1_0.eContents().get(2);
		private final Assignment cElseAssignment_2_1_0_3 = (Assignment)cGroup_2_1_0.eContents().get(3);
		private final RuleCall cElseXExpressionParserRuleCall_2_1_0_3_0 = (RuleCall)cElseAssignment_2_1_0_3.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cAlternatives_2_1.eContents().get(1);
		private final Group cGroup_2_1_1_0 = (Group)cGroup_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_1_0_0 = (Group)cGroup_2_1_1_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_2_1_1_0_0_0 = (Action)cGroup_2_1_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_2_1_1_0_0_1 = (Assignment)cGroup_2_1_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_2_1_1_0_0_1_0 = (CrossReference)cFeatureAssignment_2_1_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_2_1_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_2_1_1_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_2_1_1_1 = (Assignment)cGroup_2_1_1.eContents().get(1);
		private final RuleCall cRightOperandXAssignmentParserRuleCall_2_1_1_1_0 = (RuleCall)cRightOperandAssignment_2_1_1_1.eContents().get(0);
		
		//@Override
		//XAssignment XExpression:
		//	=> ({XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID]
		//	'[' indexes+=XExpression ']' ('[' indexes+=XExpression ']')*
		//	OpSingleAssign) value=XAssignment |
		//	=> ({XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment |
		//	XOrExpression (=> ({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression
		//	|
		//	=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		//	rightOperand=XAssignment)?;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] '[' indexes+=XExpression ']' ('['
		//indexes+=XExpression ']')* OpSingleAssign) value=XAssignment | => ({XAssignment}
		//feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | XOrExpression (=>
		//({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression | =>
		//({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		//rightOperand=XAssignment)?
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//=> ({XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] '[' indexes+=XExpression ']' ('['
		//indexes+=XExpression ']')* OpSingleAssign) value=XAssignment
		public Group getGroup_0() { return cGroup_0; }
		
		//=> ({XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] '[' indexes+=XExpression ']' ('['
		//indexes+=XExpression ']')* OpSingleAssign)
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] '[' indexes+=XExpression ']' ('['
		//indexes+=XExpression ']')* OpSingleAssign
		public Group getGroup_0_0_0() { return cGroup_0_0_0; }
		
		//{XJAssignment}
		public Action getXJAssignmentAction_0_0_0_0() { return cXJAssignmentAction_0_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|FeatureCallID]
		public Assignment getFeatureAssignment_0_0_0_1() { return cFeatureAssignment_0_0_0_1; }
		
		//[types::JvmIdentifiableElement|FeatureCallID]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0; }
		
		//FeatureCallID
		public RuleCall getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_0_0_1_0_1() { return cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_0_0_1_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_0_2() { return cLeftSquareBracketKeyword_0_0_0_2; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_0_0_0_3() { return cIndexesAssignment_0_0_0_3; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_0_0_0_3_0() { return cIndexesXExpressionParserRuleCall_0_0_0_3_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_0_4() { return cRightSquareBracketKeyword_0_0_0_4; }
		
		//('[' indexes+=XExpression ']')*
		public Group getGroup_0_0_0_5() { return cGroup_0_0_0_5; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_0_5_0() { return cLeftSquareBracketKeyword_0_0_0_5_0; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_0_0_0_5_1() { return cIndexesAssignment_0_0_0_5_1; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_0_0_0_5_1_0() { return cIndexesXExpressionParserRuleCall_0_0_0_5_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_0_5_2() { return cRightSquareBracketKeyword_0_0_0_5_2; }
		
		//OpSingleAssign
		public RuleCall getOpSingleAssignParserRuleCall_0_0_0_6() { return cOpSingleAssignParserRuleCall_0_0_0_6; }
		
		//value=XAssignment
		public Assignment getValueAssignment_0_1() { return cValueAssignment_0_1; }
		
		//XAssignment
		public RuleCall getValueXAssignmentParserRuleCall_0_1_0() { return cValueXAssignmentParserRuleCall_0_1_0; }
		
		//=> ({XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment
		public Group getGroup_1() { return cGroup_1; }
		
		//=> ({XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign)
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XAssignment}
		public Action getXAssignmentAction_1_0_0_0() { return cXAssignmentAction_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|FeatureCallID]
		public Assignment getFeatureAssignment_1_0_0_1() { return cFeatureAssignment_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|FeatureCallID]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0; }
		
		//FeatureCallID
		public RuleCall getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_1_0_1; }
		
		//OpSingleAssign
		public RuleCall getOpSingleAssignParserRuleCall_1_0_0_2() { return cOpSingleAssignParserRuleCall_1_0_0_2; }
		
		//value=XAssignment
		public Assignment getValueAssignment_1_1() { return cValueAssignment_1_1; }
		
		//XAssignment
		public RuleCall getValueXAssignmentParserRuleCall_1_1_0() { return cValueXAssignmentParserRuleCall_1_1_0; }
		
		//XOrExpression (=> ({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression | =>
		//({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		//rightOperand=XAssignment)?
		public Group getGroup_2() { return cGroup_2; }
		
		//XOrExpression
		public RuleCall getXOrExpressionParserRuleCall_2_0() { return cXOrExpressionParserRuleCall_2_0; }
		
		//(=> ({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression | =>
		//({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		//rightOperand=XAssignment)?
		public Alternatives getAlternatives_2_1() { return cAlternatives_2_1; }
		
		//=> ({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//=> ({XJConditionalExpression.if=current} '?')
		public Group getGroup_2_1_0_0() { return cGroup_2_1_0_0; }
		
		//{XJConditionalExpression.if=current} '?'
		public Group getGroup_2_1_0_0_0() { return cGroup_2_1_0_0_0; }
		
		//{XJConditionalExpression.if=current}
		public Action getXJConditionalExpressionIfAction_2_1_0_0_0_0() { return cXJConditionalExpressionIfAction_2_1_0_0_0_0; }
		
		//'?'
		public Keyword getQuestionMarkKeyword_2_1_0_0_0_1() { return cQuestionMarkKeyword_2_1_0_0_0_1; }
		
		//then=XExpression
		public Assignment getThenAssignment_2_1_0_1() { return cThenAssignment_2_1_0_1; }
		
		//XExpression
		public RuleCall getThenXExpressionParserRuleCall_2_1_0_1_0() { return cThenXExpressionParserRuleCall_2_1_0_1_0; }
		
		//':'
		public Keyword getColonKeyword_2_1_0_2() { return cColonKeyword_2_1_0_2; }
		
		//else=XExpression
		public Assignment getElseAssignment_2_1_0_3() { return cElseAssignment_2_1_0_3; }
		
		//XExpression
		public RuleCall getElseXExpressionParserRuleCall_2_1_0_3_0() { return cElseXExpressionParserRuleCall_2_1_0_3_0; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		//rightOperand=XAssignment
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
		public Group getGroup_2_1_1_0() { return cGroup_2_1_1_0; }
		
		//{XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign]
		public Group getGroup_2_1_1_0_0() { return cGroup_2_1_1_0_0; }
		
		//{XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_2_1_1_0_0_0() { return cXBinaryOperationLeftOperandAction_2_1_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpMultiAssign]
		public Assignment getFeatureAssignment_2_1_1_0_0_1() { return cFeatureAssignment_2_1_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpMultiAssign]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_2_1_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_2_1_1_0_0_1_0; }
		
		//OpMultiAssign
		public RuleCall getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_2_1_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_2_1_1_0_0_1_0_1; }
		
		//rightOperand=XAssignment
		public Assignment getRightOperandAssignment_2_1_1_1() { return cRightOperandAssignment_2_1_1_1; }
		
		//XAssignment
		public RuleCall getRightOperandXAssignmentParserRuleCall_2_1_1_1_0() { return cRightOperandXAssignmentParserRuleCall_2_1_1_1_0; }
	}
	public class OpMultiAssignElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpMultiAssign");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cPlusSignEqualsSignKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cHyphenMinusEqualsSignKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cAsteriskEqualsSignKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cSolidusEqualsSignKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final Keyword cPercentSignEqualsSignKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
		private final Keyword cAmpersandEqualsSignKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
		private final Keyword cVerticalLineEqualsSignKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
		private final Keyword cCircumflexAccentEqualsSignKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
		private final Group cGroup_8 = (Group)cAlternatives.eContents().get(8);
		private final Keyword cLessThanSignKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cLessThanSignKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Keyword cEqualsSignKeyword_8_2 = (Keyword)cGroup_8.eContents().get(2);
		private final Group cGroup_9 = (Group)cAlternatives.eContents().get(9);
		private final Keyword cGreaterThanSignKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Keyword cGreaterThanSignEqualsSignKeyword_9_2 = (Keyword)cGroup_9.eContents().get(2);
		
		//@Override
		//OpMultiAssign:
		//	'+=' | '-=' | '*=' | '/=' | '%=' |
		//	'&=' | '|=' | '^=' | // added in Jbase
		//	'<' '<' '=' |
		//	'>' '>'? '>=';
		@Override public ParserRule getRule() { return rule; }
		
		//'+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | // added in Jbase
		//'<' '<' '=' | '>' '>'? '>='
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'+='
		public Keyword getPlusSignEqualsSignKeyword_0() { return cPlusSignEqualsSignKeyword_0; }
		
		//'-='
		public Keyword getHyphenMinusEqualsSignKeyword_1() { return cHyphenMinusEqualsSignKeyword_1; }
		
		//'*='
		public Keyword getAsteriskEqualsSignKeyword_2() { return cAsteriskEqualsSignKeyword_2; }
		
		//'/='
		public Keyword getSolidusEqualsSignKeyword_3() { return cSolidusEqualsSignKeyword_3; }
		
		//'%='
		public Keyword getPercentSignEqualsSignKeyword_4() { return cPercentSignEqualsSignKeyword_4; }
		
		//'&='
		public Keyword getAmpersandEqualsSignKeyword_5() { return cAmpersandEqualsSignKeyword_5; }
		
		//'|='
		public Keyword getVerticalLineEqualsSignKeyword_6() { return cVerticalLineEqualsSignKeyword_6; }
		
		//'^='
		public Keyword getCircumflexAccentEqualsSignKeyword_7() { return cCircumflexAccentEqualsSignKeyword_7; }
		
		//// added in Jbase
		//'<' '<' '='
		public Group getGroup_8() { return cGroup_8; }
		
		//// added in Jbase
		//'<'
		public Keyword getLessThanSignKeyword_8_0() { return cLessThanSignKeyword_8_0; }
		
		//'<'
		public Keyword getLessThanSignKeyword_8_1() { return cLessThanSignKeyword_8_1; }
		
		//'='
		public Keyword getEqualsSignKeyword_8_2() { return cEqualsSignKeyword_8_2; }
		
		//'>' '>'? '>='
		public Group getGroup_9() { return cGroup_9; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_9_0() { return cGreaterThanSignKeyword_9_0; }
		
		//'>'?
		public Keyword getGreaterThanSignKeyword_9_1() { return cGreaterThanSignKeyword_9_1; }
		
		//'>='
		public Keyword getGreaterThanSignEqualsSignKeyword_9_2() { return cGreaterThanSignEqualsSignKeyword_9_2; }
	}
	public class XJFeatureCallWithArrayAccessElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJFeatureCallWithArrayAccess");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXFeatureCallParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Action cXJArrayAccessExpressionArrayAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
		private final Assignment cIndexesAssignment_1_0_2 = (Assignment)cGroup_1_0.eContents().get(2);
		private final RuleCall cIndexesXExpressionParserRuleCall_1_0_2_0 = (RuleCall)cIndexesAssignment_1_0_2.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_3 = (Keyword)cGroup_1_0.eContents().get(3);
		private final Group cGroup_1_0_4 = (Group)cGroup_1_0.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_1_0_4_0 = (Keyword)cGroup_1_0_4.eContents().get(0);
		private final Assignment cIndexesAssignment_1_0_4_1 = (Assignment)cGroup_1_0_4.eContents().get(1);
		private final RuleCall cIndexesXExpressionParserRuleCall_1_0_4_1_0 = (RuleCall)cIndexesAssignment_1_0_4_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_4_2 = (Keyword)cGroup_1_0_4.eContents().get(2);
		
		//XJFeatureCallWithArrayAccess XExpression:
		//	XFeatureCall => ({XJArrayAccessExpression.array=current}
		//	'[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*)?;
		@Override public ParserRule getRule() { return rule; }
		
		//XFeatureCall => ({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression
		//']')*)?
		public Group getGroup() { return cGroup; }
		
		//XFeatureCall
		public RuleCall getXFeatureCallParserRuleCall_0() { return cXFeatureCallParserRuleCall_0; }
		
		//=> ({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*)?
		public Group getGroup_1() { return cGroup_1; }
		
		//{XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XJArrayAccessExpression.array=current}
		public Action getXJArrayAccessExpressionArrayAction_1_0_0() { return cXJArrayAccessExpressionArrayAction_1_0_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_1() { return cLeftSquareBracketKeyword_1_0_1; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_1_0_2() { return cIndexesAssignment_1_0_2; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_1_0_2_0() { return cIndexesXExpressionParserRuleCall_1_0_2_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_3() { return cRightSquareBracketKeyword_1_0_3; }
		
		//(=> '[' indexes+=XExpression ']')*
		public Group getGroup_1_0_4() { return cGroup_1_0_4; }
		
		//=> '['
		public Keyword getLeftSquareBracketKeyword_1_0_4_0() { return cLeftSquareBracketKeyword_1_0_4_0; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_1_0_4_1() { return cIndexesAssignment_1_0_4_1; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_1_0_4_1_0() { return cIndexesXExpressionParserRuleCall_1_0_4_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_4_2() { return cRightSquareBracketKeyword_1_0_4_2; }
	}
	public class XFeatureCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XFeatureCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXFeatureCallAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cFeatureAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0 = (CrossReference)cFeatureAssignment_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cExplicitOperationCallAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final Keyword cExplicitOperationCallLeftParenthesisKeyword_2_0_0 = (Keyword)cExplicitOperationCallAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Assignment cFeatureCallArgumentsAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
		private final RuleCall cFeatureCallArgumentsXExpressionParserRuleCall_2_1_0_0 = (RuleCall)cFeatureCallArgumentsAssignment_2_1_0.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cGroup_2_1.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
		private final Assignment cFeatureCallArgumentsAssignment_2_1_1_1 = (Assignment)cGroup_2_1_1.eContents().get(1);
		private final RuleCall cFeatureCallArgumentsXExpressionParserRuleCall_2_1_1_1_0 = (RuleCall)cFeatureCallArgumentsAssignment_2_1_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
		
		//@Override
		//XFeatureCall XExpression:
		//	{XFeatureCall} feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='('
		//	(featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)?
		//	')')?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XFeatureCall} feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='('
		//(featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)? ')')?
		public Group getGroup() { return cGroup; }
		
		//{XFeatureCall}
		public Action getXFeatureCallAction_0() { return cXFeatureCallAction_0; }
		
		//feature=[types::JvmIdentifiableElement|IdOrSuper]
		public Assignment getFeatureAssignment_1() { return cFeatureAssignment_1; }
		
		//[types::JvmIdentifiableElement|IdOrSuper]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0; }
		
		//IdOrSuper
		public RuleCall getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_0_1() { return cFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_0_1; }
		
		//(=> explicitOperationCall?='(' (featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)? ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//=> explicitOperationCall?='('
		public Assignment getExplicitOperationCallAssignment_2_0() { return cExplicitOperationCallAssignment_2_0; }
		
		//'('
		public Keyword getExplicitOperationCallLeftParenthesisKeyword_2_0_0() { return cExplicitOperationCallLeftParenthesisKeyword_2_0_0; }
		
		//(featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//featureCallArguments+=XExpression
		public Assignment getFeatureCallArgumentsAssignment_2_1_0() { return cFeatureCallArgumentsAssignment_2_1_0; }
		
		//XExpression
		public RuleCall getFeatureCallArgumentsXExpressionParserRuleCall_2_1_0_0() { return cFeatureCallArgumentsXExpressionParserRuleCall_2_1_0_0; }
		
		//(',' featureCallArguments+=XExpression)*
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//','
		public Keyword getCommaKeyword_2_1_1_0() { return cCommaKeyword_2_1_1_0; }
		
		//featureCallArguments+=XExpression
		public Assignment getFeatureCallArgumentsAssignment_2_1_1_1() { return cFeatureCallArgumentsAssignment_2_1_1_1; }
		
		//XExpression
		public RuleCall getFeatureCallArgumentsXExpressionParserRuleCall_2_1_1_1_0() { return cFeatureCallArgumentsXExpressionParserRuleCall_2_1_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
	}
	public class XConstructorCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XConstructorCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJConstructorCallAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cNewKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstructorAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstructorJvmConstructorCrossReference_2_0 = (CrossReference)cConstructorAssignment_2.eContents().get(0);
		private final RuleCall cConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1 = (RuleCall)cConstructorJvmConstructorCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cExplicitTypeArgumentsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cExplicitTypeArgumentsLessThanSignKeyword_3_0_0 = (Keyword)cExplicitTypeArgumentsAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Assignment cTypeArgumentsAssignment_3_1_0 = (Assignment)cGroup_3_1.eContents().get(0);
		private final RuleCall cTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0_0 = (RuleCall)cTypeArgumentsAssignment_3_1_0.eContents().get(0);
		private final Group cGroup_3_1_1 = (Group)cGroup_3_1.eContents().get(1);
		private final Keyword cCommaKeyword_3_1_1_0 = (Keyword)cGroup_3_1_1.eContents().get(0);
		private final Assignment cTypeArgumentsAssignment_3_1_1_1 = (Assignment)cGroup_3_1_1.eContents().get(1);
		private final RuleCall cTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_1_1_0 = (RuleCall)cTypeArgumentsAssignment_3_1_1_1.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cExplicitConstructorCallAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final Keyword cExplicitConstructorCallLeftParenthesisKeyword_4_0_0 = (Keyword)cExplicitConstructorCallAssignment_4_0.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Assignment cArgumentsAssignment_4_1_0 = (Assignment)cGroup_4_1.eContents().get(0);
		private final RuleCall cArgumentsXExpressionParserRuleCall_4_1_0_0 = (RuleCall)cArgumentsAssignment_4_1_0.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cGroup_4_1.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_1_0 = (Keyword)cGroup_4_1_1.eContents().get(0);
		private final Assignment cArgumentsAssignment_4_1_1_1 = (Assignment)cGroup_4_1_1.eContents().get(1);
		private final RuleCall cArgumentsXExpressionParserRuleCall_4_1_1_1_0 = (RuleCall)cArgumentsAssignment_4_1_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		
		//@Override
		//XConstructorCall XExpression:
		//	{XJConstructorCall}
		//	'new' constructor=[types::JvmConstructor|QualifiedName] (=> explicitTypeArguments?='<'
		//	(typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)*)? '>')? (=>
		//	explicitConstructorCall?='(' (arguments+=XExpression (',' arguments+=XExpression)*)?
		//	')')?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJConstructorCall} 'new' constructor=[types::JvmConstructor|QualifiedName] (=> explicitTypeArguments?='<'
		//(typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)*)? '>')? (=>
		//explicitConstructorCall?='(' (arguments+=XExpression (',' arguments+=XExpression)*)? ')')?
		public Group getGroup() { return cGroup; }
		
		//{XJConstructorCall}
		public Action getXJConstructorCallAction_0() { return cXJConstructorCallAction_0; }
		
		//'new'
		public Keyword getNewKeyword_1() { return cNewKeyword_1; }
		
		//constructor=[types::JvmConstructor|QualifiedName]
		public Assignment getConstructorAssignment_2() { return cConstructorAssignment_2; }
		
		//[types::JvmConstructor|QualifiedName]
		public CrossReference getConstructorJvmConstructorCrossReference_2_0() { return cConstructorJvmConstructorCrossReference_2_0; }
		
		//QualifiedName
		public RuleCall getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1() { return cConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1; }
		
		//(=> explicitTypeArguments?='<' (typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)*)?
		//'>')?
		public Group getGroup_3() { return cGroup_3; }
		
		//=> explicitTypeArguments?='<'
		public Assignment getExplicitTypeArgumentsAssignment_3_0() { return cExplicitTypeArgumentsAssignment_3_0; }
		
		//'<'
		public Keyword getExplicitTypeArgumentsLessThanSignKeyword_3_0_0() { return cExplicitTypeArgumentsLessThanSignKeyword_3_0_0; }
		
		//(typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)*)?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//typeArguments+=JvmArgumentTypeReference
		public Assignment getTypeArgumentsAssignment_3_1_0() { return cTypeArgumentsAssignment_3_1_0; }
		
		//JvmArgumentTypeReference
		public RuleCall getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0_0() { return cTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0_0; }
		
		//(',' typeArguments+=JvmArgumentTypeReference)*
		public Group getGroup_3_1_1() { return cGroup_3_1_1; }
		
		//','
		public Keyword getCommaKeyword_3_1_1_0() { return cCommaKeyword_3_1_1_0; }
		
		//typeArguments+=JvmArgumentTypeReference
		public Assignment getTypeArgumentsAssignment_3_1_1_1() { return cTypeArgumentsAssignment_3_1_1_1; }
		
		//JvmArgumentTypeReference
		public RuleCall getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_1_1_0() { return cTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_1_1_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_3_2() { return cGreaterThanSignKeyword_3_2; }
		
		//(=> explicitConstructorCall?='(' (arguments+=XExpression (',' arguments+=XExpression)*)? ')')?
		public Group getGroup_4() { return cGroup_4; }
		
		//=> explicitConstructorCall?='('
		public Assignment getExplicitConstructorCallAssignment_4_0() { return cExplicitConstructorCallAssignment_4_0; }
		
		//'('
		public Keyword getExplicitConstructorCallLeftParenthesisKeyword_4_0_0() { return cExplicitConstructorCallLeftParenthesisKeyword_4_0_0; }
		
		//(arguments+=XExpression (',' arguments+=XExpression)*)?
		public Group getGroup_4_1() { return cGroup_4_1; }
		
		//arguments+=XExpression
		public Assignment getArgumentsAssignment_4_1_0() { return cArgumentsAssignment_4_1_0; }
		
		//XExpression
		public RuleCall getArgumentsXExpressionParserRuleCall_4_1_0_0() { return cArgumentsXExpressionParserRuleCall_4_1_0_0; }
		
		//(',' arguments+=XExpression)*
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }
		
		//','
		public Keyword getCommaKeyword_4_1_1_0() { return cCommaKeyword_4_1_1_0; }
		
		//arguments+=XExpression
		public Assignment getArgumentsAssignment_4_1_1_1() { return cArgumentsAssignment_4_1_1_1; }
		
		//XExpression
		public RuleCall getArgumentsXExpressionParserRuleCall_4_1_1_1_0() { return cArgumentsXExpressionParserRuleCall_4_1_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4_2() { return cRightParenthesisKeyword_4_2; }
	}
	public class XJArrayConstructorCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJArrayConstructorCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXJArrayConstructorCallAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Keyword cNewKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Assignment cTypeAssignment_0_0_2 = (Assignment)cGroup_0_0.eContents().get(2);
		private final CrossReference cTypeJvmTypeCrossReference_0_0_2_0 = (CrossReference)cTypeAssignment_0_0_2.eContents().get(0);
		private final RuleCall cTypeJvmTypeQualifiedNameParserRuleCall_0_0_2_0_1 = (RuleCall)cTypeJvmTypeCrossReference_0_0_2_0.eContents().get(1);
		private final Assignment cDimensionsAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cDimensionsXJArrayDimensionParserRuleCall_0_0_3_0 = (RuleCall)cDimensionsAssignment_0_0_3.eContents().get(0);
		private final Assignment cIndexesAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cIndexesXExpressionParserRuleCall_1_0 = (RuleCall)cIndexesAssignment_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cDimensionsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cDimensionsXJArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cDimensionsAssignment_3_0.eContents().get(0);
		private final Assignment cIndexesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cIndexesXExpressionParserRuleCall_3_1_0 = (RuleCall)cIndexesAssignment_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Assignment cArrayLiteralAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayLiteralXJArrayLiteralParserRuleCall_4_0 = (RuleCall)cArrayLiteralAssignment_4.eContents().get(0);
		
		//// dimensions and dimension expressions (feature indexes) are not associated during parsing,
		//// the association, i.e., knowing whether a dimension expression comes after
		//// an empty dimension (which is not legal), will be retrieved by
		//// JbaseModelUtil.arrayDimensionIndexAssociations(XJArrayConstructorCall)
		//// based on the offset of the [ and the array dimension XEpression
		//XJArrayConstructorCall XExpression:
		//	=> ({XJArrayConstructorCall}
		//	'new'
		//	type=[types::JvmType|QualifiedName] dimensions+=XJArrayDimension) indexes+=XExpression? ']' (=>
		//	dimensions+=XJArrayDimension indexes+=XExpression? ']')*
		//	=> arrayLiteral=XJArrayLiteral?;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJArrayConstructorCall} 'new' type=[types::JvmType|QualifiedName] dimensions+=XJArrayDimension)
		//indexes+=XExpression? ']' (=> dimensions+=XJArrayDimension indexes+=XExpression? ']')* => arrayLiteral=XJArrayLiteral?
		public Group getGroup() { return cGroup; }
		
		//=> ({XJArrayConstructorCall} 'new' type=[types::JvmType|QualifiedName] dimensions+=XJArrayDimension)
		public Group getGroup_0() { return cGroup_0; }
		
		//{XJArrayConstructorCall} 'new' type=[types::JvmType|QualifiedName] dimensions+=XJArrayDimension
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJArrayConstructorCall}
		public Action getXJArrayConstructorCallAction_0_0_0() { return cXJArrayConstructorCallAction_0_0_0; }
		
		//'new'
		public Keyword getNewKeyword_0_0_1() { return cNewKeyword_0_0_1; }
		
		//type=[types::JvmType|QualifiedName]
		public Assignment getTypeAssignment_0_0_2() { return cTypeAssignment_0_0_2; }
		
		//[types::JvmType|QualifiedName]
		public CrossReference getTypeJvmTypeCrossReference_0_0_2_0() { return cTypeJvmTypeCrossReference_0_0_2_0; }
		
		//QualifiedName
		public RuleCall getTypeJvmTypeQualifiedNameParserRuleCall_0_0_2_0_1() { return cTypeJvmTypeQualifiedNameParserRuleCall_0_0_2_0_1; }
		
		//dimensions+=XJArrayDimension
		public Assignment getDimensionsAssignment_0_0_3() { return cDimensionsAssignment_0_0_3; }
		
		//XJArrayDimension
		public RuleCall getDimensionsXJArrayDimensionParserRuleCall_0_0_3_0() { return cDimensionsXJArrayDimensionParserRuleCall_0_0_3_0; }
		
		//// getting here is enough to tell it's an array constructor call
		//indexes+=XExpression?
		public Assignment getIndexesAssignment_1() { return cIndexesAssignment_1; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_1_0() { return cIndexesXExpressionParserRuleCall_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_2() { return cRightSquareBracketKeyword_2; }
		
		//(=> dimensions+=XJArrayDimension indexes+=XExpression? ']')*
		public Group getGroup_3() { return cGroup_3; }
		
		//=> dimensions+=XJArrayDimension
		public Assignment getDimensionsAssignment_3_0() { return cDimensionsAssignment_3_0; }
		
		//XJArrayDimension
		public RuleCall getDimensionsXJArrayDimensionParserRuleCall_3_0_0() { return cDimensionsXJArrayDimensionParserRuleCall_3_0_0; }
		
		//indexes+=XExpression?
		public Assignment getIndexesAssignment_3_1() { return cIndexesAssignment_3_1; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_3_1_0() { return cIndexesXExpressionParserRuleCall_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_2() { return cRightSquareBracketKeyword_3_2; }
		
		//=> arrayLiteral=XJArrayLiteral?
		public Assignment getArrayLiteralAssignment_4() { return cArrayLiteralAssignment_4; }
		
		//XJArrayLiteral
		public RuleCall getArrayLiteralXJArrayLiteralParserRuleCall_4_0() { return cArrayLiteralXJArrayLiteralParserRuleCall_4_0; }
	}
	public class XJArrayDimensionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJArrayDimension");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJArrayDimensionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//// We need an EObject instead of a simple String since we then
		//// need to find the corresponding node (and offset) with NodeModelUtils
		//// in order to associate dimensions with indexes
		//XJArrayDimension:
		//	{XJArrayDimension} '[';
		@Override public ParserRule getRule() { return rule; }
		
		//{XJArrayDimension} '['
		public Group getGroup() { return cGroup; }
		
		//{XJArrayDimension}
		public Action getXJArrayDimensionAction_0() { return cXJArrayDimensionAction_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1() { return cLeftSquareBracketKeyword_1; }
	}
	public class XCastedExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XCastedExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXCastedExpressionAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Assignment cTypeAssignment_0_0_2 = (Assignment)cGroup_0_0.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_0_0_2_0 = (RuleCall)cTypeAssignment_0_0_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_0_3 = (Keyword)cGroup_0_0.eContents().get(3);
		private final Assignment cTargetAssignment_0_0_4 = (Assignment)cGroup_0_0.eContents().get(4);
		private final RuleCall cTargetXExpressionParserRuleCall_0_0_4_0 = (RuleCall)cTargetAssignment_0_0_4.eContents().get(0);
		private final RuleCall cXPostfixOperationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//@Override
		//XCastedExpression XExpression:
		//	=> ({XCastedExpression} '(' type=JvmTypeReference ')' target=XExpression) | XPostfixOperation;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XCastedExpression} '(' type=JvmTypeReference ')' target=XExpression) | XPostfixOperation
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//=> ({XCastedExpression} '(' type=JvmTypeReference ')' target=XExpression)
		public Group getGroup_0() { return cGroup_0; }
		
		//{XCastedExpression} '(' type=JvmTypeReference ')' target=XExpression
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XCastedExpression}
		public Action getXCastedExpressionAction_0_0_0() { return cXCastedExpressionAction_0_0_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_0_0_1() { return cLeftParenthesisKeyword_0_0_1; }
		
		//type=JvmTypeReference
		public Assignment getTypeAssignment_0_0_2() { return cTypeAssignment_0_0_2; }
		
		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_0_0_2_0() { return cTypeJvmTypeReferenceParserRuleCall_0_0_2_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_0_0_3() { return cRightParenthesisKeyword_0_0_3; }
		
		//target=XExpression
		public Assignment getTargetAssignment_0_0_4() { return cTargetAssignment_0_0_4; }
		
		//XExpression
		public RuleCall getTargetXExpressionParserRuleCall_0_0_4_0() { return cTargetXExpressionParserRuleCall_0_0_4_0; }
		
		//XPostfixOperation
		public RuleCall getXPostfixOperationParserRuleCall_1() { return cXPostfixOperationParserRuleCall_1; }
	}
	public class XPostfixOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XPostfixOperation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Group cGroup_0_0_0 = (Group)cGroup_0_0.eContents().get(0);
		private final Action cXJPrefixOperationAction_0_0_0_0 = (Action)cGroup_0_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_0_0_0_1 = (Assignment)cGroup_0_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0 = (CrossReference)cFeatureAssignment_0_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpPostfixParserRuleCall_0_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0.eContents().get(1);
		private final Assignment cOperandAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cOperandXMemberFeatureCallParserRuleCall_0_1_0 = (RuleCall)cOperandAssignment_0_1.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final RuleCall cXMemberFeatureCallParserRuleCall_1_0 = (RuleCall)cGroup_1.eContents().get(0);
		private final Alternatives cAlternatives_1_1 = (Alternatives)cGroup_1.eContents().get(1);
		private final Group cGroup_1_1_0 = (Group)cAlternatives_1_1.eContents().get(0);
		private final Group cGroup_1_1_0_0 = (Group)cGroup_1_1_0.eContents().get(0);
		private final Action cXPostfixOperationOperandAction_1_1_0_0_0 = (Action)cGroup_1_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_1_0_0_1 = (Assignment)cGroup_1_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0.eContents().get(1);
		private final Group cGroup_1_1_1 = (Group)cAlternatives_1_1.eContents().get(1);
		private final Group cGroup_1_1_1_0 = (Group)cGroup_1_1_1.eContents().get(0);
		private final Action cXJArrayAccessExpressionArrayAction_1_1_1_0_0 = (Action)cGroup_1_1_1_0.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_1_1_0_1 = (Keyword)cGroup_1_1_1_0.eContents().get(1);
		private final Assignment cIndexesAssignment_1_1_1_0_2 = (Assignment)cGroup_1_1_1_0.eContents().get(2);
		private final RuleCall cIndexesXExpressionParserRuleCall_1_1_1_0_2_0 = (RuleCall)cIndexesAssignment_1_1_1_0_2.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_1_1_0_3 = (Keyword)cGroup_1_1_1_0.eContents().get(3);
		private final Group cGroup_1_1_1_0_4 = (Group)cGroup_1_1_1_0.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_1_1_1_0_4_0 = (Keyword)cGroup_1_1_1_0_4.eContents().get(0);
		private final Assignment cIndexesAssignment_1_1_1_0_4_1 = (Assignment)cGroup_1_1_1_0_4.eContents().get(1);
		private final RuleCall cIndexesXExpressionParserRuleCall_1_1_1_0_4_1_0 = (RuleCall)cIndexesAssignment_1_1_1_0_4_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_1_1_0_4_2 = (Keyword)cGroup_1_1_1_0_4.eContents().get(2);
		
		//@Override
		//XPostfixOperation XExpression:
		//	=> ({XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix]) operand=XMemberFeatureCall
		//	| XMemberFeatureCall (=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]) |
		//	=> ({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*))?;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix]) operand=XMemberFeatureCall |
		//XMemberFeatureCall (=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]) | =>
		//({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*))?
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//=> ({XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix]) operand=XMemberFeatureCall
		public Group getGroup_0() { return cGroup_0; }
		
		//=> ({XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix])
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix]
		public Group getGroup_0_0_0() { return cGroup_0_0_0; }
		
		//{XJPrefixOperation}
		public Action getXJPrefixOperationAction_0_0_0_0() { return cXJPrefixOperationAction_0_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpPostfix]
		public Assignment getFeatureAssignment_0_0_0_1() { return cFeatureAssignment_0_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpPostfix]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_0_0_0_1_0; }
		
		//OpPostfix
		public RuleCall getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_0_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpPostfixParserRuleCall_0_0_0_1_0_1; }
		
		//operand=XMemberFeatureCall
		public Assignment getOperandAssignment_0_1() { return cOperandAssignment_0_1; }
		
		//XMemberFeatureCall
		public RuleCall getOperandXMemberFeatureCallParserRuleCall_0_1_0() { return cOperandXMemberFeatureCallParserRuleCall_0_1_0; }
		
		//XMemberFeatureCall (=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]) | =>
		//({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*))?
		public Group getGroup_1() { return cGroup_1; }
		
		//XMemberFeatureCall
		public RuleCall getXMemberFeatureCallParserRuleCall_1_0() { return cXMemberFeatureCallParserRuleCall_1_0; }
		
		//(=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]) | =>
		//({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*))?
		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
		
		//=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])
		public Group getGroup_1_1_0() { return cGroup_1_1_0; }
		
		//{XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]
		public Group getGroup_1_1_0_0() { return cGroup_1_1_0_0; }
		
		//{XPostfixOperation.operand=current}
		public Action getXPostfixOperationOperandAction_1_1_0_0_0() { return cXPostfixOperationOperandAction_1_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpPostfix]
		public Assignment getFeatureAssignment_1_1_0_0_1() { return cFeatureAssignment_1_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpPostfix]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0; }
		
		//OpPostfix
		public RuleCall getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_1_0_0_1_0_1; }
		
		//=> ({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*)
		public Group getGroup_1_1_1() { return cGroup_1_1_1; }
		
		//{XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*
		public Group getGroup_1_1_1_0() { return cGroup_1_1_1_0; }
		
		//{XJArrayAccessExpression.array=current}
		public Action getXJArrayAccessExpressionArrayAction_1_1_1_0_0() { return cXJArrayAccessExpressionArrayAction_1_1_1_0_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_1_1_0_1() { return cLeftSquareBracketKeyword_1_1_1_0_1; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_1_1_1_0_2() { return cIndexesAssignment_1_1_1_0_2; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_1_1_1_0_2_0() { return cIndexesXExpressionParserRuleCall_1_1_1_0_2_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_1_1_0_3() { return cRightSquareBracketKeyword_1_1_1_0_3; }
		
		//(=> '[' indexes+=XExpression ']')*
		public Group getGroup_1_1_1_0_4() { return cGroup_1_1_1_0_4; }
		
		//=> '['
		public Keyword getLeftSquareBracketKeyword_1_1_1_0_4_0() { return cLeftSquareBracketKeyword_1_1_1_0_4_0; }
		
		//indexes+=XExpression
		public Assignment getIndexesAssignment_1_1_1_0_4_1() { return cIndexesAssignment_1_1_1_0_4_1; }
		
		//XExpression
		public RuleCall getIndexesXExpressionParserRuleCall_1_1_1_0_4_1_0() { return cIndexesXExpressionParserRuleCall_1_1_1_0_4_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_1_1_0_4_2() { return cRightSquareBracketKeyword_1_1_1_0_4_2; }
	}
	public class XMemberFeatureCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XMemberFeatureCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXPrimaryExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXJClassObjectTypeExpressionAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cArrayDimensionsAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final RuleCall cArrayDimensionsArrayBracketsParserRuleCall_1_0_0_1_0 = (RuleCall)cArrayDimensionsAssignment_1_0_0_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_0_0_2 = (Keyword)cGroup_1_0_0.eContents().get(2);
		private final Keyword cClassKeyword_1_0_0_3 = (Keyword)cGroup_1_0_0.eContents().get(3);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Group cGroup_1_1_0 = (Group)cGroup_1_1.eContents().get(0);
		private final Group cGroup_1_1_0_0 = (Group)cGroup_1_1_0.eContents().get(0);
		private final Action cXAssignmentAssignableAction_1_1_0_0_0 = (Action)cGroup_1_1_0_0.eContents().get(0);
		private final Keyword cFullStopKeyword_1_1_0_0_1 = (Keyword)cGroup_1_1_0_0.eContents().get(1);
		private final Assignment cFeatureAssignment_1_1_0_0_2 = (Assignment)cGroup_1_1_0_0.eContents().get(2);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_2_0 = (CrossReference)cFeatureAssignment_1_1_0_0_2.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_1_0_0_2_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_2_0.eContents().get(1);
		private final RuleCall cOpSingleAssignParserRuleCall_1_1_0_0_3 = (RuleCall)cGroup_1_1_0_0.eContents().get(3);
		private final Assignment cValueAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final RuleCall cValueXAssignmentParserRuleCall_1_1_1_0 = (RuleCall)cValueAssignment_1_1_1.eContents().get(0);
		private final Group cGroup_1_2 = (Group)cAlternatives_1.eContents().get(2);
		private final Group cGroup_1_2_0 = (Group)cGroup_1_2.eContents().get(0);
		private final Group cGroup_1_2_0_0 = (Group)cGroup_1_2_0.eContents().get(0);
		private final Action cXMemberFeatureCallMemberCallTargetAction_1_2_0_0_0 = (Action)cGroup_1_2_0_0.eContents().get(0);
		private final Keyword cFullStopKeyword_1_2_0_0_1 = (Keyword)cGroup_1_2_0_0.eContents().get(1);
		private final Assignment cFeatureAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_2_1_0 = (CrossReference)cFeatureAssignment_1_2_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_2_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_2_1_0.eContents().get(1);
		private final Group cGroup_1_2_2 = (Group)cGroup_1_2.eContents().get(2);
		private final Assignment cExplicitOperationCallAssignment_1_2_2_0 = (Assignment)cGroup_1_2_2.eContents().get(0);
		private final Keyword cExplicitOperationCallLeftParenthesisKeyword_1_2_2_0_0 = (Keyword)cExplicitOperationCallAssignment_1_2_2_0.eContents().get(0);
		private final Group cGroup_1_2_2_1 = (Group)cGroup_1_2_2.eContents().get(1);
		private final Assignment cMemberCallArgumentsAssignment_1_2_2_1_0 = (Assignment)cGroup_1_2_2_1.eContents().get(0);
		private final RuleCall cMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_0_0 = (RuleCall)cMemberCallArgumentsAssignment_1_2_2_1_0.eContents().get(0);
		private final Group cGroup_1_2_2_1_1 = (Group)cGroup_1_2_2_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_2_2_1_1_0 = (Keyword)cGroup_1_2_2_1_1.eContents().get(0);
		private final Assignment cMemberCallArgumentsAssignment_1_2_2_1_1_1 = (Assignment)cGroup_1_2_2_1_1.eContents().get(1);
		private final RuleCall cMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_1_1_0 = (RuleCall)cMemberCallArgumentsAssignment_1_2_2_1_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_2_2_2 = (Keyword)cGroup_1_2_2.eContents().get(2);
		
		//@Override
		//XMemberFeatureCall XExpression:
		//	XPrimaryExpression (
		//	// we don't need this at the moment
		//	//		=>({XJAssignment.assignable=current} ('.'|explicitStatic?="::") 
		//	//			feature=[types::JvmIdentifiableElement|FeatureCallID]
		//	//			'[' index=XExpression ']'
		//	//			OpSingleAssign) value=XAssignment
		//	//	|
		//	=> ({XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class') |
		//	=> ({XAssignment.assignable=current} '.'
		//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment
		//	|
		//	=> ({XMemberFeatureCall.memberCallTarget=current} ".") feature=[types::JvmIdentifiableElement|IdOrSuper] (=>
		//	explicitOperationCall?='(' (memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)?
		//	')')?)*;
		@Override public ParserRule getRule() { return rule; }
		
		//XPrimaryExpression ( // we don't need this at the moment
		////		=>({XJAssignment.assignable=current} ('.'|explicitStatic?="::") 
		////			feature=[types::JvmIdentifiableElement|FeatureCallID]
		////			'[' index=XExpression ']'
		////			OpSingleAssign) value=XAssignment
		////	|
		//=> ({XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class') | =>
		//({XAssignment.assignable=current} '.' feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign)
		//value=XAssignment | => ({XMemberFeatureCall.memberCallTarget=current} ".")
		//feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (memberCallArguments+=XExpression (','
		//memberCallArguments+=XExpression)*)? ')')?)*
		public Group getGroup() { return cGroup; }
		
		//XPrimaryExpression
		public RuleCall getXPrimaryExpressionParserRuleCall_0() { return cXPrimaryExpressionParserRuleCall_0; }
		
		//( // we don't need this at the moment
		////		=>({XJAssignment.assignable=current} ('.'|explicitStatic?="::") 
		////			feature=[types::JvmIdentifiableElement|FeatureCallID]
		////			'[' index=XExpression ']'
		////			OpSingleAssign) value=XAssignment
		////	|
		//=> ({XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class') | =>
		//({XAssignment.assignable=current} '.' feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign)
		//value=XAssignment | => ({XMemberFeatureCall.memberCallTarget=current} ".")
		//feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (memberCallArguments+=XExpression (','
		//memberCallArguments+=XExpression)*)? ')')?)*
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//// we don't need this at the moment
		////		=>({XJAssignment.assignable=current} ('.'|explicitStatic?="::") 
		////			feature=[types::JvmIdentifiableElement|FeatureCallID]
		////			'[' index=XExpression ']'
		////			OpSingleAssign) value=XAssignment
		////	|
		//=> ({XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class')
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class'
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XJClassObject.typeExpression=current}
		public Action getXJClassObjectTypeExpressionAction_1_0_0_0() { return cXJClassObjectTypeExpressionAction_1_0_0_0; }
		
		//arrayDimensions+=ArrayBrackets*
		public Assignment getArrayDimensionsAssignment_1_0_0_1() { return cArrayDimensionsAssignment_1_0_0_1; }
		
		//ArrayBrackets
		public RuleCall getArrayDimensionsArrayBracketsParserRuleCall_1_0_0_1_0() { return cArrayDimensionsArrayBracketsParserRuleCall_1_0_0_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1_0_0_2() { return cFullStopKeyword_1_0_0_2; }
		
		//'class'
		public Keyword getClassKeyword_1_0_0_3() { return cClassKeyword_1_0_0_3; }
		
		//=> ({XAssignment.assignable=current} '.' feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign)
		//value=XAssignment
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//=> ({XAssignment.assignable=current} '.' feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign)
		public Group getGroup_1_1_0() { return cGroup_1_1_0; }
		
		//{XAssignment.assignable=current} '.' feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign
		public Group getGroup_1_1_0_0() { return cGroup_1_1_0_0; }
		
		//{XAssignment.assignable=current}
		public Action getXAssignmentAssignableAction_1_1_0_0_0() { return cXAssignmentAssignableAction_1_1_0_0_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1_1_0_0_1() { return cFullStopKeyword_1_1_0_0_1; }
		
		//feature=[types::JvmIdentifiableElement|FeatureCallID]
		public Assignment getFeatureAssignment_1_1_0_0_2() { return cFeatureAssignment_1_1_0_0_2; }
		
		//[types::JvmIdentifiableElement|FeatureCallID]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_2_0() { return cFeatureJvmIdentifiableElementCrossReference_1_1_0_0_2_0; }
		
		//FeatureCallID
		public RuleCall getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_1_0_0_2_0_1() { return cFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_1_0_0_2_0_1; }
		
		//OpSingleAssign
		public RuleCall getOpSingleAssignParserRuleCall_1_1_0_0_3() { return cOpSingleAssignParserRuleCall_1_1_0_0_3; }
		
		//value=XAssignment
		public Assignment getValueAssignment_1_1_1() { return cValueAssignment_1_1_1; }
		
		//XAssignment
		public RuleCall getValueXAssignmentParserRuleCall_1_1_1_0() { return cValueXAssignmentParserRuleCall_1_1_1_0; }
		
		//=> ({XMemberFeatureCall.memberCallTarget=current} ".") feature=[types::JvmIdentifiableElement|IdOrSuper] (=>
		//explicitOperationCall?='(' (memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)? ')')?
		public Group getGroup_1_2() { return cGroup_1_2; }
		
		//=> ({XMemberFeatureCall.memberCallTarget=current} ".")
		public Group getGroup_1_2_0() { return cGroup_1_2_0; }
		
		//{XMemberFeatureCall.memberCallTarget=current} "."
		public Group getGroup_1_2_0_0() { return cGroup_1_2_0_0; }
		
		//{XMemberFeatureCall.memberCallTarget=current}
		public Action getXMemberFeatureCallMemberCallTargetAction_1_2_0_0_0() { return cXMemberFeatureCallMemberCallTargetAction_1_2_0_0_0; }
		
		//"."
		public Keyword getFullStopKeyword_1_2_0_0_1() { return cFullStopKeyword_1_2_0_0_1; }
		
		//feature=[types::JvmIdentifiableElement|IdOrSuper]
		public Assignment getFeatureAssignment_1_2_1() { return cFeatureAssignment_1_2_1; }
		
		//[types::JvmIdentifiableElement|IdOrSuper]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_2_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_2_1_0; }
		
		//IdOrSuper
		public RuleCall getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_2_1_0_1() { return cFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_2_1_0_1; }
		
		//(=> explicitOperationCall?='(' (memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)? ')')?
		public Group getGroup_1_2_2() { return cGroup_1_2_2; }
		
		//=> explicitOperationCall?='('
		public Assignment getExplicitOperationCallAssignment_1_2_2_0() { return cExplicitOperationCallAssignment_1_2_2_0; }
		
		//'('
		public Keyword getExplicitOperationCallLeftParenthesisKeyword_1_2_2_0_0() { return cExplicitOperationCallLeftParenthesisKeyword_1_2_2_0_0; }
		
		//(memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)?
		public Group getGroup_1_2_2_1() { return cGroup_1_2_2_1; }
		
		//memberCallArguments+=XExpression
		public Assignment getMemberCallArgumentsAssignment_1_2_2_1_0() { return cMemberCallArgumentsAssignment_1_2_2_1_0; }
		
		//XExpression
		public RuleCall getMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_0_0() { return cMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_0_0; }
		
		//(',' memberCallArguments+=XExpression)*
		public Group getGroup_1_2_2_1_1() { return cGroup_1_2_2_1_1; }
		
		//','
		public Keyword getCommaKeyword_1_2_2_1_1_0() { return cCommaKeyword_1_2_2_1_1_0; }
		
		//memberCallArguments+=XExpression
		public Assignment getMemberCallArgumentsAssignment_1_2_2_1_1_1() { return cMemberCallArgumentsAssignment_1_2_2_1_1_1; }
		
		//XExpression
		public RuleCall getMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_1_1_0() { return cMemberCallArgumentsXExpressionParserRuleCall_1_2_2_1_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_1_2_2_2() { return cRightParenthesisKeyword_1_2_2_2; }
	}
	public class XForLoopExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XForLoopExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXForLoopExpressionAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Keyword cForKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Assignment cDeclaredParamAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cDeclaredParamFullJvmFormalParameterParserRuleCall_0_0_3_0 = (RuleCall)cDeclaredParamAssignment_0_0_3.eContents().get(0);
		private final Keyword cColonKeyword_0_0_4 = (Keyword)cGroup_0_0.eContents().get(4);
		private final Assignment cForExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cForExpressionXExpressionParserRuleCall_1_0 = (RuleCall)cForExpressionAssignment_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cEachExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cEachExpressionXJStatementOrBlockParserRuleCall_3_0 = (RuleCall)cEachExpressionAssignment_3.eContents().get(0);
		
		//@Override
		//XForLoopExpression XExpression:
		//	=> ({XForLoopExpression}
		//	'for' '(' declaredParam=FullJvmFormalParameter ':') forExpression=XExpression ')'
		//	eachExpression=XJStatementOrBlock;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XForLoopExpression} 'for' '(' declaredParam=FullJvmFormalParameter ':') forExpression=XExpression ')'
		//eachExpression=XJStatementOrBlock
		public Group getGroup() { return cGroup; }
		
		//=> ({XForLoopExpression} 'for' '(' declaredParam=FullJvmFormalParameter ':')
		public Group getGroup_0() { return cGroup_0; }
		
		//{XForLoopExpression} 'for' '(' declaredParam=FullJvmFormalParameter ':'
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XForLoopExpression}
		public Action getXForLoopExpressionAction_0_0_0() { return cXForLoopExpressionAction_0_0_0; }
		
		//'for'
		public Keyword getForKeyword_0_0_1() { return cForKeyword_0_0_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_0_0_2() { return cLeftParenthesisKeyword_0_0_2; }
		
		//declaredParam=FullJvmFormalParameter
		public Assignment getDeclaredParamAssignment_0_0_3() { return cDeclaredParamAssignment_0_0_3; }
		
		//FullJvmFormalParameter
		public RuleCall getDeclaredParamFullJvmFormalParameterParserRuleCall_0_0_3_0() { return cDeclaredParamFullJvmFormalParameterParserRuleCall_0_0_3_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_4() { return cColonKeyword_0_0_4; }
		
		//forExpression=XExpression
		public Assignment getForExpressionAssignment_1() { return cForExpressionAssignment_1; }
		
		//XExpression
		public RuleCall getForExpressionXExpressionParserRuleCall_1_0() { return cForExpressionXExpressionParserRuleCall_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2() { return cRightParenthesisKeyword_2; }
		
		//eachExpression=XJStatementOrBlock
		public Assignment getEachExpressionAssignment_3() { return cEachExpressionAssignment_3; }
		
		//XJStatementOrBlock
		public RuleCall getEachExpressionXJStatementOrBlockParserRuleCall_3_0() { return cEachExpressionXJStatementOrBlockParserRuleCall_3_0; }
	}
	public class XBasicForLoopExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XBasicForLoopExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXBasicForLoopExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cForKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cInitExpressionsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0 = (RuleCall)cInitExpressionsAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cInitExpressionsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0 = (RuleCall)cInitExpressionsAssignment_3_1_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cExpressionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cExpressionXExpressionParserRuleCall_5_0 = (RuleCall)cExpressionAssignment_5.eContents().get(0);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Assignment cUpdateExpressionsAssignment_7_0 = (Assignment)cGroup_7.eContents().get(0);
		private final RuleCall cUpdateExpressionsXExpressionParserRuleCall_7_0_0 = (RuleCall)cUpdateExpressionsAssignment_7_0.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cGroup_7.eContents().get(1);
		private final Keyword cCommaKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Assignment cUpdateExpressionsAssignment_7_1_1 = (Assignment)cGroup_7_1.eContents().get(1);
		private final RuleCall cUpdateExpressionsXExpressionParserRuleCall_7_1_1_0 = (RuleCall)cUpdateExpressionsAssignment_7_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Assignment cEachExpressionAssignment_9 = (Assignment)cGroup.eContents().get(9);
		private final RuleCall cEachExpressionXJStatementOrBlockParserRuleCall_9_0 = (RuleCall)cEachExpressionAssignment_9.eContents().get(0);
		
		//@Override
		//XBasicForLoopExpression XExpression:
		//	{XBasicForLoopExpression}
		//	'for' '(' (initExpressions+=XExpressionOrVarDeclaration (',' initExpressions+=XExpressionOrVarDeclaration)*)? ';'
		//	expression=XExpression? ';' (updateExpressions+=XExpression (',' updateExpressions+=XExpression)*)? ')'
		//	eachExpression=XJStatementOrBlock;
		@Override public ParserRule getRule() { return rule; }
		
		//{XBasicForLoopExpression} 'for' '(' (initExpressions+=XExpressionOrVarDeclaration (','
		//initExpressions+=XExpressionOrVarDeclaration)*)? ';' expression=XExpression? ';' (updateExpressions+=XExpression (','
		//updateExpressions+=XExpression)*)? ')' eachExpression=XJStatementOrBlock
		public Group getGroup() { return cGroup; }
		
		//{XBasicForLoopExpression}
		public Action getXBasicForLoopExpressionAction_0() { return cXBasicForLoopExpressionAction_0; }
		
		//'for'
		public Keyword getForKeyword_1() { return cForKeyword_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
		
		//(initExpressions+=XExpressionOrVarDeclaration (',' initExpressions+=XExpressionOrVarDeclaration)*)?
		public Group getGroup_3() { return cGroup_3; }
		
		//initExpressions+=XExpressionOrVarDeclaration
		public Assignment getInitExpressionsAssignment_3_0() { return cInitExpressionsAssignment_3_0; }
		
		//XExpressionOrVarDeclaration
		public RuleCall getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0() { return cInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0; }
		
		//(',' initExpressions+=XExpressionOrVarDeclaration)*
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//','
		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
		
		//initExpressions+=XExpressionOrVarDeclaration
		public Assignment getInitExpressionsAssignment_3_1_1() { return cInitExpressionsAssignment_3_1_1; }
		
		//XExpressionOrVarDeclaration
		public RuleCall getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0() { return cInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
		
		//expression=XExpression?
		public Assignment getExpressionAssignment_5() { return cExpressionAssignment_5; }
		
		//XExpression
		public RuleCall getExpressionXExpressionParserRuleCall_5_0() { return cExpressionXExpressionParserRuleCall_5_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
		
		//(updateExpressions+=XExpression (',' updateExpressions+=XExpression)*)?
		public Group getGroup_7() { return cGroup_7; }
		
		//updateExpressions+=XExpression
		public Assignment getUpdateExpressionsAssignment_7_0() { return cUpdateExpressionsAssignment_7_0; }
		
		//XExpression
		public RuleCall getUpdateExpressionsXExpressionParserRuleCall_7_0_0() { return cUpdateExpressionsXExpressionParserRuleCall_7_0_0; }
		
		//(',' updateExpressions+=XExpression)*
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//','
		public Keyword getCommaKeyword_7_1_0() { return cCommaKeyword_7_1_0; }
		
		//updateExpressions+=XExpression
		public Assignment getUpdateExpressionsAssignment_7_1_1() { return cUpdateExpressionsAssignment_7_1_1; }
		
		//XExpression
		public RuleCall getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0() { return cUpdateExpressionsXExpressionParserRuleCall_7_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_8() { return cRightParenthesisKeyword_8; }
		
		//eachExpression=XJStatementOrBlock
		public Assignment getEachExpressionAssignment_9() { return cEachExpressionAssignment_9; }
		
		//XJStatementOrBlock
		public RuleCall getEachExpressionXJStatementOrBlockParserRuleCall_9_0() { return cEachExpressionXJStatementOrBlockParserRuleCall_9_0; }
	}
	public class XIfExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XIfExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXIfExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cIfKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cIfAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cIfXExpressionParserRuleCall_3_0 = (RuleCall)cIfAssignment_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cThenAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cThenXJStatementOrBlockParserRuleCall_5_0 = (RuleCall)cThenAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cElseKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cElseAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cElseXJStatementOrBlockParserRuleCall_6_1_0 = (RuleCall)cElseAssignment_6_1.eContents().get(0);
		
		//@Override
		//XIfExpression XExpression:
		//	{XIfExpression}
		//	'if' '(' if=XExpression ')'
		//	then=XJStatementOrBlock (=> 'else' else=XJStatementOrBlock)?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XIfExpression} 'if' '(' if=XExpression ')' then=XJStatementOrBlock (=> 'else' else=XJStatementOrBlock)?
		public Group getGroup() { return cGroup; }
		
		//{XIfExpression}
		public Action getXIfExpressionAction_0() { return cXIfExpressionAction_0; }
		
		//'if'
		public Keyword getIfKeyword_1() { return cIfKeyword_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
		
		//if=XExpression
		public Assignment getIfAssignment_3() { return cIfAssignment_3; }
		
		//XExpression
		public RuleCall getIfXExpressionParserRuleCall_3_0() { return cIfXExpressionParserRuleCall_3_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
		
		//then=XJStatementOrBlock
		public Assignment getThenAssignment_5() { return cThenAssignment_5; }
		
		//XJStatementOrBlock
		public RuleCall getThenXJStatementOrBlockParserRuleCall_5_0() { return cThenXJStatementOrBlockParserRuleCall_5_0; }
		
		//(=> 'else' else=XJStatementOrBlock)?
		public Group getGroup_6() { return cGroup_6; }
		
		//=> 'else'
		public Keyword getElseKeyword_6_0() { return cElseKeyword_6_0; }
		
		//else=XJStatementOrBlock
		public Assignment getElseAssignment_6_1() { return cElseAssignment_6_1; }
		
		//XJStatementOrBlock
		public RuleCall getElseXJStatementOrBlockParserRuleCall_6_1_0() { return cElseXJStatementOrBlockParserRuleCall_6_1_0; }
	}
	public class XWhileExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XWhileExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXWhileExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cWhileKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cPredicateAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cPredicateXExpressionParserRuleCall_3_0 = (RuleCall)cPredicateAssignment_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cBodyAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cBodyXJStatementOrBlockParserRuleCall_5_0 = (RuleCall)cBodyAssignment_5.eContents().get(0);
		
		//@Override
		//XWhileExpression XExpression:
		//	{XWhileExpression}
		//	'while' '(' predicate=XExpression ')'
		//	body=XJStatementOrBlock;
		@Override public ParserRule getRule() { return rule; }
		
		//{XWhileExpression} 'while' '(' predicate=XExpression ')' body=XJStatementOrBlock
		public Group getGroup() { return cGroup; }
		
		//{XWhileExpression}
		public Action getXWhileExpressionAction_0() { return cXWhileExpressionAction_0; }
		
		//'while'
		public Keyword getWhileKeyword_1() { return cWhileKeyword_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
		
		//predicate=XExpression
		public Assignment getPredicateAssignment_3() { return cPredicateAssignment_3; }
		
		//XExpression
		public RuleCall getPredicateXExpressionParserRuleCall_3_0() { return cPredicateXExpressionParserRuleCall_3_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
		
		//body=XJStatementOrBlock
		public Assignment getBodyAssignment_5() { return cBodyAssignment_5; }
		
		//XJStatementOrBlock
		public RuleCall getBodyXJStatementOrBlockParserRuleCall_5_0() { return cBodyXJStatementOrBlockParserRuleCall_5_0; }
	}
	public class XDoWhileExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XDoWhileExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXDoWhileExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cDoKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cBodyAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cBodyXJStatementOrBlockParserRuleCall_2_0 = (RuleCall)cBodyAssignment_2.eContents().get(0);
		private final Keyword cWhileKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cLeftParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cPredicateAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cPredicateXExpressionParserRuleCall_5_0 = (RuleCall)cPredicateAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//@Override
		//XDoWhileExpression XExpression:
		//	{XDoWhileExpression}
		//	'do'
		//	body=XJStatementOrBlock
		//	'while' '(' predicate=XExpression ')';
		@Override public ParserRule getRule() { return rule; }
		
		//{XDoWhileExpression} 'do' body=XJStatementOrBlock 'while' '(' predicate=XExpression ')'
		public Group getGroup() { return cGroup; }
		
		//{XDoWhileExpression}
		public Action getXDoWhileExpressionAction_0() { return cXDoWhileExpressionAction_0; }
		
		//'do'
		public Keyword getDoKeyword_1() { return cDoKeyword_1; }
		
		//body=XJStatementOrBlock
		public Assignment getBodyAssignment_2() { return cBodyAssignment_2; }
		
		//XJStatementOrBlock
		public RuleCall getBodyXJStatementOrBlockParserRuleCall_2_0() { return cBodyXJStatementOrBlockParserRuleCall_2_0; }
		
		//'while'
		public Keyword getWhileKeyword_3() { return cWhileKeyword_3; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4() { return cLeftParenthesisKeyword_4; }
		
		//predicate=XExpression
		public Assignment getPredicateAssignment_5() { return cPredicateAssignment_5; }
		
		//XExpression
		public RuleCall getPredicateXExpressionParserRuleCall_5_0() { return cPredicateXExpressionParserRuleCall_5_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}
	public class XSwitchExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XSwitchExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXSwitchExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cSwitchKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cSwitchAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cSwitchXExpressionParserRuleCall_3_0 = (RuleCall)cSwitchAssignment_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cCasesAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cCasesXCasePartParserRuleCall_6_0 = (RuleCall)cCasesAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cDefaultKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cDefaultAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cDefaultXJSwitchStatementsParserRuleCall_7_2_0 = (RuleCall)cDefaultAssignment_7_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//@Override
		//XSwitchExpression XExpression:
		//	{XSwitchExpression}
		//	'switch' '(' switch=XExpression ')' '{'
		//	cases+=XCasePart* ('default' ':' default=XJSwitchStatements)?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//{XSwitchExpression} 'switch' '(' switch=XExpression ')' '{' cases+=XCasePart* ('default' ':'
		//default=XJSwitchStatements)? '}'
		public Group getGroup() { return cGroup; }
		
		//{XSwitchExpression}
		public Action getXSwitchExpressionAction_0() { return cXSwitchExpressionAction_0; }
		
		//'switch'
		public Keyword getSwitchKeyword_1() { return cSwitchKeyword_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
		
		//switch=XExpression
		public Assignment getSwitchAssignment_3() { return cSwitchAssignment_3; }
		
		//XExpression
		public RuleCall getSwitchXExpressionParserRuleCall_3_0() { return cSwitchXExpressionParserRuleCall_3_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
		
		//cases+=XCasePart*
		public Assignment getCasesAssignment_6() { return cCasesAssignment_6; }
		
		//XCasePart
		public RuleCall getCasesXCasePartParserRuleCall_6_0() { return cCasesXCasePartParserRuleCall_6_0; }
		
		//('default' ':' default=XJSwitchStatements)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'default'
		public Keyword getDefaultKeyword_7_0() { return cDefaultKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//default=XJSwitchStatements
		public Assignment getDefaultAssignment_7_2() { return cDefaultAssignment_7_2; }
		
		//XJSwitchStatements
		public RuleCall getDefaultXJSwitchStatementsParserRuleCall_7_2_0() { return cDefaultXJSwitchStatementsParserRuleCall_7_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
	}
	public class XCasePartElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XCasePart");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXCasePartAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cCaseKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cCaseAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cCaseXExpressionParserRuleCall_2_0 = (RuleCall)cCaseAssignment_2.eContents().get(0);
		private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cThenAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cThenXJSwitchStatementsParserRuleCall_4_0 = (RuleCall)cThenAssignment_4.eContents().get(0);
		
		//@Override
		//XCasePart:
		//	{XCasePart}
		//	'case' case=XExpression
		//	':' then=XJSwitchStatements;
		@Override public ParserRule getRule() { return rule; }
		
		//{XCasePart} 'case' case=XExpression ':' then=XJSwitchStatements
		public Group getGroup() { return cGroup; }
		
		//{XCasePart}
		public Action getXCasePartAction_0() { return cXCasePartAction_0; }
		
		//'case'
		public Keyword getCaseKeyword_1() { return cCaseKeyword_1; }
		
		//case=XExpression
		public Assignment getCaseAssignment_2() { return cCaseAssignment_2; }
		
		//XExpression
		public RuleCall getCaseXExpressionParserRuleCall_2_0() { return cCaseXExpressionParserRuleCall_2_0; }
		
		//':'
		public Keyword getColonKeyword_3() { return cColonKeyword_3; }
		
		//then=XJSwitchStatements
		public Assignment getThenAssignment_4() { return cThenAssignment_4; }
		
		//XJSwitchStatements
		public RuleCall getThenXJSwitchStatementsParserRuleCall_4_0() { return cThenXJSwitchStatementsParserRuleCall_4_0; }
	}
	public class XJSwitchStatementsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJSwitchStatements");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJSwitchStatementsAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cExpressionsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cExpressionsXJStatementOrBlockParserRuleCall_1_0 = (RuleCall)cExpressionsAssignment_1.eContents().get(0);
		
		///**
		// * Java switch's case expression does not require an explicit block { }
		// */ XJSwitchStatements XExpression:
		//	{XJSwitchStatements} expressions+=XJStatementOrBlock*;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJSwitchStatements} expressions+=XJStatementOrBlock*
		public Group getGroup() { return cGroup; }
		
		//{XJSwitchStatements}
		public Action getXJSwitchStatementsAction_0() { return cXJSwitchStatementsAction_0; }
		
		//expressions+=XJStatementOrBlock*
		public Assignment getExpressionsAssignment_1() { return cExpressionsAssignment_1; }
		
		//XJStatementOrBlock
		public RuleCall getExpressionsXJStatementOrBlockParserRuleCall_1_0() { return cExpressionsXJStatementOrBlockParserRuleCall_1_0; }
	}
	public class XJTryWithResourcesStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJTryWithResourcesStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXJTryWithResourcesStatementAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Keyword cTryKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Assignment cOpenParenthesisAssignment_0_0_2 = (Assignment)cGroup_0_0.eContents().get(2);
		private final Keyword cOpenParenthesisLeftParenthesisKeyword_0_0_2_0 = (Keyword)cOpenParenthesisAssignment_0_0_2.eContents().get(0);
		private final Assignment cResourceDeclarationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cResourceDeclarationsXJTryWithResourcesVariableDeclarationParserRuleCall_1_0 = (RuleCall)cResourceDeclarationsAssignment_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cExpressionXBlockExpressionParserRuleCall_3_0 = (RuleCall)cExpressionAssignment_3.eContents().get(0);
		private final Assignment cCatchClausesAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cCatchClausesXCatchClauseParserRuleCall_4_0 = (RuleCall)cCatchClausesAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFinallyKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cFinallyExpressionAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cFinallyExpressionXBlockExpressionParserRuleCall_5_1_0 = (RuleCall)cFinallyExpressionAssignment_5_1.eContents().get(0);
		
		///**
		// * Java 7 try-with-resources
		// */ XJTryWithResourcesStatement XExpression:
		//	=> ({XJTryWithResourcesStatement} 'try' openParenthesis?='(')
		//	resourceDeclarations+=XJTryWithResourcesVariableDeclaration*
		//	')'
		//	expression=XBlockExpression
		//	catchClauses+=XCatchClause* ('finally' finallyExpression=XBlockExpression)?;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJTryWithResourcesStatement} 'try' openParenthesis?='(')
		//resourceDeclarations+=XJTryWithResourcesVariableDeclaration* ')' expression=XBlockExpression
		//catchClauses+=XCatchClause* ('finally' finallyExpression=XBlockExpression)?
		public Group getGroup() { return cGroup; }
		
		//=> ({XJTryWithResourcesStatement} 'try' openParenthesis?='(')
		public Group getGroup_0() { return cGroup_0; }
		
		//{XJTryWithResourcesStatement} 'try' openParenthesis?='('
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJTryWithResourcesStatement}
		public Action getXJTryWithResourcesStatementAction_0_0_0() { return cXJTryWithResourcesStatementAction_0_0_0; }
		
		//'try'
		public Keyword getTryKeyword_0_0_1() { return cTryKeyword_0_0_1; }
		
		//openParenthesis?='('
		public Assignment getOpenParenthesisAssignment_0_0_2() { return cOpenParenthesisAssignment_0_0_2; }
		
		//'('
		public Keyword getOpenParenthesisLeftParenthesisKeyword_0_0_2_0() { return cOpenParenthesisLeftParenthesisKeyword_0_0_2_0; }
		
		//resourceDeclarations+=XJTryWithResourcesVariableDeclaration*
		public Assignment getResourceDeclarationsAssignment_1() { return cResourceDeclarationsAssignment_1; }
		
		//XJTryWithResourcesVariableDeclaration
		public RuleCall getResourceDeclarationsXJTryWithResourcesVariableDeclarationParserRuleCall_1_0() { return cResourceDeclarationsXJTryWithResourcesVariableDeclarationParserRuleCall_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2() { return cRightParenthesisKeyword_2; }
		
		//expression=XBlockExpression
		public Assignment getExpressionAssignment_3() { return cExpressionAssignment_3; }
		
		//XBlockExpression
		public RuleCall getExpressionXBlockExpressionParserRuleCall_3_0() { return cExpressionXBlockExpressionParserRuleCall_3_0; }
		
		//catchClauses+=XCatchClause*
		public Assignment getCatchClausesAssignment_4() { return cCatchClausesAssignment_4; }
		
		//XCatchClause
		public RuleCall getCatchClausesXCatchClauseParserRuleCall_4_0() { return cCatchClausesXCatchClauseParserRuleCall_4_0; }
		
		//('finally' finallyExpression=XBlockExpression)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'finally'
		public Keyword getFinallyKeyword_5_0() { return cFinallyKeyword_5_0; }
		
		//finallyExpression=XBlockExpression
		public Assignment getFinallyExpressionAssignment_5_1() { return cFinallyExpressionAssignment_5_1; }
		
		//XBlockExpression
		public RuleCall getFinallyExpressionXBlockExpressionParserRuleCall_5_1_0() { return cFinallyExpressionXBlockExpressionParserRuleCall_5_1_0; }
	}
	public class XJTryWithResourcesVariableDeclarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJTryWithResourcesVariableDeclaration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJTryWithResourcesVariableDeclarationAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cFinalAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cFinalFinalKeyword_1_0 = (Keyword)cFinalAssignment_1.eContents().get(0);
		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cRightAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cRightXExpressionParserRuleCall_5_0 = (RuleCall)cRightAssignment_5.eContents().get(0);
		private final Assignment cSemicolonAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cSemicolonSemicolonKeyword_6_0 = (Keyword)cSemicolonAssignment_6.eContents().get(0);
		
		///*
		// * The final ; is optional in the last variable declaration in a
		// * try-with-resources
		// */ XJTryWithResourcesVariableDeclaration:
		//	{XJTryWithResourcesVariableDeclaration} final?='final'?
		//	type=JvmTypeReference name=ValidID '=' right=XExpression
		//	semicolon=';'?;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJTryWithResourcesVariableDeclaration} final?='final'? type=JvmTypeReference name=ValidID '=' right=XExpression
		//semicolon=';'?
		public Group getGroup() { return cGroup; }
		
		//{XJTryWithResourcesVariableDeclaration}
		public Action getXJTryWithResourcesVariableDeclarationAction_0() { return cXJTryWithResourcesVariableDeclarationAction_0; }
		
		//final?='final'?
		public Assignment getFinalAssignment_1() { return cFinalAssignment_1; }
		
		//'final'
		public Keyword getFinalFinalKeyword_1_0() { return cFinalFinalKeyword_1_0; }
		
		//type=JvmTypeReference
		public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }
		
		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_0() { return cTypeJvmTypeReferenceParserRuleCall_2_0; }
		
		//name=ValidID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ValidID
		public RuleCall getNameValidIDParserRuleCall_3_0() { return cNameValidIDParserRuleCall_3_0; }
		
		//'='
		public Keyword getEqualsSignKeyword_4() { return cEqualsSignKeyword_4; }
		
		//right=XExpression
		public Assignment getRightAssignment_5() { return cRightAssignment_5; }
		
		//XExpression
		public RuleCall getRightXExpressionParserRuleCall_5_0() { return cRightXExpressionParserRuleCall_5_0; }
		
		//semicolon=';'?
		public Assignment getSemicolonAssignment_6() { return cSemicolonAssignment_6; }
		
		//';'
		public Keyword getSemicolonSemicolonKeyword_6_0() { return cSemicolonSemicolonKeyword_6_0; }
	}
	public class XTryCatchFinallyExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XTryCatchFinallyExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXTryCatchFinallyExpressionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cTryKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionXBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Group cGroup_3_0 = (Group)cAlternatives_3.eContents().get(0);
		private final Assignment cCatchClausesAssignment_3_0_0 = (Assignment)cGroup_3_0.eContents().get(0);
		private final RuleCall cCatchClausesXCatchClauseParserRuleCall_3_0_0_0 = (RuleCall)cCatchClausesAssignment_3_0_0.eContents().get(0);
		private final Group cGroup_3_0_1 = (Group)cGroup_3_0.eContents().get(1);
		private final Keyword cFinallyKeyword_3_0_1_0 = (Keyword)cGroup_3_0_1.eContents().get(0);
		private final Assignment cFinallyExpressionAssignment_3_0_1_1 = (Assignment)cGroup_3_0_1.eContents().get(1);
		private final RuleCall cFinallyExpressionXBlockExpressionParserRuleCall_3_0_1_1_0 = (RuleCall)cFinallyExpressionAssignment_3_0_1_1.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
		private final Keyword cFinallyKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cFinallyExpressionAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cFinallyExpressionXBlockExpressionParserRuleCall_3_1_1_0 = (RuleCall)cFinallyExpressionAssignment_3_1_1.eContents().get(0);
		
		//@Override
		//XTryCatchFinallyExpression XExpression:
		//	{XTryCatchFinallyExpression}
		//	'try'
		//	expression=XBlockExpression (catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XBlockExpression)?
		//	| 'finally' finallyExpression=XBlockExpression);
		@Override public ParserRule getRule() { return rule; }
		
		//{XTryCatchFinallyExpression} 'try' expression=XBlockExpression (catchClauses+=XCatchClause+ (=> 'finally'
		//finallyExpression=XBlockExpression)? | 'finally' finallyExpression=XBlockExpression)
		public Group getGroup() { return cGroup; }
		
		//{XTryCatchFinallyExpression}
		public Action getXTryCatchFinallyExpressionAction_0() { return cXTryCatchFinallyExpressionAction_0; }
		
		//'try'
		public Keyword getTryKeyword_1() { return cTryKeyword_1; }
		
		//expression=XBlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }
		
		//XBlockExpression
		public RuleCall getExpressionXBlockExpressionParserRuleCall_2_0() { return cExpressionXBlockExpressionParserRuleCall_2_0; }
		
		//catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XBlockExpression)? | 'finally'
		//finallyExpression=XBlockExpression
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XBlockExpression)?
		public Group getGroup_3_0() { return cGroup_3_0; }
		
		//catchClauses+=XCatchClause+
		public Assignment getCatchClausesAssignment_3_0_0() { return cCatchClausesAssignment_3_0_0; }
		
		//XCatchClause
		public RuleCall getCatchClausesXCatchClauseParserRuleCall_3_0_0_0() { return cCatchClausesXCatchClauseParserRuleCall_3_0_0_0; }
		
		//(=> 'finally' finallyExpression=XBlockExpression)?
		public Group getGroup_3_0_1() { return cGroup_3_0_1; }
		
		//=> 'finally'
		public Keyword getFinallyKeyword_3_0_1_0() { return cFinallyKeyword_3_0_1_0; }
		
		//finallyExpression=XBlockExpression
		public Assignment getFinallyExpressionAssignment_3_0_1_1() { return cFinallyExpressionAssignment_3_0_1_1; }
		
		//XBlockExpression
		public RuleCall getFinallyExpressionXBlockExpressionParserRuleCall_3_0_1_1_0() { return cFinallyExpressionXBlockExpressionParserRuleCall_3_0_1_1_0; }
		
		//'finally' finallyExpression=XBlockExpression
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'finally'
		public Keyword getFinallyKeyword_3_1_0() { return cFinallyKeyword_3_1_0; }
		
		//finallyExpression=XBlockExpression
		public Assignment getFinallyExpressionAssignment_3_1_1() { return cFinallyExpressionAssignment_3_1_1; }
		
		//XBlockExpression
		public RuleCall getFinallyExpressionXBlockExpressionParserRuleCall_3_1_1_0() { return cFinallyExpressionXBlockExpressionParserRuleCall_3_1_1_0; }
	}
	public class XCatchClauseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XCatchClause");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXCatchClauseAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cCatchKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cDeclaredParamAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cDeclaredParamFullJvmFormalParameterParserRuleCall_3_0 = (RuleCall)cDeclaredParamAssignment_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cExpressionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cExpressionXBlockExpressionParserRuleCall_5_0 = (RuleCall)cExpressionAssignment_5.eContents().get(0);
		
		//@Override
		//XCatchClause:
		//	{XCatchClause} => 'catch' '(' declaredParam=FullJvmFormalParameter ')' expression=XBlockExpression;
		@Override public ParserRule getRule() { return rule; }
		
		//{XCatchClause} => 'catch' '(' declaredParam=FullJvmFormalParameter ')' expression=XBlockExpression
		public Group getGroup() { return cGroup; }
		
		//{XCatchClause}
		public Action getXCatchClauseAction_0() { return cXCatchClauseAction_0; }
		
		//=> 'catch'
		public Keyword getCatchKeyword_1() { return cCatchKeyword_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
		
		//declaredParam=FullJvmFormalParameter
		public Assignment getDeclaredParamAssignment_3() { return cDeclaredParamAssignment_3; }
		
		//FullJvmFormalParameter
		public RuleCall getDeclaredParamFullJvmFormalParameterParserRuleCall_3_0() { return cDeclaredParamFullJvmFormalParameterParserRuleCall_3_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
		
		//expression=XBlockExpression
		public Assignment getExpressionAssignment_5() { return cExpressionAssignment_5; }
		
		//XBlockExpression
		public RuleCall getExpressionXBlockExpressionParserRuleCall_5_0() { return cExpressionXBlockExpressionParserRuleCall_5_0; }
	}
	public class XSynchronizedExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XSynchronizedExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Action cXSynchronizedExpressionAction_0_0_0 = (Action)cGroup_0_0.eContents().get(0);
		private final Keyword cSynchronizedKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Assignment cParamAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cParamXExpressionParserRuleCall_1_0 = (RuleCall)cParamAssignment_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cExpressionXBlockExpressionParserRuleCall_3_0 = (RuleCall)cExpressionAssignment_3.eContents().get(0);
		
		//@Override
		//XSynchronizedExpression XExpression:
		//	=> ({XSynchronizedExpression}
		//	'synchronized' '(') param=XExpression ')' expression=XBlockExpression;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XSynchronizedExpression} 'synchronized' '(') param=XExpression ')' expression=XBlockExpression
		public Group getGroup() { return cGroup; }
		
		//=> ({XSynchronizedExpression} 'synchronized' '(')
		public Group getGroup_0() { return cGroup_0; }
		
		//{XSynchronizedExpression} 'synchronized' '('
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XSynchronizedExpression}
		public Action getXSynchronizedExpressionAction_0_0_0() { return cXSynchronizedExpressionAction_0_0_0; }
		
		//'synchronized'
		public Keyword getSynchronizedKeyword_0_0_1() { return cSynchronizedKeyword_0_0_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_0_0_2() { return cLeftParenthesisKeyword_0_0_2; }
		
		//param=XExpression
		public Assignment getParamAssignment_1() { return cParamAssignment_1; }
		
		//XExpression
		public RuleCall getParamXExpressionParserRuleCall_1_0() { return cParamXExpressionParserRuleCall_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2() { return cRightParenthesisKeyword_2; }
		
		//expression=XBlockExpression
		public Assignment getExpressionAssignment_3() { return cExpressionAssignment_3; }
		
		//XBlockExpression
		public RuleCall getExpressionXBlockExpressionParserRuleCall_3_0() { return cExpressionXBlockExpressionParserRuleCall_3_0; }
	}
	public class XPrimaryExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XPrimaryExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cXJArrayConstructorCallParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cXConstructorCallParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cXJFeatureCallWithArrayAccessParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cXLiteralParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cXParenthesizedExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//@Override
		//XPrimaryExpression XExpression:
		//	XJArrayConstructorCall | XConstructorCall | XJFeatureCallWithArrayAccess | XLiteral | XParenthesizedExpression;
		@Override public ParserRule getRule() { return rule; }
		
		//XJArrayConstructorCall | XConstructorCall | XJFeatureCallWithArrayAccess | XLiteral | XParenthesizedExpression
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//XJArrayConstructorCall
		public RuleCall getXJArrayConstructorCallParserRuleCall_0() { return cXJArrayConstructorCallParserRuleCall_0; }
		
		//XConstructorCall
		public RuleCall getXConstructorCallParserRuleCall_1() { return cXConstructorCallParserRuleCall_1; }
		
		////	XBlockExpression |
		////	XSwitchExpression |
		////	XSynchronizedExpression |
		//XJFeatureCallWithArrayAccess
		public RuleCall getXJFeatureCallWithArrayAccessParserRuleCall_2() { return cXJFeatureCallWithArrayAccessParserRuleCall_2; }
		
		//XLiteral
		public RuleCall getXLiteralParserRuleCall_3() { return cXLiteralParserRuleCall_3; }
		
		////	XIfExpression |
		////	XForLoopExpression |
		////	XBasicForLoopExpression |
		////	XWhileExpression |
		////	XDoWhileExpression |
		////	XThrowExpression |
		////	XReturnExpression |
		////	XTryCatchFinallyExpression |
		//XParenthesizedExpression
		public RuleCall getXParenthesizedExpressionParserRuleCall_4() { return cXParenthesizedExpressionParserRuleCall_4; }
	}
	public class XLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XLiteral");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cXBooleanLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cXNumberLiteralParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cXNullLiteralParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cXCharLiteralParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cXStringLiteralParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cXJArrayLiteralParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		
		//@Override
		//XLiteral XExpression:
		//	XBooleanLiteral | XNumberLiteral | XNullLiteral | XCharLiteral | XStringLiteral | XJArrayLiteral
		//	//	XTypeLiteral
		//;
		@Override public ParserRule getRule() { return rule; }
		
		////	XCollectionLiteral |
		////	XClosure |
		//XBooleanLiteral | XNumberLiteral | XNullLiteral | XCharLiteral | XStringLiteral | XJArrayLiteral
		public Alternatives getAlternatives() { return cAlternatives; }
		
		////	XCollectionLiteral |
		////	XClosure |
		//XBooleanLiteral
		public RuleCall getXBooleanLiteralParserRuleCall_0() { return cXBooleanLiteralParserRuleCall_0; }
		
		//XNumberLiteral
		public RuleCall getXNumberLiteralParserRuleCall_1() { return cXNumberLiteralParserRuleCall_1; }
		
		//XNullLiteral
		public RuleCall getXNullLiteralParserRuleCall_2() { return cXNullLiteralParserRuleCall_2; }
		
		//XCharLiteral
		public RuleCall getXCharLiteralParserRuleCall_3() { return cXCharLiteralParserRuleCall_3; }
		
		//XStringLiteral
		public RuleCall getXStringLiteralParserRuleCall_4() { return cXStringLiteralParserRuleCall_4; }
		
		//XJArrayLiteral
		public RuleCall getXJArrayLiteralParserRuleCall_5() { return cXJArrayLiteralParserRuleCall_5; }
	}
	public class XJArrayLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XJArrayLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJArrayLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cElementsAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cElementsXExpressionParserRuleCall_2_0_0 = (RuleCall)cElementsAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cElementsAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cElementsXExpressionParserRuleCall_2_1_1_0 = (RuleCall)cElementsAssignment_2_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//// it is a subclass of XListLiteral, so that we will reuse
		//// type computation and compiler from Xbase
		//XJArrayLiteral:
		//	{XJArrayLiteral} '{' (elements+=XExpression (',' elements+=XExpression)*)? '}';
		@Override public ParserRule getRule() { return rule; }
		
		//{XJArrayLiteral} '{' (elements+=XExpression (',' elements+=XExpression)*)? '}'
		public Group getGroup() { return cGroup; }
		
		//{XJArrayLiteral}
		public Action getXJArrayLiteralAction_0() { return cXJArrayLiteralAction_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
		
		//(elements+=XExpression (',' elements+=XExpression)*)?
		public Group getGroup_2() { return cGroup_2; }
		
		//elements+=XExpression
		public Assignment getElementsAssignment_2_0() { return cElementsAssignment_2_0; }
		
		//XExpression
		public RuleCall getElementsXExpressionParserRuleCall_2_0_0() { return cElementsXExpressionParserRuleCall_2_0_0; }
		
		//(',' elements+=XExpression)*
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_1_0() { return cCommaKeyword_2_1_0; }
		
		//elements+=XExpression
		public Assignment getElementsAssignment_2_1_1() { return cElementsAssignment_2_1_1; }
		
		//XExpression
		public RuleCall getElementsXExpressionParserRuleCall_2_1_1_0() { return cElementsXExpressionParserRuleCall_2_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
	}
	public class XCharLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XCharLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXJCharLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueCHARACTERTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		///*
		// * We want to tell between string and char literals since we'll treat them
		// * differently from the type computation point of view.
		// */ XCharLiteral XExpression:
		//	{XJCharLiteral} value=CHARACTER;
		@Override public ParserRule getRule() { return rule; }
		
		//{XJCharLiteral} value=CHARACTER
		public Group getGroup() { return cGroup; }
		
		//{XJCharLiteral}
		public Action getXJCharLiteralAction_0() { return cXJCharLiteralAction_0; }
		
		//value=CHARACTER
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }
		
		//CHARACTER
		public RuleCall getValueCHARACTERTerminalRuleCall_1_0() { return cValueCHARACTERTerminalRuleCall_1_0; }
	}
	public class XStringLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XStringLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXStringLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueSTRINGTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//@Override
		//XStringLiteral XExpression:
		//	{XStringLiteral} value=STRING;
		@Override public ParserRule getRule() { return rule; }
		
		//{XStringLiteral} value=STRING
		public Group getGroup() { return cGroup; }
		
		//{XStringLiteral}
		public Action getXStringLiteralAction_0() { return cXStringLiteralAction_0; }
		
		//value=STRING
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }
		
		//STRING
		public RuleCall getValueSTRINGTerminalRuleCall_1_0() { return cValueSTRINGTerminalRuleCall_1_0; }
	}
	public class OpEqualityElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpEquality");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cEqualsSignEqualsSignKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cExclamationMarkEqualsSignKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//@Override
		//OpEquality:
		//	'==' | '!=';
		@Override public ParserRule getRule() { return rule; }
		
		//'==' | '!='
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'=='
		public Keyword getEqualsSignEqualsSignKeyword_0() { return cEqualsSignEqualsSignKeyword_0; }
		
		//'!='
		public Keyword getExclamationMarkEqualsSignKeyword_1() { return cExclamationMarkEqualsSignKeyword_1; }
	}
	public class OpMultiElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpMulti");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cAsteriskKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cSolidusKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cPercentSignKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		
		//@Override
		//OpMulti:
		//	'*' | '/' | '%';
		@Override public ParserRule getRule() { return rule; }
		
		//'*' | '/' | '%'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'*'
		public Keyword getAsteriskKeyword_0() { return cAsteriskKeyword_0; }
		
		//'/'
		public Keyword getSolidusKeyword_1() { return cSolidusKeyword_1; }
		
		//'%'
		public Keyword getPercentSignKeyword_2() { return cPercentSignKeyword_2; }
	}
	public class OpOtherElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpOther");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Alternatives cAlternatives_0_1 = (Alternatives)cGroup_0.eContents().get(1);
		private final Group cGroup_0_1_0 = (Group)cAlternatives_0_1.eContents().get(0);
		private final Group cGroup_0_1_0_0 = (Group)cGroup_0_1_0.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_0_1_0_0_0 = (Keyword)cGroup_0_1_0_0.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_0_1_0_0_1 = (Keyword)cGroup_0_1_0_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_0_1_1 = (Keyword)cAlternatives_0_1.eContents().get(1);
		private final Keyword cLessThanSignLessThanSignKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//@Override
		//OpOther:
		//	'>' (=> ('>' '>') | '>') | '<<';
		@Override public ParserRule getRule() { return rule; }
		
		//'>' (=> ('>' '>') | '>') | '<<'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'>' (=> ('>' '>') | '>')
		public Group getGroup_0() { return cGroup_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_0() { return cGreaterThanSignKeyword_0_0; }
		
		//=> ('>' '>') | '>'
		public Alternatives getAlternatives_0_1() { return cAlternatives_0_1; }
		
		//=> ('>' '>')
		public Group getGroup_0_1_0() { return cGroup_0_1_0; }
		
		//'>' '>'
		public Group getGroup_0_1_0_0() { return cGroup_0_1_0_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_1_0_0_0() { return cGreaterThanSignKeyword_0_1_0_0_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_1_0_0_1() { return cGreaterThanSignKeyword_0_1_0_0_1; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_1_1() { return cGreaterThanSignKeyword_0_1_1; }
		
		//'<<'
		public Keyword getLessThanSignLessThanSignKeyword_1() { return cLessThanSignLessThanSignKeyword_1; }
	}
	public class XAndExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XAndExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXBitwiseInclusiveOrExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cRightOperandXBitwiseInclusiveOrExpressionParserRuleCall_1_1_0 = (RuleCall)cRightOperandAssignment_1_1.eContents().get(0);
		
		//@Override
		//XAndExpression XExpression:
		//	XBitwiseInclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current}
		//	feature=[types::JvmIdentifiableElement|OpAnd]) rightOperand=XBitwiseInclusiveOrExpression)*;
		@Override public ParserRule getRule() { return rule; }
		
		//XBitwiseInclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
		//rightOperand=XBitwiseInclusiveOrExpression)*
		public Group getGroup() { return cGroup; }
		
		//XBitwiseInclusiveOrExpression
		public RuleCall getXBitwiseInclusiveOrExpressionParserRuleCall_0() { return cXBitwiseInclusiveOrExpressionParserRuleCall_0; }
		
		//(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
		//rightOperand=XBitwiseInclusiveOrExpression)*
		public Group getGroup_1() { return cGroup_1; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd]
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_1_0_0_0() { return cXBinaryOperationLeftOperandAction_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpAnd]
		public Assignment getFeatureAssignment_1_0_0_1() { return cFeatureAssignment_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpAnd]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0; }
		
		//OpAnd
		public RuleCall getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1; }
		
		//rightOperand=XBitwiseInclusiveOrExpression
		public Assignment getRightOperandAssignment_1_1() { return cRightOperandAssignment_1_1; }
		
		//XBitwiseInclusiveOrExpression
		public RuleCall getRightOperandXBitwiseInclusiveOrExpressionParserRuleCall_1_1_0() { return cRightOperandXBitwiseInclusiveOrExpressionParserRuleCall_1_1_0; }
	}
	public class XBitwiseInclusiveOrExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XBitwiseInclusiveOrExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXBitwiseExclusiveOrExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpInclusiveOrParserRuleCall_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cRightOperandXBitwiseExclusiveOrExpressionParserRuleCall_1_1_0 = (RuleCall)cRightOperandAssignment_1_1.eContents().get(0);
		
		//XBitwiseInclusiveOrExpression XExpression:
		//	XBitwiseExclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current}
		//	feature=[types::JvmIdentifiableElement|OpInclusiveOr]) rightOperand=XBitwiseExclusiveOrExpression)*;
		@Override public ParserRule getRule() { return rule; }
		
		//XBitwiseExclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current}
		//feature=[types::JvmIdentifiableElement|OpInclusiveOr]) rightOperand=XBitwiseExclusiveOrExpression)*
		public Group getGroup() { return cGroup; }
		
		//XBitwiseExclusiveOrExpression
		public RuleCall getXBitwiseExclusiveOrExpressionParserRuleCall_0() { return cXBitwiseExclusiveOrExpressionParserRuleCall_0; }
		
		//(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpInclusiveOr])
		//rightOperand=XBitwiseExclusiveOrExpression)*
		public Group getGroup_1() { return cGroup_1; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpInclusiveOr])
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpInclusiveOr]
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_1_0_0_0() { return cXBinaryOperationLeftOperandAction_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpInclusiveOr]
		public Assignment getFeatureAssignment_1_0_0_1() { return cFeatureAssignment_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpInclusiveOr]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0; }
		
		//OpInclusiveOr
		public RuleCall getFeatureJvmIdentifiableElementOpInclusiveOrParserRuleCall_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpInclusiveOrParserRuleCall_1_0_0_1_0_1; }
		
		//rightOperand=XBitwiseExclusiveOrExpression
		public Assignment getRightOperandAssignment_1_1() { return cRightOperandAssignment_1_1; }
		
		//XBitwiseExclusiveOrExpression
		public RuleCall getRightOperandXBitwiseExclusiveOrExpressionParserRuleCall_1_1_0() { return cRightOperandXBitwiseExclusiveOrExpressionParserRuleCall_1_1_0; }
	}
	public class OpInclusiveOrElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpInclusiveOr");
		private final Keyword cVerticalLineKeyword = (Keyword)rule.eContents().get(1);
		
		//OpInclusiveOr:
		//	'|';
		@Override public ParserRule getRule() { return rule; }
		
		//'|'
		public Keyword getVerticalLineKeyword() { return cVerticalLineKeyword; }
	}
	public class XBitwiseExclusiveOrExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XBitwiseExclusiveOrExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXBitwiseAndExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpExclusiveOrParserRuleCall_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cRightOperandXBitwiseAndExpressionParserRuleCall_1_1_0 = (RuleCall)cRightOperandAssignment_1_1.eContents().get(0);
		
		//XBitwiseExclusiveOrExpression XExpression:
		//	XBitwiseAndExpression (=> ({XBinaryOperation.leftOperand=current}
		//	feature=[types::JvmIdentifiableElement|OpExclusiveOr]) rightOperand=XBitwiseAndExpression)*;
		@Override public ParserRule getRule() { return rule; }
		
		//XBitwiseAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpExclusiveOr])
		//rightOperand=XBitwiseAndExpression)*
		public Group getGroup() { return cGroup; }
		
		//XBitwiseAndExpression
		public RuleCall getXBitwiseAndExpressionParserRuleCall_0() { return cXBitwiseAndExpressionParserRuleCall_0; }
		
		//(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpExclusiveOr])
		//rightOperand=XBitwiseAndExpression)*
		public Group getGroup_1() { return cGroup_1; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpExclusiveOr])
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpExclusiveOr]
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_1_0_0_0() { return cXBinaryOperationLeftOperandAction_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpExclusiveOr]
		public Assignment getFeatureAssignment_1_0_0_1() { return cFeatureAssignment_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpExclusiveOr]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0; }
		
		//OpExclusiveOr
		public RuleCall getFeatureJvmIdentifiableElementOpExclusiveOrParserRuleCall_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpExclusiveOrParserRuleCall_1_0_0_1_0_1; }
		
		//rightOperand=XBitwiseAndExpression
		public Assignment getRightOperandAssignment_1_1() { return cRightOperandAssignment_1_1; }
		
		//XBitwiseAndExpression
		public RuleCall getRightOperandXBitwiseAndExpressionParserRuleCall_1_1_0() { return cRightOperandXBitwiseAndExpressionParserRuleCall_1_1_0; }
	}
	public class OpExclusiveOrElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpExclusiveOr");
		private final Keyword cCircumflexAccentKeyword = (Keyword)rule.eContents().get(1);
		
		//OpExclusiveOr:
		//	'^';
		@Override public ParserRule getRule() { return rule; }
		
		//'^'
		public Keyword getCircumflexAccentKeyword() { return cCircumflexAccentKeyword; }
	}
	public class XBitwiseAndExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XBitwiseAndExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXEqualityExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_1 = (Assignment)cGroup_1_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpBitwiseAndParserRuleCall_1_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cRightOperandXEqualityExpressionParserRuleCall_1_1_0 = (RuleCall)cRightOperandAssignment_1_1.eContents().get(0);
		
		//XBitwiseAndExpression XExpression:
		//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd])
		//	rightOperand=XEqualityExpression)*;
		@Override public ParserRule getRule() { return rule; }
		
		//XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd])
		//rightOperand=XEqualityExpression)*
		public Group getGroup() { return cGroup; }
		
		//XEqualityExpression
		public RuleCall getXEqualityExpressionParserRuleCall_0() { return cXEqualityExpressionParserRuleCall_0; }
		
		//(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd])
		//rightOperand=XEqualityExpression)*
		public Group getGroup_1() { return cGroup_1; }
		
		//=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd])
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//{XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd]
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//{XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_1_0_0_0() { return cXBinaryOperationLeftOperandAction_1_0_0_0; }
		
		//feature=[types::JvmIdentifiableElement|OpBitwiseAnd]
		public Assignment getFeatureAssignment_1_0_0_1() { return cFeatureAssignment_1_0_0_1; }
		
		//[types::JvmIdentifiableElement|OpBitwiseAnd]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0; }
		
		//OpBitwiseAnd
		public RuleCall getFeatureJvmIdentifiableElementOpBitwiseAndParserRuleCall_1_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpBitwiseAndParserRuleCall_1_0_0_1_0_1; }
		
		//rightOperand=XEqualityExpression
		public Assignment getRightOperandAssignment_1_1() { return cRightOperandAssignment_1_1; }
		
		//XEqualityExpression
		public RuleCall getRightOperandXEqualityExpressionParserRuleCall_1_1_0() { return cRightOperandXEqualityExpressionParserRuleCall_1_1_0; }
	}
	public class OpBitwiseAndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpBitwiseAnd");
		private final Keyword cAmpersandKeyword = (Keyword)rule.eContents().get(1);
		
		//OpBitwiseAnd:
		//	'&';
		@Override public ParserRule getRule() { return rule; }
		
		//'&'
		public Keyword getAmpersandKeyword() { return cAmpersandKeyword; }
	}
	public class OpUnaryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.OpUnary");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cExclamationMarkKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cHyphenMinusKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cPlusSignKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cTildeKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		
		//@Override
		//OpUnary:
		//	"!" | "-" | "+" | "~";
		@Override public ParserRule getRule() { return rule; }
		
		//"!" | "-" | "+" | "~"
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//"!"
		public Keyword getExclamationMarkKeyword_0() { return cExclamationMarkKeyword_0; }
		
		//"-"
		public Keyword getHyphenMinusKeyword_1() { return cHyphenMinusKeyword_1; }
		
		//"+"
		public Keyword getPlusSignKeyword_2() { return cPlusSignKeyword_2; }
		
		//"~"
		public Keyword getTildeKeyword_3() { return cTildeKeyword_3; }
	}
	public class XAnnotationElementValueOrCommaListElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XAnnotationElementValueOrCommaList");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Group cGroup_0_0_0 = (Group)cGroup_0_0.eContents().get(0);
		private final Action cXJArrayLiteralAction_0_0_0_0 = (Action)cGroup_0_0_0.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_0_0_0_1 = (Keyword)cGroup_0_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cGroup_0.eContents().get(1);
		private final Assignment cElementsAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final RuleCall cElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0 = (RuleCall)cElementsAssignment_0_1_0.eContents().get(0);
		private final Group cGroup_0_1_1 = (Group)cGroup_0_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_1_1_0 = (Keyword)cGroup_0_1_1.eContents().get(0);
		private final Assignment cElementsAssignment_0_1_1_1 = (Assignment)cGroup_0_1_1.eContents().get(1);
		private final RuleCall cElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0 = (RuleCall)cElementsAssignment_0_1_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final RuleCall cXAnnotationOrExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//@Override
		//XAnnotationElementValueOrCommaList XExpression:
		//	=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
		//	| XAnnotationOrExpression // in Java multiple values must be specified with an array literal
		//	// ({XListLiteral.elements+=current} (',' elements+=XAnnotationOrExpression )+)?
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}' |
		//XAnnotationOrExpression
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
		public Group getGroup_0() { return cGroup_0; }
		
		//=> ({XJArrayLiteral} '{')
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJArrayLiteral} '{'
		public Group getGroup_0_0_0() { return cGroup_0_0_0; }
		
		//{XJArrayLiteral}
		public Action getXJArrayLiteralAction_0_0_0_0() { return cXJArrayLiteralAction_0_0_0_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_0_0_0_1() { return cLeftCurlyBracketKeyword_0_0_0_1; }
		
		//(elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)?
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//elements+=XAnnotationOrExpression
		public Assignment getElementsAssignment_0_1_0() { return cElementsAssignment_0_1_0; }
		
		//XAnnotationOrExpression
		public RuleCall getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0() { return cElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0; }
		
		//(',' elements+=XAnnotationOrExpression)*
		public Group getGroup_0_1_1() { return cGroup_0_1_1; }
		
		//','
		public Keyword getCommaKeyword_0_1_1_0() { return cCommaKeyword_0_1_1_0; }
		
		//elements+=XAnnotationOrExpression
		public Assignment getElementsAssignment_0_1_1_1() { return cElementsAssignment_0_1_1_1; }
		
		//XAnnotationOrExpression
		public RuleCall getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0() { return cElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_0_2() { return cRightCurlyBracketKeyword_0_2; }
		
		//XAnnotationOrExpression
		public RuleCall getXAnnotationOrExpressionParserRuleCall_1() { return cXAnnotationOrExpressionParserRuleCall_1; }
	}
	public class XAnnotationElementValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.XAnnotationElementValue");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Group cGroup_0_0_0 = (Group)cGroup_0_0.eContents().get(0);
		private final Action cXJArrayLiteralAction_0_0_0_0 = (Action)cGroup_0_0_0.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_0_0_0_1 = (Keyword)cGroup_0_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cGroup_0.eContents().get(1);
		private final Assignment cElementsAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final RuleCall cElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0 = (RuleCall)cElementsAssignment_0_1_0.eContents().get(0);
		private final Group cGroup_0_1_1 = (Group)cGroup_0_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_1_1_0 = (Keyword)cGroup_0_1_1.eContents().get(0);
		private final Assignment cElementsAssignment_0_1_1_1 = (Assignment)cGroup_0_1_1.eContents().get(1);
		private final RuleCall cElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0 = (RuleCall)cElementsAssignment_0_1_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final RuleCall cXAnnotationOrExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//@Override
		//XAnnotationElementValue XExpression:
		//	=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
		//	| XAnnotationOrExpression;
		@Override public ParserRule getRule() { return rule; }
		
		//=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}' |
		//XAnnotationOrExpression
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
		public Group getGroup_0() { return cGroup_0; }
		
		//=> ({XJArrayLiteral} '{')
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//{XJArrayLiteral} '{'
		public Group getGroup_0_0_0() { return cGroup_0_0_0; }
		
		//{XJArrayLiteral}
		public Action getXJArrayLiteralAction_0_0_0_0() { return cXJArrayLiteralAction_0_0_0_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_0_0_0_1() { return cLeftCurlyBracketKeyword_0_0_0_1; }
		
		//(elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)?
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//elements+=XAnnotationOrExpression
		public Assignment getElementsAssignment_0_1_0() { return cElementsAssignment_0_1_0; }
		
		//XAnnotationOrExpression
		public RuleCall getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0() { return cElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0; }
		
		//(',' elements+=XAnnotationOrExpression)*
		public Group getGroup_0_1_1() { return cGroup_0_1_1; }
		
		//','
		public Keyword getCommaKeyword_0_1_1_0() { return cCommaKeyword_0_1_1_0; }
		
		//elements+=XAnnotationOrExpression
		public Assignment getElementsAssignment_0_1_1_1() { return cElementsAssignment_0_1_1_1; }
		
		//XAnnotationOrExpression
		public RuleCall getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0() { return cElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_0_2() { return cRightCurlyBracketKeyword_0_2; }
		
		//XAnnotationOrExpression
		public RuleCall getXAnnotationOrExpressionParserRuleCall_1() { return cXAnnotationOrExpressionParserRuleCall_1; }
	}
	
	
	private final XJStatementOrBlockElements pXJStatementOrBlock;
	private final XImportDeclarationElements pXImportDeclaration;
	private final JvmTypeReferenceElements pJvmTypeReference;
	private final FullJvmFormalParameterElements pFullJvmFormalParameter;
	private final XJSingleStatementElements pXJSingleStatement;
	private final XJSemicolonStatementElements pXJSemicolonStatement;
	private final XJEmptyStatementElements pXJEmptyStatement;
	private final XJBranchingStatementElements pXJBranchingStatement;
	private final XBlockExpressionElements pXBlockExpression;
	private final XVariableDeclarationElements pXVariableDeclaration;
	private final XJAdditionalXVariableDeclarationElements pXJAdditionalXVariableDeclaration;
	private final XAssignmentElements pXAssignment;
	private final OpMultiAssignElements pOpMultiAssign;
	private final XJFeatureCallWithArrayAccessElements pXJFeatureCallWithArrayAccess;
	private final XFeatureCallElements pXFeatureCall;
	private final XConstructorCallElements pXConstructorCall;
	private final XJArrayConstructorCallElements pXJArrayConstructorCall;
	private final XJArrayDimensionElements pXJArrayDimension;
	private final XCastedExpressionElements pXCastedExpression;
	private final XPostfixOperationElements pXPostfixOperation;
	private final XMemberFeatureCallElements pXMemberFeatureCall;
	private final XForLoopExpressionElements pXForLoopExpression;
	private final XBasicForLoopExpressionElements pXBasicForLoopExpression;
	private final XIfExpressionElements pXIfExpression;
	private final XWhileExpressionElements pXWhileExpression;
	private final XDoWhileExpressionElements pXDoWhileExpression;
	private final XSwitchExpressionElements pXSwitchExpression;
	private final XCasePartElements pXCasePart;
	private final XJSwitchStatementsElements pXJSwitchStatements;
	private final XJTryWithResourcesStatementElements pXJTryWithResourcesStatement;
	private final XJTryWithResourcesVariableDeclarationElements pXJTryWithResourcesVariableDeclaration;
	private final XTryCatchFinallyExpressionElements pXTryCatchFinallyExpression;
	private final XCatchClauseElements pXCatchClause;
	private final XSynchronizedExpressionElements pXSynchronizedExpression;
	private final XPrimaryExpressionElements pXPrimaryExpression;
	private final XLiteralElements pXLiteral;
	private final XJArrayLiteralElements pXJArrayLiteral;
	private final XCharLiteralElements pXCharLiteral;
	private final XStringLiteralElements pXStringLiteral;
	private final TerminalRule tSTRING;
	private final TerminalRule tCHARACTER;
	private final OpEqualityElements pOpEquality;
	private final OpMultiElements pOpMulti;
	private final OpOtherElements pOpOther;
	private final XAndExpressionElements pXAndExpression;
	private final XBitwiseInclusiveOrExpressionElements pXBitwiseInclusiveOrExpression;
	private final OpInclusiveOrElements pOpInclusiveOr;
	private final XBitwiseExclusiveOrExpressionElements pXBitwiseExclusiveOrExpression;
	private final OpExclusiveOrElements pOpExclusiveOr;
	private final XBitwiseAndExpressionElements pXBitwiseAndExpression;
	private final OpBitwiseAndElements pOpBitwiseAnd;
	private final OpUnaryElements pOpUnary;
	private final XAnnotationElementValueOrCommaListElements pXAnnotationElementValueOrCommaList;
	private final XAnnotationElementValueElements pXAnnotationElementValue;
	
	private final Grammar grammar;
	
	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
	
	private final XbaseGrammarAccess gaXbase;
	
	private final XtypeGrammarAccess gaXtype;

	@Inject
	public JbaseGrammarAccess(GrammarProvider grammarProvider,
			XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations,
			XbaseGrammarAccess gaXbase,
			XtypeGrammarAccess gaXtype) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
		this.gaXbase = gaXbase;
		this.gaXtype = gaXtype;
		this.pXJStatementOrBlock = new XJStatementOrBlockElements();
		this.pXImportDeclaration = new XImportDeclarationElements();
		this.pJvmTypeReference = new JvmTypeReferenceElements();
		this.pFullJvmFormalParameter = new FullJvmFormalParameterElements();
		this.pXJSingleStatement = new XJSingleStatementElements();
		this.pXJSemicolonStatement = new XJSemicolonStatementElements();
		this.pXJEmptyStatement = new XJEmptyStatementElements();
		this.pXJBranchingStatement = new XJBranchingStatementElements();
		this.pXBlockExpression = new XBlockExpressionElements();
		this.pXVariableDeclaration = new XVariableDeclarationElements();
		this.pXJAdditionalXVariableDeclaration = new XJAdditionalXVariableDeclarationElements();
		this.pXAssignment = new XAssignmentElements();
		this.pOpMultiAssign = new OpMultiAssignElements();
		this.pXJFeatureCallWithArrayAccess = new XJFeatureCallWithArrayAccessElements();
		this.pXFeatureCall = new XFeatureCallElements();
		this.pXConstructorCall = new XConstructorCallElements();
		this.pXJArrayConstructorCall = new XJArrayConstructorCallElements();
		this.pXJArrayDimension = new XJArrayDimensionElements();
		this.pXCastedExpression = new XCastedExpressionElements();
		this.pXPostfixOperation = new XPostfixOperationElements();
		this.pXMemberFeatureCall = new XMemberFeatureCallElements();
		this.pXForLoopExpression = new XForLoopExpressionElements();
		this.pXBasicForLoopExpression = new XBasicForLoopExpressionElements();
		this.pXIfExpression = new XIfExpressionElements();
		this.pXWhileExpression = new XWhileExpressionElements();
		this.pXDoWhileExpression = new XDoWhileExpressionElements();
		this.pXSwitchExpression = new XSwitchExpressionElements();
		this.pXCasePart = new XCasePartElements();
		this.pXJSwitchStatements = new XJSwitchStatementsElements();
		this.pXJTryWithResourcesStatement = new XJTryWithResourcesStatementElements();
		this.pXJTryWithResourcesVariableDeclaration = new XJTryWithResourcesVariableDeclarationElements();
		this.pXTryCatchFinallyExpression = new XTryCatchFinallyExpressionElements();
		this.pXCatchClause = new XCatchClauseElements();
		this.pXSynchronizedExpression = new XSynchronizedExpressionElements();
		this.pXPrimaryExpression = new XPrimaryExpressionElements();
		this.pXLiteral = new XLiteralElements();
		this.pXJArrayLiteral = new XJArrayLiteralElements();
		this.pXCharLiteral = new XCharLiteralElements();
		this.pXStringLiteral = new XStringLiteralElements();
		this.tSTRING = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.STRING");
		this.tCHARACTER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "jbase.Jbase.CHARACTER");
		this.pOpEquality = new OpEqualityElements();
		this.pOpMulti = new OpMultiElements();
		this.pOpOther = new OpOtherElements();
		this.pXAndExpression = new XAndExpressionElements();
		this.pXBitwiseInclusiveOrExpression = new XBitwiseInclusiveOrExpressionElements();
		this.pOpInclusiveOr = new OpInclusiveOrElements();
		this.pXBitwiseExclusiveOrExpression = new XBitwiseExclusiveOrExpressionElements();
		this.pOpExclusiveOr = new OpExclusiveOrElements();
		this.pXBitwiseAndExpression = new XBitwiseAndExpressionElements();
		this.pOpBitwiseAnd = new OpBitwiseAndElements();
		this.pOpUnary = new OpUnaryElements();
		this.pXAnnotationElementValueOrCommaList = new XAnnotationElementValueOrCommaListElements();
		this.pXAnnotationElementValue = new XAnnotationElementValueElements();
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("jbase.Jbase".equals(grammar.getName())) {
				return grammar;
			}
			List grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	
	
	public XbaseWithAnnotationsGrammarAccess getXbaseWithAnnotationsGrammarAccess() {
		return gaXbaseWithAnnotations;
	}
	
	public XbaseGrammarAccess getXbaseGrammarAccess() {
		return gaXbase;
	}
	
	public XtypeGrammarAccess getXtypeGrammarAccess() {
		return gaXtype;
	}

	
	///**
	// * The syntactic predicate on XBlockExpression is required to avoid
	// * ambiguity with array literal.  However, XBlockExpression must come first, to
	// * be able to parse both while(...) {} and while(...) st; for example.
	// * If we put the predicate on single statement, then it does not seem to
	// * be possible to parse incomplete member feature call.
	// */ XJStatementOrBlock XExpression: //	XJArrayConstructorCall | not a valid statement
	//	=> XBlockExpression | XJSingleStatement;
	public XJStatementOrBlockElements getXJStatementOrBlockAccess() {
		return pXJStatementOrBlock;
	}
	
	public ParserRule getXJStatementOrBlockRule() {
		return getXJStatementOrBlockAccess().getRule();
	}
	
	//@Override
	//XImportDeclaration xtype::XImportDeclaration:
	//	=> 'import' (static?='static' importedType=[types::JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' |
	//	memberName=ValidID) | importedType=[types::JvmDeclaredType|QualifiedName] |
	//	importedNamespace=QualifiedNameWithWildcard) -> ';'*;
	public XImportDeclarationElements getXImportDeclarationAccess() {
		return pXImportDeclaration;
	}
	
	public ParserRule getXImportDeclarationRule() {
		return getXImportDeclarationAccess().getRule();
	}
	
	//@Override
	//JvmTypeReference types::JvmTypeReference:
	//	JvmParameterizedTypeReference => ({types::JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
	//	// | XFunctionTypeRef;
	//;
	public JvmTypeReferenceElements getJvmTypeReferenceAccess() {
		return pJvmTypeReference;
	}
	
	public ParserRule getJvmTypeReferenceRule() {
		return getJvmTypeReferenceAccess().getRule();
	}
	
	//@Override
	//FullJvmFormalParameter XJJvmFormalParameter:
	//	{XJJvmFormalParameter} final?='final'? parameterType=JvmTypeReference varArgs?='...'? name=ValidID;
	public FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
		return pFullJvmFormalParameter;
	}
	
	public ParserRule getFullJvmFormalParameterRule() {
		return getFullJvmFormalParameterAccess().getRule();
	}
	
	//XJSingleStatement XExpression:
	//	XJSemicolonStatement | XSwitchExpression | XIfExpression | XForLoopExpression | XBasicForLoopExpression |
	//	XWhileExpression | XJTryWithResourcesStatement | XTryCatchFinallyExpression | XSynchronizedExpression |
	//	XJEmptyStatement;
	public XJSingleStatementElements getXJSingleStatementAccess() {
		return pXJSingleStatement;
	}
	
	public ParserRule getXJSingleStatementRule() {
		return getXJSingleStatementAccess().getRule();
	}
	
	///*
	// * These are the Java statements that require a semicolon at the end.
	// * 
	// * The final ; is optional in order to be able to parse incomplete
	// * expressions, provide nicer error messages and give better content assist.
	// * The presence of ';' is checked by the validator
	// */ XJSemicolonStatement XExpression:
	//	{XJSemicolonStatement} expression=(XJBranchingStatement | XExpressionOrVarDeclaration | XDoWhileExpression |
	//	XReturnExpression | XThrowExpression)
	//	-> semicolon=';'?;
	public XJSemicolonStatementElements getXJSemicolonStatementAccess() {
		return pXJSemicolonStatement;
	}
	
	public ParserRule getXJSemicolonStatementRule() {
		return getXJSemicolonStatementAccess().getRule();
	}
	
	//XJEmptyStatement XExpression:
	//	{XJSemicolonStatement} semicolon=';';
	public XJEmptyStatementElements getXJEmptyStatementAccess() {
		return pXJEmptyStatement;
	}
	
	public ParserRule getXJEmptyStatementRule() {
		return getXJEmptyStatementAccess().getRule();
	}
	
	//XJBranchingStatement XExpression:
	//	{XJContinueStatement} "continue" | {XJBreakStatement} "break";
	public XJBranchingStatementElements getXJBranchingStatementAccess() {
		return pXJBranchingStatement;
	}
	
	public ParserRule getXJBranchingStatementRule() {
		return getXJBranchingStatementAccess().getRule();
	}
	
	//@Override
	//XBlockExpression XExpression:
	//	{XBlockExpression}
	//	'{'
	//	expressions+=XJStatementOrBlock*
	//	'}';
	public XBlockExpressionElements getXBlockExpressionAccess() {
		return pXBlockExpression;
	}
	
	public ParserRule getXBlockExpressionRule() {
		return getXBlockExpressionAccess().getRule();
	}
	
	//@Override
	//XVariableDeclaration:
	//	=> ({XJVariableDeclaration} final?='final'?
	//	type=JvmTypeReference name=ValidID) ('=' right=XExpression)? (=> ','
	//	additionalVariables+=XJAdditionalXVariableDeclaration)*;
	public XVariableDeclarationElements getXVariableDeclarationAccess() {
		return pXVariableDeclaration;
	}
	
	public ParserRule getXVariableDeclarationRule() {
		return getXVariableDeclarationAccess().getRule();
	}
	
	//// the second predicate is to avoid ambiguities with for loops
	//// that already consider several variable declarations
	//// in our case we always parse them as several variable declarations
	//// since we allow them also as standard variable declarations as in Java
	//XJAdditionalXVariableDeclaration XVariableDeclaration:
	//	{XJAdditionalXVariableDeclaration} name=ValidID ('=' right=XExpression)?;
	public XJAdditionalXVariableDeclarationElements getXJAdditionalXVariableDeclarationAccess() {
		return pXJAdditionalXVariableDeclaration;
	}
	
	public ParserRule getXJAdditionalXVariableDeclarationRule() {
		return getXJAdditionalXVariableDeclarationAccess().getRule();
	}
	
	//@Override
	//XAssignment XExpression:
	//	=> ({XJAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID]
	//	'[' indexes+=XExpression ']' ('[' indexes+=XExpression ']')*
	//	OpSingleAssign) value=XAssignment |
	//	=> ({XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment |
	//	XOrExpression (=> ({XJConditionalExpression.if=current} '?') then=XExpression ':' else=XExpression
	//	|
	//	=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
	//	rightOperand=XAssignment)?;
	public XAssignmentElements getXAssignmentAccess() {
		return pXAssignment;
	}
	
	public ParserRule getXAssignmentRule() {
		return getXAssignmentAccess().getRule();
	}
	
	//@Override
	//OpMultiAssign:
	//	'+=' | '-=' | '*=' | '/=' | '%=' |
	//	'&=' | '|=' | '^=' | // added in Jbase
	//	'<' '<' '=' |
	//	'>' '>'? '>=';
	public OpMultiAssignElements getOpMultiAssignAccess() {
		return pOpMultiAssign;
	}
	
	public ParserRule getOpMultiAssignRule() {
		return getOpMultiAssignAccess().getRule();
	}
	
	//XJFeatureCallWithArrayAccess XExpression:
	//	XFeatureCall => ({XJArrayAccessExpression.array=current}
	//	'[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*)?;
	public XJFeatureCallWithArrayAccessElements getXJFeatureCallWithArrayAccessAccess() {
		return pXJFeatureCallWithArrayAccess;
	}
	
	public ParserRule getXJFeatureCallWithArrayAccessRule() {
		return getXJFeatureCallWithArrayAccessAccess().getRule();
	}
	
	//@Override
	//XFeatureCall XExpression:
	//	{XFeatureCall} feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='('
	//	(featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)?
	//	')')?;
	public XFeatureCallElements getXFeatureCallAccess() {
		return pXFeatureCall;
	}
	
	public ParserRule getXFeatureCallRule() {
		return getXFeatureCallAccess().getRule();
	}
	
	//@Override
	//XConstructorCall XExpression:
	//	{XJConstructorCall}
	//	'new' constructor=[types::JvmConstructor|QualifiedName] (=> explicitTypeArguments?='<'
	//	(typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)*)? '>')? (=>
	//	explicitConstructorCall?='(' (arguments+=XExpression (',' arguments+=XExpression)*)?
	//	')')?;
	public XConstructorCallElements getXConstructorCallAccess() {
		return pXConstructorCall;
	}
	
	public ParserRule getXConstructorCallRule() {
		return getXConstructorCallAccess().getRule();
	}
	
	//// dimensions and dimension expressions (feature indexes) are not associated during parsing,
	//// the association, i.e., knowing whether a dimension expression comes after
	//// an empty dimension (which is not legal), will be retrieved by
	//// JbaseModelUtil.arrayDimensionIndexAssociations(XJArrayConstructorCall)
	//// based on the offset of the [ and the array dimension XEpression
	//XJArrayConstructorCall XExpression:
	//	=> ({XJArrayConstructorCall}
	//	'new'
	//	type=[types::JvmType|QualifiedName] dimensions+=XJArrayDimension) indexes+=XExpression? ']' (=>
	//	dimensions+=XJArrayDimension indexes+=XExpression? ']')*
	//	=> arrayLiteral=XJArrayLiteral?;
	public XJArrayConstructorCallElements getXJArrayConstructorCallAccess() {
		return pXJArrayConstructorCall;
	}
	
	public ParserRule getXJArrayConstructorCallRule() {
		return getXJArrayConstructorCallAccess().getRule();
	}
	
	//// We need an EObject instead of a simple String since we then
	//// need to find the corresponding node (and offset) with NodeModelUtils
	//// in order to associate dimensions with indexes
	//XJArrayDimension:
	//	{XJArrayDimension} '[';
	public XJArrayDimensionElements getXJArrayDimensionAccess() {
		return pXJArrayDimension;
	}
	
	public ParserRule getXJArrayDimensionRule() {
		return getXJArrayDimensionAccess().getRule();
	}
	
	//@Override
	//XCastedExpression XExpression:
	//	=> ({XCastedExpression} '(' type=JvmTypeReference ')' target=XExpression) | XPostfixOperation;
	public XCastedExpressionElements getXCastedExpressionAccess() {
		return pXCastedExpression;
	}
	
	public ParserRule getXCastedExpressionRule() {
		return getXCastedExpressionAccess().getRule();
	}
	
	//@Override
	//XPostfixOperation XExpression:
	//	=> ({XJPrefixOperation} feature=[types::JvmIdentifiableElement|OpPostfix]) operand=XMemberFeatureCall
	//	| XMemberFeatureCall (=> ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix]) |
	//	=> ({XJArrayAccessExpression.array=current} '[' indexes+=XExpression ']' (=> '[' indexes+=XExpression ']')*))?;
	public XPostfixOperationElements getXPostfixOperationAccess() {
		return pXPostfixOperation;
	}
	
	public ParserRule getXPostfixOperationRule() {
		return getXPostfixOperationAccess().getRule();
	}
	
	//@Override
	//XMemberFeatureCall XExpression:
	//	XPrimaryExpression (
	//	// we don't need this at the moment
	//	//		=>({XJAssignment.assignable=current} ('.'|explicitStatic?="::") 
	//	//			feature=[types::JvmIdentifiableElement|FeatureCallID]
	//	//			'[' index=XExpression ']'
	//	//			OpSingleAssign) value=XAssignment
	//	//	|
	//	=> ({XJClassObject.typeExpression=current} arrayDimensions+=ArrayBrackets* '.' 'class') |
	//	=> ({XAssignment.assignable=current} '.'
	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment
	//	|
	//	=> ({XMemberFeatureCall.memberCallTarget=current} ".") feature=[types::JvmIdentifiableElement|IdOrSuper] (=>
	//	explicitOperationCall?='(' (memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)?
	//	')')?)*;
	public XMemberFeatureCallElements getXMemberFeatureCallAccess() {
		return pXMemberFeatureCall;
	}
	
	public ParserRule getXMemberFeatureCallRule() {
		return getXMemberFeatureCallAccess().getRule();
	}
	
	//@Override
	//XForLoopExpression XExpression:
	//	=> ({XForLoopExpression}
	//	'for' '(' declaredParam=FullJvmFormalParameter ':') forExpression=XExpression ')'
	//	eachExpression=XJStatementOrBlock;
	public XForLoopExpressionElements getXForLoopExpressionAccess() {
		return pXForLoopExpression;
	}
	
	public ParserRule getXForLoopExpressionRule() {
		return getXForLoopExpressionAccess().getRule();
	}
	
	//@Override
	//XBasicForLoopExpression XExpression:
	//	{XBasicForLoopExpression}
	//	'for' '(' (initExpressions+=XExpressionOrVarDeclaration (',' initExpressions+=XExpressionOrVarDeclaration)*)? ';'
	//	expression=XExpression? ';' (updateExpressions+=XExpression (',' updateExpressions+=XExpression)*)? ')'
	//	eachExpression=XJStatementOrBlock;
	public XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
		return pXBasicForLoopExpression;
	}
	
	public ParserRule getXBasicForLoopExpressionRule() {
		return getXBasicForLoopExpressionAccess().getRule();
	}
	
	//@Override
	//XIfExpression XExpression:
	//	{XIfExpression}
	//	'if' '(' if=XExpression ')'
	//	then=XJStatementOrBlock (=> 'else' else=XJStatementOrBlock)?;
	public XIfExpressionElements getXIfExpressionAccess() {
		return pXIfExpression;
	}
	
	public ParserRule getXIfExpressionRule() {
		return getXIfExpressionAccess().getRule();
	}
	
	//@Override
	//XWhileExpression XExpression:
	//	{XWhileExpression}
	//	'while' '(' predicate=XExpression ')'
	//	body=XJStatementOrBlock;
	public XWhileExpressionElements getXWhileExpressionAccess() {
		return pXWhileExpression;
	}
	
	public ParserRule getXWhileExpressionRule() {
		return getXWhileExpressionAccess().getRule();
	}
	
	//@Override
	//XDoWhileExpression XExpression:
	//	{XDoWhileExpression}
	//	'do'
	//	body=XJStatementOrBlock
	//	'while' '(' predicate=XExpression ')';
	public XDoWhileExpressionElements getXDoWhileExpressionAccess() {
		return pXDoWhileExpression;
	}
	
	public ParserRule getXDoWhileExpressionRule() {
		return getXDoWhileExpressionAccess().getRule();
	}
	
	//@Override
	//XSwitchExpression XExpression:
	//	{XSwitchExpression}
	//	'switch' '(' switch=XExpression ')' '{'
	//	cases+=XCasePart* ('default' ':' default=XJSwitchStatements)?
	//	'}';
	public XSwitchExpressionElements getXSwitchExpressionAccess() {
		return pXSwitchExpression;
	}
	
	public ParserRule getXSwitchExpressionRule() {
		return getXSwitchExpressionAccess().getRule();
	}
	
	//@Override
	//XCasePart:
	//	{XCasePart}
	//	'case' case=XExpression
	//	':' then=XJSwitchStatements;
	public XCasePartElements getXCasePartAccess() {
		return pXCasePart;
	}
	
	public ParserRule getXCasePartRule() {
		return getXCasePartAccess().getRule();
	}
	
	///**
	// * Java switch's case expression does not require an explicit block { }
	// */ XJSwitchStatements XExpression:
	//	{XJSwitchStatements} expressions+=XJStatementOrBlock*;
	public XJSwitchStatementsElements getXJSwitchStatementsAccess() {
		return pXJSwitchStatements;
	}
	
	public ParserRule getXJSwitchStatementsRule() {
		return getXJSwitchStatementsAccess().getRule();
	}
	
	///**
	// * Java 7 try-with-resources
	// */ XJTryWithResourcesStatement XExpression:
	//	=> ({XJTryWithResourcesStatement} 'try' openParenthesis?='(')
	//	resourceDeclarations+=XJTryWithResourcesVariableDeclaration*
	//	')'
	//	expression=XBlockExpression
	//	catchClauses+=XCatchClause* ('finally' finallyExpression=XBlockExpression)?;
	public XJTryWithResourcesStatementElements getXJTryWithResourcesStatementAccess() {
		return pXJTryWithResourcesStatement;
	}
	
	public ParserRule getXJTryWithResourcesStatementRule() {
		return getXJTryWithResourcesStatementAccess().getRule();
	}
	
	///*
	// * The final ; is optional in the last variable declaration in a
	// * try-with-resources
	// */ XJTryWithResourcesVariableDeclaration:
	//	{XJTryWithResourcesVariableDeclaration} final?='final'?
	//	type=JvmTypeReference name=ValidID '=' right=XExpression
	//	semicolon=';'?;
	public XJTryWithResourcesVariableDeclarationElements getXJTryWithResourcesVariableDeclarationAccess() {
		return pXJTryWithResourcesVariableDeclaration;
	}
	
	public ParserRule getXJTryWithResourcesVariableDeclarationRule() {
		return getXJTryWithResourcesVariableDeclarationAccess().getRule();
	}
	
	//@Override
	//XTryCatchFinallyExpression XExpression:
	//	{XTryCatchFinallyExpression}
	//	'try'
	//	expression=XBlockExpression (catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XBlockExpression)?
	//	| 'finally' finallyExpression=XBlockExpression);
	public XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
		return pXTryCatchFinallyExpression;
	}
	
	public ParserRule getXTryCatchFinallyExpressionRule() {
		return getXTryCatchFinallyExpressionAccess().getRule();
	}
	
	//@Override
	//XCatchClause:
	//	{XCatchClause} => 'catch' '(' declaredParam=FullJvmFormalParameter ')' expression=XBlockExpression;
	public XCatchClauseElements getXCatchClauseAccess() {
		return pXCatchClause;
	}
	
	public ParserRule getXCatchClauseRule() {
		return getXCatchClauseAccess().getRule();
	}
	
	//@Override
	//XSynchronizedExpression XExpression:
	//	=> ({XSynchronizedExpression}
	//	'synchronized' '(') param=XExpression ')' expression=XBlockExpression;
	public XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
		return pXSynchronizedExpression;
	}
	
	public ParserRule getXSynchronizedExpressionRule() {
		return getXSynchronizedExpressionAccess().getRule();
	}
	
	//@Override
	//XPrimaryExpression XExpression:
	//	XJArrayConstructorCall | XConstructorCall | XJFeatureCallWithArrayAccess | XLiteral | XParenthesizedExpression;
	public XPrimaryExpressionElements getXPrimaryExpressionAccess() {
		return pXPrimaryExpression;
	}
	
	public ParserRule getXPrimaryExpressionRule() {
		return getXPrimaryExpressionAccess().getRule();
	}
	
	//@Override
	//XLiteral XExpression:
	//	XBooleanLiteral | XNumberLiteral | XNullLiteral | XCharLiteral | XStringLiteral | XJArrayLiteral
	//	//	XTypeLiteral
	//;
	public XLiteralElements getXLiteralAccess() {
		return pXLiteral;
	}
	
	public ParserRule getXLiteralRule() {
		return getXLiteralAccess().getRule();
	}
	
	//// it is a subclass of XListLiteral, so that we will reuse
	//// type computation and compiler from Xbase
	//XJArrayLiteral:
	//	{XJArrayLiteral} '{' (elements+=XExpression (',' elements+=XExpression)*)? '}';
	public XJArrayLiteralElements getXJArrayLiteralAccess() {
		return pXJArrayLiteral;
	}
	
	public ParserRule getXJArrayLiteralRule() {
		return getXJArrayLiteralAccess().getRule();
	}
	
	///*
	// * We want to tell between string and char literals since we'll treat them
	// * differently from the type computation point of view.
	// */ XCharLiteral XExpression:
	//	{XJCharLiteral} value=CHARACTER;
	public XCharLiteralElements getXCharLiteralAccess() {
		return pXCharLiteral;
	}
	
	public ParserRule getXCharLiteralRule() {
		return getXCharLiteralAccess().getRule();
	}
	
	//@Override
	//XStringLiteral XExpression:
	//	{XStringLiteral} value=STRING;
	public XStringLiteralElements getXStringLiteralAccess() {
		return pXStringLiteral;
	}
	
	public ParserRule getXStringLiteralRule() {
		return getXStringLiteralAccess().getRule();
	}
	
	//@Override
	//terminal STRING:
	//	'"' ('\\' . | !('\\' | '"'))* '"'?;
	public TerminalRule getSTRINGRule() {
		return tSTRING;
	}
	
	//terminal CHARACTER:
	//	"'" ('\\' . | !('\\' | "'"))* "'"?;
	public TerminalRule getCHARACTERRule() {
		return tCHARACTER;
	}
	
	//@Override
	//OpEquality:
	//	'==' | '!=';
	public OpEqualityElements getOpEqualityAccess() {
		return pOpEquality;
	}
	
	public ParserRule getOpEqualityRule() {
		return getOpEqualityAccess().getRule();
	}
	
	//@Override
	//OpMulti:
	//	'*' | '/' | '%';
	public OpMultiElements getOpMultiAccess() {
		return pOpMulti;
	}
	
	public ParserRule getOpMultiRule() {
		return getOpMultiAccess().getRule();
	}
	
	//@Override
	//OpOther:
	//	'>' (=> ('>' '>') | '>') | '<<';
	public OpOtherElements getOpOtherAccess() {
		return pOpOther;
	}
	
	public ParserRule getOpOtherRule() {
		return getOpOtherAccess().getRule();
	}
	
	//@Override
	//XAndExpression XExpression:
	//	XBitwiseInclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current}
	//	feature=[types::JvmIdentifiableElement|OpAnd]) rightOperand=XBitwiseInclusiveOrExpression)*;
	public XAndExpressionElements getXAndExpressionAccess() {
		return pXAndExpression;
	}
	
	public ParserRule getXAndExpressionRule() {
		return getXAndExpressionAccess().getRule();
	}
	
	//XBitwiseInclusiveOrExpression XExpression:
	//	XBitwiseExclusiveOrExpression (=> ({XBinaryOperation.leftOperand=current}
	//	feature=[types::JvmIdentifiableElement|OpInclusiveOr]) rightOperand=XBitwiseExclusiveOrExpression)*;
	public XBitwiseInclusiveOrExpressionElements getXBitwiseInclusiveOrExpressionAccess() {
		return pXBitwiseInclusiveOrExpression;
	}
	
	public ParserRule getXBitwiseInclusiveOrExpressionRule() {
		return getXBitwiseInclusiveOrExpressionAccess().getRule();
	}
	
	//OpInclusiveOr:
	//	'|';
	public OpInclusiveOrElements getOpInclusiveOrAccess() {
		return pOpInclusiveOr;
	}
	
	public ParserRule getOpInclusiveOrRule() {
		return getOpInclusiveOrAccess().getRule();
	}
	
	//XBitwiseExclusiveOrExpression XExpression:
	//	XBitwiseAndExpression (=> ({XBinaryOperation.leftOperand=current}
	//	feature=[types::JvmIdentifiableElement|OpExclusiveOr]) rightOperand=XBitwiseAndExpression)*;
	public XBitwiseExclusiveOrExpressionElements getXBitwiseExclusiveOrExpressionAccess() {
		return pXBitwiseExclusiveOrExpression;
	}
	
	public ParserRule getXBitwiseExclusiveOrExpressionRule() {
		return getXBitwiseExclusiveOrExpressionAccess().getRule();
	}
	
	//OpExclusiveOr:
	//	'^';
	public OpExclusiveOrElements getOpExclusiveOrAccess() {
		return pOpExclusiveOr;
	}
	
	public ParserRule getOpExclusiveOrRule() {
		return getOpExclusiveOrAccess().getRule();
	}
	
	//XBitwiseAndExpression XExpression:
	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpBitwiseAnd])
	//	rightOperand=XEqualityExpression)*;
	public XBitwiseAndExpressionElements getXBitwiseAndExpressionAccess() {
		return pXBitwiseAndExpression;
	}
	
	public ParserRule getXBitwiseAndExpressionRule() {
		return getXBitwiseAndExpressionAccess().getRule();
	}
	
	//OpBitwiseAnd:
	//	'&';
	public OpBitwiseAndElements getOpBitwiseAndAccess() {
		return pOpBitwiseAnd;
	}
	
	public ParserRule getOpBitwiseAndRule() {
		return getOpBitwiseAndAccess().getRule();
	}
	
	//@Override
	//OpUnary:
	//	"!" | "-" | "+" | "~";
	public OpUnaryElements getOpUnaryAccess() {
		return pOpUnary;
	}
	
	public ParserRule getOpUnaryRule() {
		return getOpUnaryAccess().getRule();
	}
	
	//@Override
	//XAnnotationElementValueOrCommaList XExpression:
	//	=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
	//	| XAnnotationOrExpression // in Java multiple values must be specified with an array literal
	//	// ({XListLiteral.elements+=current} (',' elements+=XAnnotationOrExpression )+)?
	//;
	public XAnnotationElementValueOrCommaListElements getXAnnotationElementValueOrCommaListAccess() {
		return pXAnnotationElementValueOrCommaList;
	}
	
	public ParserRule getXAnnotationElementValueOrCommaListRule() {
		return getXAnnotationElementValueOrCommaListAccess().getRule();
	}
	
	//@Override
	//XAnnotationElementValue XExpression:
	//	=> ({XJArrayLiteral} '{') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? '}'
	//	| XAnnotationOrExpression;
	public XAnnotationElementValueElements getXAnnotationElementValueAccess() {
		return pXAnnotationElementValue;
	}
	
	public ParserRule getXAnnotationElementValueRule() {
		return getXAnnotationElementValueAccess().getRule();
	}
	
	//XAnnotation:
	//	{XAnnotation}
	//	'@' annotationType=[types::JvmAnnotationType|QualifiedName] (=> '(' (elementValuePairs+=XAnnotationElementValuePair
	//	(',' elementValuePairs+=XAnnotationElementValuePair)*
	//	| value=super::XAnnotationElementValueOrCommaList)?
	//	')')?;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
		return gaXbaseWithAnnotations.getXAnnotationAccess();
	}
	
	public ParserRule getXAnnotationRule() {
		return getXAnnotationAccess().getRule();
	}
	
	//XAnnotationElementValuePair:
	//	=> (element=[types::JvmOperation|ValidID] '=') value=super::XAnnotationElementValue;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
		return gaXbaseWithAnnotations.getXAnnotationElementValuePairAccess();
	}
	
	public ParserRule getXAnnotationElementValuePairRule() {
		return getXAnnotationElementValuePairAccess().getRule();
	}
	
	//XAnnotationOrExpression xbase::XExpression:
	//	XAnnotation | XExpression;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
	}
	
	public ParserRule getXAnnotationOrExpressionRule() {
		return getXAnnotationOrExpressionAccess().getRule();
	}
	
	//XExpression:
	//	super::XAssignment;
	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
		return gaXbase.getXExpressionAccess();
	}
	
	public ParserRule getXExpressionRule() {
		return getXExpressionAccess().getRule();
	}
	
	//OpSingleAssign:
	//	'=';
	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
		return gaXbase.getOpSingleAssignAccess();
	}
	
	public ParserRule getOpSingleAssignRule() {
		return getOpSingleAssignAccess().getRule();
	}
	
	//XOrExpression XExpression:
	//	super::XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
	//	rightOperand=super::XAndExpression)*;
	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
		return gaXbase.getXOrExpressionAccess();
	}
	
	public ParserRule getXOrExpressionRule() {
		return getXOrExpressionAccess().getRule();
	}
	
	//OpOr:
	//	'||';
	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
		return gaXbase.getOpOrAccess();
	}
	
	public ParserRule getOpOrRule() {
		return getOpOrAccess().getRule();
	}
	
	//OpAnd:
	//	'&&';
	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
		return gaXbase.getOpAndAccess();
	}
	
	public ParserRule getOpAndRule() {
		return getOpAndAccess().getRule();
	}
	
	//XEqualityExpression XExpression:
	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current}
	//	feature=[types::JvmIdentifiableElement|super::OpEquality]) rightOperand=XRelationalExpression)*;
	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
		return gaXbase.getXEqualityExpressionAccess();
	}
	
	public ParserRule getXEqualityExpressionRule() {
		return getXEqualityExpressionAccess().getRule();
	}
	
	//XRelationalExpression XExpression:
	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} 'instanceof') type=super::JvmTypeReference |
	//	=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
	//	rightOperand=XOtherOperatorExpression)*;
	public XbaseGrammarAccess.XRelationalExpressionElements getXRelationalExpressionAccess() {
		return gaXbase.getXRelationalExpressionAccess();
	}
	
	public ParserRule getXRelationalExpressionRule() {
		return getXRelationalExpressionAccess().getRule();
	}
	
	//OpCompare:
	//	'>=' | '<' '=' | '>' | '<';
	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
		return gaXbase.getOpCompareAccess();
	}
	
	public ParserRule getOpCompareRule() {
		return getOpCompareAccess().getRule();
	}
	
	//XOtherOperatorExpression XExpression:
	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current}
	//	feature=[types::JvmIdentifiableElement|super::OpOther]) rightOperand=XAdditiveExpression)*;
	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
		return gaXbase.getXOtherOperatorExpressionAccess();
	}
	
	public ParserRule getXOtherOperatorExpressionRule() {
		return getXOtherOperatorExpressionAccess().getRule();
	}
	
	//XAdditiveExpression XExpression:
	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
	//	rightOperand=XMultiplicativeExpression)*;
	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
		return gaXbase.getXAdditiveExpressionAccess();
	}
	
	public ParserRule getXAdditiveExpressionRule() {
		return getXAdditiveExpressionAccess().getRule();
	}
	
	//OpAdd:
	//	'+' | '-';
	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
		return gaXbase.getOpAddAccess();
	}
	
	public ParserRule getOpAddRule() {
		return getOpAddAccess().getRule();
	}
	
	//XMultiplicativeExpression XExpression:
	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|super::OpMulti])
	//	rightOperand=XUnaryOperation)*;
	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
		return gaXbase.getXMultiplicativeExpressionAccess();
	}
	
	public ParserRule getXMultiplicativeExpressionRule() {
		return getXMultiplicativeExpressionAccess().getRule();
	}
	
	//XUnaryOperation XExpression:
	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|super::OpUnary] operand=XUnaryOperation
	//	| super::XCastedExpression;
	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
		return gaXbase.getXUnaryOperationAccess();
	}
	
	public ParserRule getXUnaryOperationRule() {
		return getXUnaryOperationAccess().getRule();
	}
	
	//OpPostfix:
	//	"++" | "--";
	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
		return gaXbase.getOpPostfixAccess();
	}
	
	public ParserRule getOpPostfixRule() {
		return getOpPostfixAccess().getRule();
	}
	
	//XCollectionLiteral:
	//	XSetLiteral | XListLiteral;
	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
		return gaXbase.getXCollectionLiteralAccess();
	}
	
	public ParserRule getXCollectionLiteralRule() {
		return getXCollectionLiteralAccess().getRule();
	}
	
	//XSetLiteral:
	//	{XSetLiteral} '#' '{' (elements+=XExpression (',' elements+=XExpression)*)? '}';
	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
		return gaXbase.getXSetLiteralAccess();
	}
	
	public ParserRule getXSetLiteralRule() {
		return getXSetLiteralAccess().getRule();
	}
	
	//XListLiteral:
	//	{XListLiteral} '#' '[' (elements+=XExpression (',' elements+=XExpression)*)? ']';
	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
		return gaXbase.getXListLiteralAccess();
	}
	
	public ParserRule getXListLiteralRule() {
		return getXListLiteralAccess().getRule();
	}
	
	//XClosure XExpression:
	//	=> ({XClosure}
	//	'[')
	//	=> ((declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
	//	explicitSyntax?='|')?
	//	expression=XExpressionInClosure
	//	']';
	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
		return gaXbase.getXClosureAccess();
	}
	
	public ParserRule getXClosureRule() {
		return getXClosureAccess().getRule();
	}
	
	//XExpressionInClosure XExpression:
	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ';'?)*;
	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
		return gaXbase.getXExpressionInClosureAccess();
	}
	
	public ParserRule getXExpressionInClosureRule() {
		return getXExpressionInClosureAccess().getRule();
	}
	
	//XShortClosure XExpression:
	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
	//	explicitSyntax?='|') expression=XExpression;
	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
		return gaXbase.getXShortClosureAccess();
	}
	
	public ParserRule getXShortClosureRule() {
		return getXShortClosureAccess().getRule();
	}
	
	//XParenthesizedExpression XExpression:
	//	'(' XExpression ')';
	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
		return gaXbase.getXParenthesizedExpressionAccess();
	}
	
	public ParserRule getXParenthesizedExpressionRule() {
		return getXParenthesizedExpressionAccess().getRule();
	}
	
	//XExpressionOrVarDeclaration XExpression:
	//	super::XVariableDeclaration | XExpression;
	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
		return gaXbase.getXExpressionOrVarDeclarationAccess();
	}
	
	public ParserRule getXExpressionOrVarDeclarationRule() {
		return getXExpressionOrVarDeclarationAccess().getRule();
	}
	
	//JvmFormalParameter types::JvmFormalParameter:
	//	parameterType=super::JvmTypeReference? name=ValidID;
	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
		return gaXbase.getJvmFormalParameterAccess();
	}
	
	public ParserRule getJvmFormalParameterRule() {
		return getJvmFormalParameterAccess().getRule();
	}
	
	//FeatureCallID:
	//	ValidID | 'extends' | 'static' | 'import' | 'extension';
	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
		return gaXbase.getFeatureCallIDAccess();
	}
	
	public ParserRule getFeatureCallIDRule() {
		return getFeatureCallIDAccess().getRule();
	}
	
	//IdOrSuper:
	//	FeatureCallID | 'super';
	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
		return gaXbase.getIdOrSuperAccess();
	}
	
	public ParserRule getIdOrSuperRule() {
		return getIdOrSuperAccess().getRule();
	}
	
	//XBooleanLiteral XExpression:
	//	{XBooleanLiteral} ('false' | isTrue?='true');
	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
		return gaXbase.getXBooleanLiteralAccess();
	}
	
	public ParserRule getXBooleanLiteralRule() {
		return getXBooleanLiteralAccess().getRule();
	}
	
	//XNullLiteral XExpression:
	//	{XNullLiteral} 'null';
	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
		return gaXbase.getXNullLiteralAccess();
	}
	
	public ParserRule getXNullLiteralRule() {
		return getXNullLiteralAccess().getRule();
	}
	
	//XNumberLiteral XExpression:
	//	{XNumberLiteral} value=Number;
	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
		return gaXbase.getXNumberLiteralAccess();
	}
	
	public ParserRule getXNumberLiteralRule() {
		return getXNumberLiteralAccess().getRule();
	}
	
	//XTypeLiteral XExpression:
	//	{XTypeLiteral} 'typeof' '(' type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ')';
	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
		return gaXbase.getXTypeLiteralAccess();
	}
	
	public ParserRule getXTypeLiteralRule() {
		return getXTypeLiteralAccess().getRule();
	}
	
	//XThrowExpression XExpression:
	//	{XThrowExpression} 'throw' expression=XExpression;
	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
		return gaXbase.getXThrowExpressionAccess();
	}
	
	public ParserRule getXThrowExpressionRule() {
		return getXThrowExpressionAccess().getRule();
	}
	
	//XReturnExpression XExpression:
	//	{XReturnExpression} 'return' -> expression=XExpression?;
	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
		return gaXbase.getXReturnExpressionAccess();
	}
	
	public ParserRule getXReturnExpressionRule() {
		return getXReturnExpressionAccess().getRule();
	}
	
	//@Override
	//QualifiedName:
	//	ValidID (=> '.' ValidID)*;
	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
		return gaXbase.getQualifiedNameAccess();
	}
	
	public ParserRule getQualifiedNameRule() {
		return getQualifiedNameAccess().getRule();
	}
	
	//Number hidden():
	//	HEX | (INT | DECIMAL) ('.' (INT | DECIMAL))?;
	public XbaseGrammarAccess.NumberElements getNumberAccess() {
		return gaXbase.getNumberAccess();
	}
	
	public ParserRule getNumberRule() {
		return getNumberAccess().getRule();
	}
	
	///**
	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes,
	// * which makes downstream grammars break on classloading, when a rule is removed.
	// */ StaticQualifier:
	//	(ValidID '::')+;
	public XbaseGrammarAccess.StaticQualifierElements getStaticQualifierAccess() {
		return gaXbase.getStaticQualifierAccess();
	}
	
	public ParserRule getStaticQualifierRule() {
		return getStaticQualifierAccess().getRule();
	}
	
	//terminal HEX:
	//	('0x' | '0X') ('0'..'9' | 'a'..'f' | 'A'..'F' | '_')+ ('#' (('b' | 'B') ('i' | 'I') | ('l' | 'L')))?;
	public TerminalRule getHEXRule() {
		return gaXbase.getHEXRule();
	}
	
	//terminal INT returns ecore::EInt:
	//	'0'..'9' ('0'..'9' | '_')*;
	public TerminalRule getINTRule() {
		return gaXbase.getINTRule();
	}
	
	//terminal DECIMAL:
	//	INT (('e' | 'E') ('+' | '-')? INT)? (('b' | 'B') ('i' | 'I' | 'd' | 'D') | ('l' | 'L' | 'd' | 'D' | 'f' | 'F'))?;
	public TerminalRule getDECIMALRule() {
		return gaXbase.getDECIMALRule();
	}
	
	//ArrayBrackets:
	//	'[' ']';
	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
		return gaXtype.getArrayBracketsAccess();
	}
	
	public ParserRule getArrayBracketsRule() {
		return getArrayBracketsAccess().getRule();
	}
	
	//XFunctionTypeRef:
	//	('(' (paramTypes+=super::JvmTypeReference (',' paramTypes+=super::JvmTypeReference)*)? ')')? '=>'
	//	returnType=super::JvmTypeReference;
	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
		return gaXtype.getXFunctionTypeRefAccess();
	}
	
	public ParserRule getXFunctionTypeRefRule() {
		return getXFunctionTypeRefAccess().getRule();
	}
	
	//JvmParameterizedTypeReference:
	//	type=[JvmType|super::QualifiedName] (=> '<' arguments+=JvmArgumentTypeReference (','
	//	arguments+=JvmArgumentTypeReference)* '>' (=> ({JvmInnerTypeReference.outer=current} '.') type=[JvmType|ValidID] (=>
	//	'<' arguments+=JvmArgumentTypeReference (',' arguments+=JvmArgumentTypeReference)* '>')?)*)?;
	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
		return gaXtype.getJvmParameterizedTypeReferenceAccess();
	}
	
	public ParserRule getJvmParameterizedTypeReferenceRule() {
		return getJvmParameterizedTypeReferenceAccess().getRule();
	}
	
	//JvmArgumentTypeReference JvmTypeReference:
	//	super::JvmTypeReference | JvmWildcardTypeReference;
	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
		return gaXtype.getJvmArgumentTypeReferenceAccess();
	}
	
	public ParserRule getJvmArgumentTypeReferenceRule() {
		return getJvmArgumentTypeReferenceAccess().getRule();
	}
	
	//JvmWildcardTypeReference:
	//	{JvmWildcardTypeReference} '?' (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*
	//	| constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
		return gaXtype.getJvmWildcardTypeReferenceAccess();
	}
	
	public ParserRule getJvmWildcardTypeReferenceRule() {
		return getJvmWildcardTypeReferenceAccess().getRule();
	}
	
	//JvmUpperBound:
	//	'extends' typeReference=super::JvmTypeReference;
	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
		return gaXtype.getJvmUpperBoundAccess();
	}
	
	public ParserRule getJvmUpperBoundRule() {
		return getJvmUpperBoundAccess().getRule();
	}
	
	//JvmUpperBoundAnded JvmUpperBound:
	//	'&' typeReference=super::JvmTypeReference;
	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
		return gaXtype.getJvmUpperBoundAndedAccess();
	}
	
	public ParserRule getJvmUpperBoundAndedRule() {
		return getJvmUpperBoundAndedAccess().getRule();
	}
	
	//JvmLowerBound:
	//	'super' typeReference=super::JvmTypeReference;
	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
		return gaXtype.getJvmLowerBoundAccess();
	}
	
	public ParserRule getJvmLowerBoundRule() {
		return getJvmLowerBoundAccess().getRule();
	}
	
	//JvmLowerBoundAnded JvmLowerBound:
	//	'&' typeReference=super::JvmTypeReference;
	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
		return gaXtype.getJvmLowerBoundAndedAccess();
	}
	
	public ParserRule getJvmLowerBoundAndedRule() {
		return getJvmLowerBoundAndedAccess().getRule();
	}
	
	//JvmTypeParameter:
	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
		return gaXtype.getJvmTypeParameterAccess();
	}
	
	public ParserRule getJvmTypeParameterRule() {
		return getJvmTypeParameterAccess().getRule();
	}
	
	//QualifiedNameWithWildcard:
	//	super::QualifiedName '.' '*';
	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
		return gaXtype.getQualifiedNameWithWildcardAccess();
	}
	
	public ParserRule getQualifiedNameWithWildcardRule() {
		return getQualifiedNameWithWildcardAccess().getRule();
	}
	
	//ValidID:
	//	ID;
	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
		return gaXtype.getValidIDAccess();
	}
	
	public ParserRule getValidIDRule() {
		return getValidIDAccess().getRule();
	}
	
	//XImportSection:
	//	importDeclarations+=super::XImportDeclaration+;
	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
		return gaXtype.getXImportSectionAccess();
	}
	
	public ParserRule getXImportSectionRule() {
		return getXImportSectionAccess().getRule();
	}
	
	//QualifiedNameInStaticImport:
	//	(ValidID '.')+;
	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
		return gaXtype.getQualifiedNameInStaticImportAccess();
	}
	
	public ParserRule getQualifiedNameInStaticImportRule() {
		return getQualifiedNameInStaticImportAccess().getRule();
	}
	
	//terminal ID:
	//	'^'? ('a'..'z' | 'A'..'Z' | '$' | '_') ('a'..'z' | 'A'..'Z' | '$' | '_' | '0'..'9')*;
	public TerminalRule getIDRule() {
		return gaXtype.getIDRule();
	}
	
	//terminal ML_COMMENT:
	//	'/*'->'*/';
	public TerminalRule getML_COMMENTRule() {
		return gaXtype.getML_COMMENTRule();
	}
	
	//terminal SL_COMMENT:
	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
	public TerminalRule getSL_COMMENTRule() {
		return gaXtype.getSL_COMMENTRule();
	}
	
	//terminal WS:
	//	' ' | '\t' | '\r' | '\n'+;
	public TerminalRule getWSRule() {
		return gaXtype.getWSRule();
	}
	
	//terminal ANY_OTHER:
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaXtype.getANY_OTHERRule();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy