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

org.openxma.dsl.dom.services.DomDslGrammarAccess Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
/*
* generated by Xtext
*/

package org.openxma.dsl.dom.services;

import com.google.inject.Singleton;
import com.google.inject.Inject;

import org.eclipse.xtext.*;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.service.AbstractElementFinder.*;

import org.openxma.dsl.core.services.CoreDslGrammarAccess;

@Singleton
public class DomDslGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class ModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Model");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cModelAction_0 = (Action)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cNamespaceKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		private final Assignment cImportsAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cImportsImportParserRuleCall_2_0 = (RuleCall)cImportsAssignment_2.eContents().get(0);
		private final Assignment cElementsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cElementsModelElementParserRuleCall_3_0 = (RuleCall)cElementsAssignment_3.eContents().get(0);
		
		//Model returns core::Model:
		//	{core::Model} ("namespace" name=QualifiedName)? imports+=Import* elements+=ModelElement*;
		public ParserRule getRule() { return rule; }

		//{core::Model} ("namespace" name=QualifiedName)? imports+=Import* elements+=ModelElement*
		public Group getGroup() { return cGroup; }

		//{core::Model}
		public Action getModelAction_0() { return cModelAction_0; }

		//("namespace" name=QualifiedName)?
		public Group getGroup_1() { return cGroup_1; }

		//"namespace"
		public Keyword getNamespaceKeyword_1_0() { return cNamespaceKeyword_1_0; }

		//name=QualifiedName
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_1_0() { return cNameQualifiedNameParserRuleCall_1_1_0; }

		//imports+=Import*
		public Assignment getImportsAssignment_2() { return cImportsAssignment_2; }

		//Import
		public RuleCall getImportsImportParserRuleCall_2_0() { return cImportsImportParserRuleCall_2_0; }

		//elements+=ModelElement*
		public Assignment getElementsAssignment_3() { return cElementsAssignment_3; }

		//ModelElement
		public RuleCall getElementsModelElementParserRuleCall_3_0() { return cElementsModelElementParserRuleCall_3_0; }
	}

	public class ModelElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ModelElement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cApplicationSessionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cServiceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cComplexTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cDaoParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cMapperParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//ModelElement returns core::ModelElement:
		//	ApplicationSession | Service | ComplexType | Dao | Mapper;
		public ParserRule getRule() { return rule; }

		//ApplicationSession | Service | ComplexType | Dao | Mapper
		public Alternatives getAlternatives() { return cAlternatives; }

		//ApplicationSession
		public RuleCall getApplicationSessionParserRuleCall_0() { return cApplicationSessionParserRuleCall_0; }

		//Service
		public RuleCall getServiceParserRuleCall_1() { return cServiceParserRuleCall_1; }

		//ComplexType
		public RuleCall getComplexTypeParserRuleCall_2() { return cComplexTypeParserRuleCall_2; }

		//Dao
		public RuleCall getDaoParserRuleCall_3() { return cDaoParserRuleCall_3; }

		//Mapper
		public RuleCall getMapperParserRuleCall_4() { return cMapperParserRuleCall_4; }
	}

	public class TypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Type");
		private final RuleCall cComplexTypeParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//Type returns core::Type:
		//	ComplexType;
		public ParserRule getRule() { return rule; }

		//ComplexType
		public RuleCall getComplexTypeParserRuleCall() { return cComplexTypeParserRuleCall; }
	}

	public class ComplexTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ComplexType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cEntityParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDataViewParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cValueObjectParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//ComplexType:
		//	Entity | DataView | ValueObject;
		public ParserRule getRule() { return rule; }

		//Entity | DataView | ValueObject
		public Alternatives getAlternatives() { return cAlternatives; }

		//Entity
		public RuleCall getEntityParserRuleCall_0() { return cEntityParserRuleCall_0; }

		//DataView
		public RuleCall getDataViewParserRuleCall_1() { return cDataViewParserRuleCall_1; }

		//ValueObject
		public RuleCall getValueObjectParserRuleCall_2() { return cValueObjectParserRuleCall_2; }
	}

	public class ServiceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Service");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cServiceKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cUsesKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cDependenciesAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cDependenciesDependantCrossReference_2_1_0 = (CrossReference)cDependenciesAssignment_2_1.eContents().get(0);
		private final RuleCall cDependenciesDependantQualifiedNameParserRuleCall_2_1_0_1 = (RuleCall)cDependenciesDependantCrossReference_2_1_0.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cDependenciesAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final CrossReference cDependenciesDependantCrossReference_2_2_1_0 = (CrossReference)cDependenciesAssignment_2_2_1.eContents().get(0);
		private final RuleCall cDependenciesDependantQualifiedNameParserRuleCall_2_2_1_0_1 = (RuleCall)cDependenciesDependantCrossReference_2_2_1_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cOperationsAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final RuleCall cOperationsOperationParserRuleCall_4_0_0 = (RuleCall)cOperationsAssignment_4_0.eContents().get(0);
		private final Assignment cDelegateOperationsAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final RuleCall cDelegateOperationsDelegateOperationParserRuleCall_4_1_0 = (RuleCall)cDelegateOperationsAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//Service:
		//	"service" name=ID ("uses" dependencies+=[Dependant|QualifiedName] ("," dependencies+=[Dependant|QualifiedName])*)? "{"
		//	(operations+=Operation | delegateOperations+=DelegateOperation)* "}";
		public ParserRule getRule() { return rule; }

		//"service" name=ID ("uses" dependencies+=[Dependant|QualifiedName] ("," dependencies+=[Dependant|QualifiedName])*)? "{"
		//(operations+=Operation | delegateOperations+=DelegateOperation)* "}"
		public Group getGroup() { return cGroup; }

		//"service"
		public Keyword getServiceKeyword_0() { return cServiceKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//("uses" dependencies+=[Dependant|QualifiedName] ("," dependencies+=[Dependant|QualifiedName])*)?
		public Group getGroup_2() { return cGroup_2; }

		//"uses"
		public Keyword getUsesKeyword_2_0() { return cUsesKeyword_2_0; }

		//dependencies+=[Dependant|QualifiedName]
		public Assignment getDependenciesAssignment_2_1() { return cDependenciesAssignment_2_1; }

		//[Dependant|QualifiedName]
		public CrossReference getDependenciesDependantCrossReference_2_1_0() { return cDependenciesDependantCrossReference_2_1_0; }

		//QualifiedName
		public RuleCall getDependenciesDependantQualifiedNameParserRuleCall_2_1_0_1() { return cDependenciesDependantQualifiedNameParserRuleCall_2_1_0_1; }

		//("," dependencies+=[Dependant|QualifiedName])*
		public Group getGroup_2_2() { return cGroup_2_2; }

		//","
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }

		//dependencies+=[Dependant|QualifiedName]
		public Assignment getDependenciesAssignment_2_2_1() { return cDependenciesAssignment_2_2_1; }

		//[Dependant|QualifiedName]
		public CrossReference getDependenciesDependantCrossReference_2_2_1_0() { return cDependenciesDependantCrossReference_2_2_1_0; }

		//QualifiedName
		public RuleCall getDependenciesDependantQualifiedNameParserRuleCall_2_2_1_0_1() { return cDependenciesDependantQualifiedNameParserRuleCall_2_2_1_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//(operations+=Operation | delegateOperations+=DelegateOperation)*
		public Alternatives getAlternatives_4() { return cAlternatives_4; }

		//operations+=Operation
		public Assignment getOperationsAssignment_4_0() { return cOperationsAssignment_4_0; }

		//Operation
		public RuleCall getOperationsOperationParserRuleCall_4_0_0() { return cOperationsOperationParserRuleCall_4_0_0; }

		//delegateOperations+=DelegateOperation
		public Assignment getDelegateOperationsAssignment_4_1() { return cDelegateOperationsAssignment_4_1; }

		//DelegateOperation
		public RuleCall getDelegateOperationsDelegateOperationParserRuleCall_4_1_0() { return cDelegateOperationsDelegateOperationParserRuleCall_4_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class DependantElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Dependant");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cServiceParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDaoParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cEntityParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//Dependant:
		//	Service | Dao | Entity;
		public ParserRule getRule() { return rule; }

		//Service | Dao | Entity
		public Alternatives getAlternatives() { return cAlternatives; }

		//Service
		public RuleCall getServiceParserRuleCall_0() { return cServiceParserRuleCall_0; }

		//Dao
		public RuleCall getDaoParserRuleCall_1() { return cDaoParserRuleCall_1; }

		//Entity
		public RuleCall getEntityParserRuleCall_2() { return cEntityParserRuleCall_2; }
	}

	public class PropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Property");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPropertyKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cTypeSimpleTypeCrossReference_1_0 = (CrossReference)cTypeAssignment_1.eContents().get(0);
		private final RuleCall cTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1 = (RuleCall)cTypeSimpleTypeCrossReference_1_0.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cEqualsSignKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cDefaultValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cDefaultValueSTRINGTerminalRuleCall_3_1_0 = (RuleCall)cDefaultValueAssignment_3_1.eContents().get(0);
		
		//Property:
		//	"property" type=[core::SimpleType|QualifiedName] name=ID ("=" defaultValue=STRING)?;
		public ParserRule getRule() { return rule; }

		//"property" type=[core::SimpleType|QualifiedName] name=ID ("=" defaultValue=STRING)?
		public Group getGroup() { return cGroup; }

		//"property"
		public Keyword getPropertyKeyword_0() { return cPropertyKeyword_0; }

		//type=[core::SimpleType|QualifiedName]
		public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }

		//[core::SimpleType|QualifiedName]
		public CrossReference getTypeSimpleTypeCrossReference_1_0() { return cTypeSimpleTypeCrossReference_1_0; }

		//QualifiedName
		public RuleCall getTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1() { return cTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//("=" defaultValue=STRING)?
		public Group getGroup_3() { return cGroup_3; }

		//"="
		public Keyword getEqualsSignKeyword_3_0() { return cEqualsSignKeyword_3_0; }

		//defaultValue=STRING
		public Assignment getDefaultValueAssignment_3_1() { return cDefaultValueAssignment_3_1; }

		//STRING
		public RuleCall getDefaultValueSTRINGTerminalRuleCall_3_1_0() { return cDefaultValueSTRINGTerminalRuleCall_3_1_0; }
	}

	public class OperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Operation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cOperationKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Assignment cTypeAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cTypeTypeCrossReference_1_0_0 = (CrossReference)cTypeAssignment_1_0.eContents().get(0);
		private final RuleCall cTypeTypeQualifiedNameParserRuleCall_1_0_0_1 = (RuleCall)cTypeTypeCrossReference_1_0_0.eContents().get(1);
		private final Assignment cManyAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0 = (Keyword)cManyAssignment_1_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cParametersAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cParametersParameterParserRuleCall_4_0_0 = (RuleCall)cParametersAssignment_4_0.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
		private final Assignment cParametersAssignment_4_1_1 = (Assignment)cGroup_4_1.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_1_1_0 = (RuleCall)cParametersAssignment_4_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cEqualsSignKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cExpressionAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cExpressionSTRINGTerminalRuleCall_6_1_0 = (RuleCall)cExpressionAssignment_6_1.eContents().get(0);
		
		//Operation:
		//	"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (parameters+=Parameter (","
		//	parameters+=Parameter)*)? ")" ("=" expression=STRING)?;
		public ParserRule getRule() { return rule; }

		//"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (parameters+=Parameter (","
		//parameters+=Parameter)*)? ")" ("=" expression=STRING)?
		public Group getGroup() { return cGroup; }

		//"operation"
		public Keyword getOperationKeyword_0() { return cOperationKeyword_0; }

		//(type=[core::Type|QualifiedName] many?="[]"?)?
		public Group getGroup_1() { return cGroup_1; }

		//type=[core::Type|QualifiedName]
		public Assignment getTypeAssignment_1_0() { return cTypeAssignment_1_0; }

		//[core::Type|QualifiedName]
		public CrossReference getTypeTypeCrossReference_1_0_0() { return cTypeTypeCrossReference_1_0_0; }

		//QualifiedName
		public RuleCall getTypeTypeQualifiedNameParserRuleCall_1_0_0_1() { return cTypeTypeQualifiedNameParserRuleCall_1_0_0_1; }

		//many?="[]"?
		public Assignment getManyAssignment_1_1() { return cManyAssignment_1_1; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//(parameters+=Parameter ("," parameters+=Parameter)*)?
		public Group getGroup_4() { return cGroup_4; }

		//parameters+=Parameter
		public Assignment getParametersAssignment_4_0() { return cParametersAssignment_4_0; }

		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_0_0() { return cParametersParameterParserRuleCall_4_0_0; }

		//("," parameters+=Parameter)*
		public Group getGroup_4_1() { return cGroup_4_1; }

		//","
		public Keyword getCommaKeyword_4_1_0() { return cCommaKeyword_4_1_0; }

		//parameters+=Parameter
		public Assignment getParametersAssignment_4_1_1() { return cParametersAssignment_4_1_1; }

		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_1_1_0() { return cParametersParameterParserRuleCall_4_1_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }

		//("=" expression=STRING)?
		public Group getGroup_6() { return cGroup_6; }

		//"="
		public Keyword getEqualsSignKeyword_6_0() { return cEqualsSignKeyword_6_0; }

		//expression=STRING
		public Assignment getExpressionAssignment_6_1() { return cExpressionAssignment_6_1; }

		//STRING
		public RuleCall getExpressionSTRINGTerminalRuleCall_6_1_0() { return cExpressionSTRINGTerminalRuleCall_6_1_0; }
	}

	public class ParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Parameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cTypeTypeCrossReference_0_0 = (CrossReference)cTypeAssignment_0.eContents().get(0);
		private final RuleCall cTypeTypeQualifiedNameParserRuleCall_0_0_1 = (RuleCall)cTypeTypeCrossReference_0_0.eContents().get(1);
		private final Assignment cManyAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_1_0 = (Keyword)cManyAssignment_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		
		//Parameter:
		//	type=[core::Type|QualifiedName] many?="[]"? name=ID;
		public ParserRule getRule() { return rule; }

		//type=[core::Type|QualifiedName] many?="[]"? name=ID
		public Group getGroup() { return cGroup; }

		//type=[core::Type|QualifiedName]
		public Assignment getTypeAssignment_0() { return cTypeAssignment_0; }

		//[core::Type|QualifiedName]
		public CrossReference getTypeTypeCrossReference_0_0() { return cTypeTypeCrossReference_0_0; }

		//QualifiedName
		public RuleCall getTypeTypeQualifiedNameParserRuleCall_0_0_1() { return cTypeTypeQualifiedNameParserRuleCall_0_0_1; }

		//many?="[]"?
		public Assignment getManyAssignment_1() { return cManyAssignment_1; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_1_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_1_0; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
	}

	public class DelegateOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DelegateOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cDelegateOperationAction_0 = (Action)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Assignment cViewAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cViewDataViewCrossReference_1_0_0 = (CrossReference)cViewAssignment_1_0.eContents().get(0);
		private final RuleCall cViewDataViewIDTerminalRuleCall_1_0_0_1 = (RuleCall)cViewDataViewCrossReference_1_0_0.eContents().get(1);
		private final Assignment cManyAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0 = (Keyword)cManyAssignment_1_1.eContents().get(0);
		private final Assignment cRepositoryAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cRepositoryDaoCrossReference_2_0 = (CrossReference)cRepositoryAssignment_2.eContents().get(0);
		private final RuleCall cRepositoryDaoIDTerminalRuleCall_2_0_1 = (RuleCall)cRepositoryDaoCrossReference_2_0.eContents().get(1);
		private final Keyword cFullStopKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cOperationAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final CrossReference cOperationDaoOperationCrossReference_4_0_0 = (CrossReference)cOperationAssignment_4_0.eContents().get(0);
		private final RuleCall cOperationDaoOperationIDTerminalRuleCall_4_0_0_1 = (RuleCall)cOperationDaoOperationCrossReference_4_0_0.eContents().get(1);
		private final Group cGroup_4_1 = (Group)cAlternatives_4.eContents().get(1);
		private final Assignment cCrudOperationTypeAssignment_4_1_0 = (Assignment)cGroup_4_1.eContents().get(0);
		private final RuleCall cCrudOperationTypeCrudOperationTypeEnumRuleCall_4_1_0_0 = (RuleCall)cCrudOperationTypeAssignment_4_1_0.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cGroup_4_1.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_4_1_1_0 = (Keyword)cGroup_4_1_1.eContents().get(0);
		private final Assignment cViewParameterAssignment_4_1_1_1 = (Assignment)cGroup_4_1_1.eContents().get(1);
		private final CrossReference cViewParameterDataViewCrossReference_4_1_1_1_0 = (CrossReference)cViewParameterAssignment_4_1_1_1.eContents().get(0);
		private final RuleCall cViewParameterDataViewQualifiedNameParserRuleCall_4_1_1_1_0_1 = (RuleCall)cViewParameterDataViewCrossReference_4_1_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_4_1_1_2 = (Keyword)cGroup_4_1_1.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cAsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cNameAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_5_1_0 = (RuleCall)cNameAssignment_5_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cFilterKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cFilterAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cFilterExpressionParserRuleCall_6_2_0 = (RuleCall)cFilterAssignment_6_2.eContents().get(0);
		
		//DelegateOperation:
		//	{DelegateOperation} (view=[DataView] many?="[]"?)? repository=[Dao] "." (operation=[DaoOperation] |
		//	crudOperationType=CrudOperationType ("(" viewParameter=[DataView|QualifiedName] ")")?) ("as" name=ID)? ("filter" "="
		//	filter=Expression)?;
		public ParserRule getRule() { return rule; }

		//{DelegateOperation} (view=[DataView] many?="[]"?)? repository=[Dao] "." (operation=[DaoOperation] |
		//crudOperationType=CrudOperationType ("(" viewParameter=[DataView|QualifiedName] ")")?) ("as" name=ID)? ("filter" "="
		//filter=Expression)?
		public Group getGroup() { return cGroup; }

		//{DelegateOperation}
		public Action getDelegateOperationAction_0() { return cDelegateOperationAction_0; }

		//(view=[DataView] many?="[]"?)?
		public Group getGroup_1() { return cGroup_1; }

		//view=[DataView]
		public Assignment getViewAssignment_1_0() { return cViewAssignment_1_0; }

		//[DataView]
		public CrossReference getViewDataViewCrossReference_1_0_0() { return cViewDataViewCrossReference_1_0_0; }

		//ID
		public RuleCall getViewDataViewIDTerminalRuleCall_1_0_0_1() { return cViewDataViewIDTerminalRuleCall_1_0_0_1; }

		//many?="[]"?
		public Assignment getManyAssignment_1_1() { return cManyAssignment_1_1; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0; }

		//repository=[Dao]
		public Assignment getRepositoryAssignment_2() { return cRepositoryAssignment_2; }

		//[Dao]
		public CrossReference getRepositoryDaoCrossReference_2_0() { return cRepositoryDaoCrossReference_2_0; }

		//ID
		public RuleCall getRepositoryDaoIDTerminalRuleCall_2_0_1() { return cRepositoryDaoIDTerminalRuleCall_2_0_1; }

		//"."
		public Keyword getFullStopKeyword_3() { return cFullStopKeyword_3; }

		//operation=[DaoOperation] | crudOperationType=CrudOperationType ("(" viewParameter=[DataView|QualifiedName] ")")?
		public Alternatives getAlternatives_4() { return cAlternatives_4; }

		//operation=[DaoOperation]
		public Assignment getOperationAssignment_4_0() { return cOperationAssignment_4_0; }

		//[DaoOperation]
		public CrossReference getOperationDaoOperationCrossReference_4_0_0() { return cOperationDaoOperationCrossReference_4_0_0; }

		//ID
		public RuleCall getOperationDaoOperationIDTerminalRuleCall_4_0_0_1() { return cOperationDaoOperationIDTerminalRuleCall_4_0_0_1; }

		//crudOperationType=CrudOperationType ("(" viewParameter=[DataView|QualifiedName] ")")?
		public Group getGroup_4_1() { return cGroup_4_1; }

		//crudOperationType=CrudOperationType
		public Assignment getCrudOperationTypeAssignment_4_1_0() { return cCrudOperationTypeAssignment_4_1_0; }

		//CrudOperationType
		public RuleCall getCrudOperationTypeCrudOperationTypeEnumRuleCall_4_1_0_0() { return cCrudOperationTypeCrudOperationTypeEnumRuleCall_4_1_0_0; }

		//("(" viewParameter=[DataView|QualifiedName] ")")?
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_4_1_1_0() { return cLeftParenthesisKeyword_4_1_1_0; }

		//viewParameter=[DataView|QualifiedName]
		public Assignment getViewParameterAssignment_4_1_1_1() { return cViewParameterAssignment_4_1_1_1; }

		//[DataView|QualifiedName]
		public CrossReference getViewParameterDataViewCrossReference_4_1_1_1_0() { return cViewParameterDataViewCrossReference_4_1_1_1_0; }

		//QualifiedName
		public RuleCall getViewParameterDataViewQualifiedNameParserRuleCall_4_1_1_1_0_1() { return cViewParameterDataViewQualifiedNameParserRuleCall_4_1_1_1_0_1; }

		//")"
		public Keyword getRightParenthesisKeyword_4_1_1_2() { return cRightParenthesisKeyword_4_1_1_2; }

		//("as" name=ID)?
		public Group getGroup_5() { return cGroup_5; }

		//"as"
		public Keyword getAsKeyword_5_0() { return cAsKeyword_5_0; }

		//name=ID
		public Assignment getNameAssignment_5_1() { return cNameAssignment_5_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_5_1_0() { return cNameIDTerminalRuleCall_5_1_0; }

		//("filter" "=" filter=Expression)?
		public Group getGroup_6() { return cGroup_6; }

		//"filter"
		public Keyword getFilterKeyword_6_0() { return cFilterKeyword_6_0; }

		//"="
		public Keyword getEqualsSignKeyword_6_1() { return cEqualsSignKeyword_6_1; }

		//filter=Expression
		public Assignment getFilterAssignment_6_2() { return cFilterAssignment_6_2; }

		//Expression
		public RuleCall getFilterExpressionParserRuleCall_6_2_0() { return cFilterExpressionParserRuleCall_6_2_0; }
	}

	public class DaoOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DaoOperation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cQueryOperationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cOperationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//DaoOperation:
		//	QueryOperation | Operation;
		public ParserRule getRule() { return rule; }

		//QueryOperation | Operation
		public Alternatives getAlternatives() { return cAlternatives; }

		//QueryOperation
		public RuleCall getQueryOperationParserRuleCall_0() { return cQueryOperationParserRuleCall_0; }

		//Operation
		public RuleCall getOperationParserRuleCall_1() { return cOperationParserRuleCall_1; }
	}

	public class ValueObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValueObject");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cValueobjectKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cAttributesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cAttributesAttributeParserRuleCall_3_0 = (RuleCall)cAttributesAssignment_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//ValueObject:
		//	"valueobject" name=ID "{" attributes+=Attribute* "}";
		public ParserRule getRule() { return rule; }

		//"valueobject" name=ID "{" attributes+=Attribute* "}"
		public Group getGroup() { return cGroup; }

		//"valueobject"
		public Keyword getValueobjectKeyword_0() { return cValueobjectKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//attributes+=Attribute*
		public Assignment getAttributesAssignment_3() { return cAttributesAssignment_3; }

		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_3_0() { return cAttributesAttributeParserRuleCall_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}

	public class DataViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDataviewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cExtendsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cSuperTypeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cSuperTypeDataViewCrossReference_2_1_0 = (CrossReference)cSuperTypeAssignment_2_1.eContents().get(0);
		private final RuleCall cSuperTypeDataViewQualifiedNameParserRuleCall_2_1_0_1 = (RuleCall)cSuperTypeDataViewCrossReference_2_1_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cAttributesAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_4_0_0 = (RuleCall)cAttributesAssignment_4_0.eContents().get(0);
		private final Assignment cFeatureReferencesAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final RuleCall cFeatureReferencesFeatureReferenceParserRuleCall_4_1_0 = (RuleCall)cFeatureReferencesAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//DataView:
		//	"dataview" name=ID ("extends" superType=[DataView|QualifiedName])? "{" (attributes+=Attribute |
		//	featureReferences+=FeatureReference)* "}";
		public ParserRule getRule() { return rule; }

		//"dataview" name=ID ("extends" superType=[DataView|QualifiedName])? "{" (attributes+=Attribute |
		//featureReferences+=FeatureReference)* "}"
		public Group getGroup() { return cGroup; }

		//"dataview"
		public Keyword getDataviewKeyword_0() { return cDataviewKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//("extends" superType=[DataView|QualifiedName])?
		public Group getGroup_2() { return cGroup_2; }

		//"extends"
		public Keyword getExtendsKeyword_2_0() { return cExtendsKeyword_2_0; }

		//superType=[DataView|QualifiedName]
		public Assignment getSuperTypeAssignment_2_1() { return cSuperTypeAssignment_2_1; }

		//[DataView|QualifiedName]
		public CrossReference getSuperTypeDataViewCrossReference_2_1_0() { return cSuperTypeDataViewCrossReference_2_1_0; }

		//QualifiedName
		public RuleCall getSuperTypeDataViewQualifiedNameParserRuleCall_2_1_0_1() { return cSuperTypeDataViewQualifiedNameParserRuleCall_2_1_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//(attributes+=Attribute | featureReferences+=FeatureReference)*
		public Alternatives getAlternatives_4() { return cAlternatives_4; }

		//attributes+=Attribute
		public Assignment getAttributesAssignment_4_0() { return cAttributesAssignment_4_0; }

		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_4_0_0() { return cAttributesAttributeParserRuleCall_4_0_0; }

		//featureReferences+=FeatureReference
		public Assignment getFeatureReferencesAssignment_4_1() { return cFeatureReferencesAssignment_4_1; }

		//FeatureReference
		public RuleCall getFeatureReferencesFeatureReferenceParserRuleCall_4_1_0() { return cFeatureReferencesFeatureReferenceParserRuleCall_4_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class FeatureReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FeatureReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSourceAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cSourceEntityCrossReference_0_0 = (CrossReference)cSourceAssignment_0.eContents().get(0);
		private final RuleCall cSourceEntityIDTerminalRuleCall_0_0_1 = (RuleCall)cSourceEntityCrossReference_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
		private final Alternatives cAlternatives_1_0_1 = (Alternatives)cGroup_1_0.eContents().get(1);
		private final Group cGroup_1_0_1_0 = (Group)cAlternatives_1_0_1.eContents().get(0);
		private final Assignment cAttributeAssignment_1_0_1_0_0 = (Assignment)cGroup_1_0_1_0.eContents().get(0);
		private final CrossReference cAttributeAttributeCrossReference_1_0_1_0_0_0 = (CrossReference)cAttributeAssignment_1_0_1_0_0.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1_0_0_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0_1_0_0_0.eContents().get(1);
		private final Group cGroup_1_0_1_0_1 = (Group)cGroup_1_0_1_0.eContents().get(1);
		private final Keyword cLessThanSignKeyword_1_0_1_0_1_0 = (Keyword)cGroup_1_0_1_0_1.eContents().get(0);
		private final Assignment cViewAssignment_1_0_1_0_1_1 = (Assignment)cGroup_1_0_1_0_1.eContents().get(1);
		private final CrossReference cViewDataViewCrossReference_1_0_1_0_1_1_0 = (CrossReference)cViewAssignment_1_0_1_0_1_1.eContents().get(0);
		private final RuleCall cViewDataViewQualifiedNameParserRuleCall_1_0_1_0_1_1_0_1 = (RuleCall)cViewDataViewCrossReference_1_0_1_0_1_1_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_1_0_1_0_1_2 = (Keyword)cGroup_1_0_1_0_1.eContents().get(2);
		private final Group cGroup_1_0_1_0_2 = (Group)cGroup_1_0_1_0.eContents().get(2);
		private final Keyword cAsKeyword_1_0_1_0_2_0 = (Keyword)cGroup_1_0_1_0_2.eContents().get(0);
		private final Assignment cNameAssignment_1_0_1_0_2_1 = (Assignment)cGroup_1_0_1_0_2.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0_1_0_2_1_0 = (RuleCall)cNameAssignment_1_0_1_0_2_1.eContents().get(0);
		private final Assignment cAllAssignment_1_0_1_1 = (Assignment)cAlternatives_1_0_1.eContents().get(1);
		private final Keyword cAllAllKeyword_1_0_1_1_0 = (Keyword)cAllAssignment_1_0_1_1.eContents().get(0);
		private final Assignment cAllAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cAllFullStopAsteriskKeyword_1_1_0 = (Keyword)cAllAssignment_1_1.eContents().get(0);
		private final Assignment cPropertiesAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cPropertiesAttributePropertyParserRuleCall_2_0 = (RuleCall)cPropertiesAssignment_2.eContents().get(0);
		
		//FeatureReference:
		//	source=[Entity] ("." (attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all") |
		//	all?=".*") properties+=AttributeProperty*;
		public ParserRule getRule() { return rule; }

		//source=[Entity] ("." (attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all") |
		//all?=".*") properties+=AttributeProperty*
		public Group getGroup() { return cGroup; }

		//source=[Entity]
		public Assignment getSourceAssignment_0() { return cSourceAssignment_0; }

		//[Entity]
		public CrossReference getSourceEntityCrossReference_0_0() { return cSourceEntityCrossReference_0_0; }

		//ID
		public RuleCall getSourceEntityIDTerminalRuleCall_0_0_1() { return cSourceEntityIDTerminalRuleCall_0_0_1; }

		//"." (attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all") | all?=".*"
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//"." (attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all")
		public Group getGroup_1_0() { return cGroup_1_0; }

		//"."
		public Keyword getFullStopKeyword_1_0_0() { return cFullStopKeyword_1_0_0; }

		//attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all"
		public Alternatives getAlternatives_1_0_1() { return cAlternatives_1_0_1; }

		//attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)?
		public Group getGroup_1_0_1_0() { return cGroup_1_0_1_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1_0_1_0_0() { return cAttributeAssignment_1_0_1_0_0; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0_1_0_0_0() { return cAttributeAttributeCrossReference_1_0_1_0_0_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1_0_0_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1_0_0_0_1; }

		//("<" view=[DataView|QualifiedName] ">")?
		public Group getGroup_1_0_1_0_1() { return cGroup_1_0_1_0_1; }

		//"<"
		public Keyword getLessThanSignKeyword_1_0_1_0_1_0() { return cLessThanSignKeyword_1_0_1_0_1_0; }

		//view=[DataView|QualifiedName]
		public Assignment getViewAssignment_1_0_1_0_1_1() { return cViewAssignment_1_0_1_0_1_1; }

		//[DataView|QualifiedName]
		public CrossReference getViewDataViewCrossReference_1_0_1_0_1_1_0() { return cViewDataViewCrossReference_1_0_1_0_1_1_0; }

		//QualifiedName
		public RuleCall getViewDataViewQualifiedNameParserRuleCall_1_0_1_0_1_1_0_1() { return cViewDataViewQualifiedNameParserRuleCall_1_0_1_0_1_1_0_1; }

		//">"
		public Keyword getGreaterThanSignKeyword_1_0_1_0_1_2() { return cGreaterThanSignKeyword_1_0_1_0_1_2; }

		//("as" name=ID)?
		public Group getGroup_1_0_1_0_2() { return cGroup_1_0_1_0_2; }

		//"as"
		public Keyword getAsKeyword_1_0_1_0_2_0() { return cAsKeyword_1_0_1_0_2_0; }

		//name=ID
		public Assignment getNameAssignment_1_0_1_0_2_1() { return cNameAssignment_1_0_1_0_2_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_1_0_2_1_0() { return cNameIDTerminalRuleCall_1_0_1_0_2_1_0; }

		//all?="all"
		public Assignment getAllAssignment_1_0_1_1() { return cAllAssignment_1_0_1_1; }

		//"all"
		public Keyword getAllAllKeyword_1_0_1_1_0() { return cAllAllKeyword_1_0_1_1_0; }

		//all?=".*"
		public Assignment getAllAssignment_1_1() { return cAllAssignment_1_1; }

		//".*"
		public Keyword getAllFullStopAsteriskKeyword_1_1_0() { return cAllFullStopAsteriskKeyword_1_1_0; }

		//properties+=AttributeProperty*
		public Assignment getPropertiesAssignment_2() { return cPropertiesAssignment_2; }

		//AttributeProperty
		public RuleCall getPropertiesAttributePropertyParserRuleCall_2_0() { return cPropertiesAttributePropertyParserRuleCall_2_0; }
	}

	public class MapperElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Mapper");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cMapperKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cMapsKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cLeftAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cLeftComplexTypeCrossReference_3_0 = (CrossReference)cLeftAssignment_3.eContents().get(0);
		private final RuleCall cLeftComplexTypeIDTerminalRuleCall_3_0_1 = (RuleCall)cLeftComplexTypeCrossReference_3_0.eContents().get(1);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cBiDirectionalAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final Keyword cBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_4_0_0 = (Keyword)cBiDirectionalAssignment_4_0.eContents().get(0);
		private final Assignment cToLeftAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final Keyword cToLeftLessThanSignHyphenMinusKeyword_4_1_0 = (Keyword)cToLeftAssignment_4_1.eContents().get(0);
		private final Assignment cToRightAssignment_4_2 = (Assignment)cAlternatives_4.eContents().get(2);
		private final Keyword cToRightHyphenMinusGreaterThanSignKeyword_4_2_0 = (Keyword)cToRightAssignment_4_2.eContents().get(0);
		private final Assignment cRightAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final CrossReference cRightComplexTypeCrossReference_5_0 = (CrossReference)cRightAssignment_5.eContents().get(0);
		private final RuleCall cRightComplexTypeIDTerminalRuleCall_5_0_1 = (RuleCall)cRightComplexTypeCrossReference_5_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cPropertyMappingsAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cPropertyMappingsPropertyMappingParserRuleCall_7_0 = (RuleCall)cPropertyMappingsAssignment_7.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//Mapper:
		//	"mapper" name=ID "maps" left=[ComplexType] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[ComplexType]
		//	"{" propertyMappings+=PropertyMapping* "}";
		public ParserRule getRule() { return rule; }

		//"mapper" name=ID "maps" left=[ComplexType] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[ComplexType] "{"
		//propertyMappings+=PropertyMapping* "}"
		public Group getGroup() { return cGroup; }

		//"mapper"
		public Keyword getMapperKeyword_0() { return cMapperKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"maps"
		public Keyword getMapsKeyword_2() { return cMapsKeyword_2; }

		//left=[ComplexType]
		public Assignment getLeftAssignment_3() { return cLeftAssignment_3; }

		//[ComplexType]
		public CrossReference getLeftComplexTypeCrossReference_3_0() { return cLeftComplexTypeCrossReference_3_0; }

		//ID
		public RuleCall getLeftComplexTypeIDTerminalRuleCall_3_0_1() { return cLeftComplexTypeIDTerminalRuleCall_3_0_1; }

		//biDirectional?="<->" | toLeft?="<-" | toRight?="->"
		public Alternatives getAlternatives_4() { return cAlternatives_4; }

		//biDirectional?="<->"
		public Assignment getBiDirectionalAssignment_4_0() { return cBiDirectionalAssignment_4_0; }

		//"<->"
		public Keyword getBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_4_0_0() { return cBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_4_0_0; }

		//toLeft?="<-"
		public Assignment getToLeftAssignment_4_1() { return cToLeftAssignment_4_1; }

		//"<-"
		public Keyword getToLeftLessThanSignHyphenMinusKeyword_4_1_0() { return cToLeftLessThanSignHyphenMinusKeyword_4_1_0; }

		//toRight?="->"
		public Assignment getToRightAssignment_4_2() { return cToRightAssignment_4_2; }

		//"->"
		public Keyword getToRightHyphenMinusGreaterThanSignKeyword_4_2_0() { return cToRightHyphenMinusGreaterThanSignKeyword_4_2_0; }

		//right=[ComplexType]
		public Assignment getRightAssignment_5() { return cRightAssignment_5; }

		//[ComplexType]
		public CrossReference getRightComplexTypeCrossReference_5_0() { return cRightComplexTypeCrossReference_5_0; }

		//ID
		public RuleCall getRightComplexTypeIDTerminalRuleCall_5_0_1() { return cRightComplexTypeIDTerminalRuleCall_5_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }

		//propertyMappings+=PropertyMapping*
		public Assignment getPropertyMappingsAssignment_7() { return cPropertyMappingsAssignment_7; }

		//PropertyMapping
		public RuleCall getPropertyMappingsPropertyMappingParserRuleCall_7_0() { return cPropertyMappingsPropertyMappingParserRuleCall_7_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
	}

	public class PropertyMappingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyMapping");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cLeftAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cLeftAttributeCrossReference_0_0 = (CrossReference)cLeftAssignment_0.eContents().get(0);
		private final RuleCall cLeftAttributeIDTerminalRuleCall_0_0_1 = (RuleCall)cLeftAttributeCrossReference_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cBiDirectionalAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_1_0_0 = (Keyword)cBiDirectionalAssignment_1_0.eContents().get(0);
		private final Assignment cToLeftAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cToLeftLessThanSignHyphenMinusKeyword_1_1_0 = (Keyword)cToLeftAssignment_1_1.eContents().get(0);
		private final Assignment cToRightAssignment_1_2 = (Assignment)cAlternatives_1.eContents().get(2);
		private final Keyword cToRightHyphenMinusGreaterThanSignKeyword_1_2_0 = (Keyword)cToRightAssignment_1_2.eContents().get(0);
		private final Assignment cRightAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cRightAttributeCrossReference_2_0 = (CrossReference)cRightAssignment_2.eContents().get(0);
		private final RuleCall cRightAttributeIDTerminalRuleCall_2_0_1 = (RuleCall)cRightAttributeCrossReference_2_0.eContents().get(1);
		
		//PropertyMapping:
		//	left=[Attribute] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[Attribute];
		public ParserRule getRule() { return rule; }

		//left=[Attribute] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[Attribute]
		public Group getGroup() { return cGroup; }

		//left=[Attribute]
		public Assignment getLeftAssignment_0() { return cLeftAssignment_0; }

		//[Attribute]
		public CrossReference getLeftAttributeCrossReference_0_0() { return cLeftAttributeCrossReference_0_0; }

		//ID
		public RuleCall getLeftAttributeIDTerminalRuleCall_0_0_1() { return cLeftAttributeIDTerminalRuleCall_0_0_1; }

		//biDirectional?="<->" | toLeft?="<-" | toRight?="->"
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//biDirectional?="<->"
		public Assignment getBiDirectionalAssignment_1_0() { return cBiDirectionalAssignment_1_0; }

		//"<->"
		public Keyword getBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_1_0_0() { return cBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_1_0_0; }

		//toLeft?="<-"
		public Assignment getToLeftAssignment_1_1() { return cToLeftAssignment_1_1; }

		//"<-"
		public Keyword getToLeftLessThanSignHyphenMinusKeyword_1_1_0() { return cToLeftLessThanSignHyphenMinusKeyword_1_1_0; }

		//toRight?="->"
		public Assignment getToRightAssignment_1_2() { return cToRightAssignment_1_2; }

		//"->"
		public Keyword getToRightHyphenMinusGreaterThanSignKeyword_1_2_0() { return cToRightHyphenMinusGreaterThanSignKeyword_1_2_0; }

		//right=[Attribute]
		public Assignment getRightAssignment_2() { return cRightAssignment_2; }

		//[Attribute]
		public CrossReference getRightAttributeCrossReference_2_0() { return cRightAttributeCrossReference_2_0; }

		//ID
		public RuleCall getRightAttributeIDTerminalRuleCall_2_0_1() { return cRightAttributeIDTerminalRuleCall_2_0_1; }
	}

	public class EntityElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Entity");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEntityKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cExtendsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cSuperTypeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cSuperTypeEntityCrossReference_2_1_0 = (CrossReference)cSuperTypeAssignment_2_1.eContents().get(0);
		private final RuleCall cSuperTypeEntityQualifiedNameParserRuleCall_2_1_0_1 = (RuleCall)cSuperTypeEntityCrossReference_2_1_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cAttributesAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_4_0_0 = (RuleCall)cAttributesAssignment_4_0.eContents().get(0);
		private final Assignment cAttributeGroupsAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final RuleCall cAttributeGroupsAttributeGroupParserRuleCall_4_1_0 = (RuleCall)cAttributeGroupsAssignment_4_1.eContents().get(0);
		private final Assignment cConditionsBlockAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cConditionsBlockConditionsBlockParserRuleCall_5_0 = (RuleCall)cConditionsBlockAssignment_5.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//Entity:
		//	"entity" name=ID ("extends" superType=[Entity|QualifiedName])? "{" (attributes+=Attribute |
		//	attributeGroups+=AttributeGroup)* conditionsBlock=ConditionsBlock? "}";
		public ParserRule getRule() { return rule; }

		//"entity" name=ID ("extends" superType=[Entity|QualifiedName])? "{" (attributes+=Attribute |
		//attributeGroups+=AttributeGroup)* conditionsBlock=ConditionsBlock? "}"
		public Group getGroup() { return cGroup; }

		//"entity"
		public Keyword getEntityKeyword_0() { return cEntityKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//("extends" superType=[Entity|QualifiedName])?
		public Group getGroup_2() { return cGroup_2; }

		//"extends"
		public Keyword getExtendsKeyword_2_0() { return cExtendsKeyword_2_0; }

		//superType=[Entity|QualifiedName]
		public Assignment getSuperTypeAssignment_2_1() { return cSuperTypeAssignment_2_1; }

		//[Entity|QualifiedName]
		public CrossReference getSuperTypeEntityCrossReference_2_1_0() { return cSuperTypeEntityCrossReference_2_1_0; }

		//QualifiedName
		public RuleCall getSuperTypeEntityQualifiedNameParserRuleCall_2_1_0_1() { return cSuperTypeEntityQualifiedNameParserRuleCall_2_1_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//(attributes+=Attribute | attributeGroups+=AttributeGroup)*
		public Alternatives getAlternatives_4() { return cAlternatives_4; }

		//attributes+=Attribute
		public Assignment getAttributesAssignment_4_0() { return cAttributesAssignment_4_0; }

		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_4_0_0() { return cAttributesAttributeParserRuleCall_4_0_0; }

		//attributeGroups+=AttributeGroup
		public Assignment getAttributeGroupsAssignment_4_1() { return cAttributeGroupsAssignment_4_1; }

		//AttributeGroup
		public RuleCall getAttributeGroupsAttributeGroupParserRuleCall_4_1_0() { return cAttributeGroupsAttributeGroupParserRuleCall_4_1_0; }

		//conditionsBlock=ConditionsBlock?
		public Assignment getConditionsBlockAssignment_5() { return cConditionsBlockAssignment_5; }

		//ConditionsBlock
		public RuleCall getConditionsBlockConditionsBlockParserRuleCall_5_0() { return cConditionsBlockConditionsBlockParserRuleCall_5_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
	}

	public class AttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Attribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAttributeAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cIdentifierAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cIdentifierIdKeyword_1_0_0 = (Keyword)cIdentifierAssignment_1_0.eContents().get(0);
		private final Assignment cVersionAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cVersionVersionKeyword_1_1_0 = (Keyword)cVersionAssignment_1_1.eContents().get(0);
		private final Assignment cCompositionAssignment_1_2 = (Assignment)cAlternatives_1.eContents().get(2);
		private final Keyword cCompositionCompositionKeyword_1_2_0 = (Keyword)cCompositionAssignment_1_2.eContents().get(0);
		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cTypeDataTypeAndTypeParameterParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
		private final Assignment cManyAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_3_0 = (Keyword)cManyAssignment_3.eContents().get(0);
		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cNameIDTerminalRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cEqualsSignKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cIncrementerReferenceAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cIncrementerReferenceIncrementerReferenceParserRuleCall_5_1_0_0 = (RuleCall)cIncrementerReferenceAssignment_5_1_0.eContents().get(0);
		private final Assignment cDefaultValueAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cDefaultValueSTRINGTerminalRuleCall_5_1_1_0 = (RuleCall)cDefaultValueAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cOppositeofKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOppositeAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final CrossReference cOppositeAttributeCrossReference_6_1_0 = (CrossReference)cOppositeAssignment_6_1.eContents().get(0);
		private final RuleCall cOppositeAttributeIDTerminalRuleCall_6_1_0_1 = (RuleCall)cOppositeAttributeCrossReference_6_1_0.eContents().get(1);
		private final Assignment cAttributPropertiesAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cAttributPropertiesAttributePropertyParserRuleCall_7_0 = (RuleCall)cAttributPropertiesAssignment_7.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cOrderbyKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cSortOrderAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final CrossReference cSortOrderAttributeGroupCrossReference_8_1_0 = (CrossReference)cSortOrderAssignment_8_1.eContents().get(0);
		private final RuleCall cSortOrderAttributeGroupIDTerminalRuleCall_8_1_0_1 = (RuleCall)cSortOrderAttributeGroupCrossReference_8_1_0.eContents().get(1);
		
		//Attribute:
		//	{Attribute} (identifier?="id" | version?="version" | composition?="composition")? type=DataTypeAndTypeParameter
		//	many?="[]"? name=ID ("=" (incrementerReference=IncrementerReference | defaultValue=STRING))? ("oppositeof"
		//	opposite=[Attribute])? attributProperties+=AttributeProperty* ("orderby" sortOrder=[AttributeGroup])?;
		public ParserRule getRule() { return rule; }

		//{Attribute} (identifier?="id" | version?="version" | composition?="composition")? type=DataTypeAndTypeParameter
		//many?="[]"? name=ID ("=" (incrementerReference=IncrementerReference | defaultValue=STRING))? ("oppositeof"
		//opposite=[Attribute])? attributProperties+=AttributeProperty* ("orderby" sortOrder=[AttributeGroup])?
		public Group getGroup() { return cGroup; }

		//{Attribute}
		public Action getAttributeAction_0() { return cAttributeAction_0; }

		//(identifier?="id" | version?="version" | composition?="composition")?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//identifier?="id"
		public Assignment getIdentifierAssignment_1_0() { return cIdentifierAssignment_1_0; }

		//"id"
		public Keyword getIdentifierIdKeyword_1_0_0() { return cIdentifierIdKeyword_1_0_0; }

		//version?="version"
		public Assignment getVersionAssignment_1_1() { return cVersionAssignment_1_1; }

		//"version"
		public Keyword getVersionVersionKeyword_1_1_0() { return cVersionVersionKeyword_1_1_0; }

		//composition?="composition"
		public Assignment getCompositionAssignment_1_2() { return cCompositionAssignment_1_2; }

		//"composition"
		public Keyword getCompositionCompositionKeyword_1_2_0() { return cCompositionCompositionKeyword_1_2_0; }

		//type=DataTypeAndTypeParameter
		public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }

		//DataTypeAndTypeParameter
		public RuleCall getTypeDataTypeAndTypeParameterParserRuleCall_2_0() { return cTypeDataTypeAndTypeParameterParserRuleCall_2_0; }

		//many?="[]"?
		public Assignment getManyAssignment_3() { return cManyAssignment_3; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_3_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_3_0; }

		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }

		//("=" (incrementerReference=IncrementerReference | defaultValue=STRING))?
		public Group getGroup_5() { return cGroup_5; }

		//"="
		public Keyword getEqualsSignKeyword_5_0() { return cEqualsSignKeyword_5_0; }

		//incrementerReference=IncrementerReference | defaultValue=STRING
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }

		//incrementerReference=IncrementerReference
		public Assignment getIncrementerReferenceAssignment_5_1_0() { return cIncrementerReferenceAssignment_5_1_0; }

		//IncrementerReference
		public RuleCall getIncrementerReferenceIncrementerReferenceParserRuleCall_5_1_0_0() { return cIncrementerReferenceIncrementerReferenceParserRuleCall_5_1_0_0; }

		//defaultValue=STRING
		public Assignment getDefaultValueAssignment_5_1_1() { return cDefaultValueAssignment_5_1_1; }

		//STRING
		public RuleCall getDefaultValueSTRINGTerminalRuleCall_5_1_1_0() { return cDefaultValueSTRINGTerminalRuleCall_5_1_1_0; }

		//("oppositeof" opposite=[Attribute])?
		public Group getGroup_6() { return cGroup_6; }

		//"oppositeof"
		public Keyword getOppositeofKeyword_6_0() { return cOppositeofKeyword_6_0; }

		//opposite=[Attribute]
		public Assignment getOppositeAssignment_6_1() { return cOppositeAssignment_6_1; }

		//[Attribute]
		public CrossReference getOppositeAttributeCrossReference_6_1_0() { return cOppositeAttributeCrossReference_6_1_0; }

		//ID
		public RuleCall getOppositeAttributeIDTerminalRuleCall_6_1_0_1() { return cOppositeAttributeIDTerminalRuleCall_6_1_0_1; }

		//attributProperties+=AttributeProperty*
		public Assignment getAttributPropertiesAssignment_7() { return cAttributPropertiesAssignment_7; }

		//AttributeProperty
		public RuleCall getAttributPropertiesAttributePropertyParserRuleCall_7_0() { return cAttributPropertiesAttributePropertyParserRuleCall_7_0; }

		//("orderby" sortOrder=[AttributeGroup])?
		public Group getGroup_8() { return cGroup_8; }

		//"orderby"
		public Keyword getOrderbyKeyword_8_0() { return cOrderbyKeyword_8_0; }

		//sortOrder=[AttributeGroup]
		public Assignment getSortOrderAssignment_8_1() { return cSortOrderAssignment_8_1; }

		//[AttributeGroup]
		public CrossReference getSortOrderAttributeGroupCrossReference_8_1_0() { return cSortOrderAttributeGroupCrossReference_8_1_0; }

		//ID
		public RuleCall getSortOrderAttributeGroupIDTerminalRuleCall_8_1_0_1() { return cSortOrderAttributeGroupIDTerminalRuleCall_8_1_0_1; }
	}

	public class AttributeFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeFlag");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cExpressionFlagParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDerivedFlagParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cTransientFlagParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//AttributeFlag:
		//	ExpressionFlag | DerivedFlag | TransientFlag;
		public ParserRule getRule() { return rule; }

		//ExpressionFlag | DerivedFlag | TransientFlag
		public Alternatives getAlternatives() { return cAlternatives; }

		//ExpressionFlag
		public RuleCall getExpressionFlagParserRuleCall_0() { return cExpressionFlagParserRuleCall_0; }

		//DerivedFlag
		public RuleCall getDerivedFlagParserRuleCall_1() { return cDerivedFlagParserRuleCall_1; }

		//TransientFlag
		public RuleCall getTransientFlagParserRuleCall_2() { return cTransientFlagParserRuleCall_2; }
	}

	public class ExpressionFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExpressionFlag");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cRequiredFlagParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cReadOnlyFlagParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cAvailableFlagParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//ExpressionFlag:
		//	RequiredFlag | ReadOnlyFlag | AvailableFlag;
		public ParserRule getRule() { return rule; }

		//RequiredFlag | ReadOnlyFlag | AvailableFlag
		public Alternatives getAlternatives() { return cAlternatives; }

		//RequiredFlag
		public RuleCall getRequiredFlagParserRuleCall_0() { return cRequiredFlagParserRuleCall_0; }

		//ReadOnlyFlag
		public RuleCall getReadOnlyFlagParserRuleCall_1() { return cReadOnlyFlagParserRuleCall_1; }

		//AvailableFlag
		public RuleCall getAvailableFlagParserRuleCall_2() { return cAvailableFlagParserRuleCall_2; }
	}

	public class RequiredFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RequiredFlag");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRequiredKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionEqualityExprParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//RequiredFlag:
		//	"required" "=" expression=EqualityExpr;
		public ParserRule getRule() { return rule; }

		//"required" "=" expression=EqualityExpr
		public Group getGroup() { return cGroup; }

		//"required"
		public Keyword getRequiredKeyword_0() { return cRequiredKeyword_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=EqualityExpr
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//EqualityExpr
		public RuleCall getExpressionEqualityExprParserRuleCall_2_0() { return cExpressionEqualityExprParserRuleCall_2_0; }
	}

	public class ReadOnlyFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReadOnlyFlag");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cReadonlyKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionEqualityExprParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//ReadOnlyFlag:
		//	"readonly" "=" expression=EqualityExpr;
		public ParserRule getRule() { return rule; }

		//"readonly" "=" expression=EqualityExpr
		public Group getGroup() { return cGroup; }

		//"readonly"
		public Keyword getReadonlyKeyword_0() { return cReadonlyKeyword_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=EqualityExpr
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//EqualityExpr
		public RuleCall getExpressionEqualityExprParserRuleCall_2_0() { return cExpressionEqualityExprParserRuleCall_2_0; }
	}

	public class AvailableFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AvailableFlag");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAvailableKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionEqualityExprParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//AvailableFlag:
		//	"available" "=" expression=EqualityExpr;
		public ParserRule getRule() { return rule; }

		//"available" "=" expression=EqualityExpr
		public Group getGroup() { return cGroup; }

		//"available"
		public Keyword getAvailableKeyword_0() { return cAvailableKeyword_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=EqualityExpr
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//EqualityExpr
		public RuleCall getExpressionEqualityExprParserRuleCall_2_0() { return cExpressionEqualityExprParserRuleCall_2_0; }
	}

	public class DerivedFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DerivedFlag");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDerivedKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBoolLiteralParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//DerivedFlag:
		//	"derived" "=" expression=BoolLiteral;
		public ParserRule getRule() { return rule; }

		//"derived" "=" expression=BoolLiteral
		public Group getGroup() { return cGroup; }

		//"derived"
		public Keyword getDerivedKeyword_0() { return cDerivedKeyword_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=BoolLiteral
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BoolLiteral
		public RuleCall getExpressionBoolLiteralParserRuleCall_2_0() { return cExpressionBoolLiteralParserRuleCall_2_0; }
	}

	public class TransientFlagElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TransientFlag");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cTransientKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBoolLiteralParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//TransientFlag:
		//	"transient" "=" expression=BoolLiteral;
		public ParserRule getRule() { return rule; }

		//"transient" "=" expression=BoolLiteral
		public Group getGroup() { return cGroup; }

		//"transient"
		public Keyword getTransientKeyword_0() { return cTransientKeyword_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=BoolLiteral
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BoolLiteral
		public RuleCall getExpressionBoolLiteralParserRuleCall_2_0() { return cExpressionBoolLiteralParserRuleCall_2_0; }
	}

	public class AttributePropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeProperty");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAttributeFlagParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cAttributeValidationPropertyParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cAttributeTextPropertyParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//AttributeProperty:
		//	AttributeFlag | AttributeValidationProperty | AttributeTextProperty;
		public ParserRule getRule() { return rule; }

		//AttributeFlag | AttributeValidationProperty | AttributeTextProperty
		public Alternatives getAlternatives() { return cAlternatives; }

		//AttributeFlag
		public RuleCall getAttributeFlagParserRuleCall_0() { return cAttributeFlagParserRuleCall_0; }

		//AttributeValidationProperty
		public RuleCall getAttributeValidationPropertyParserRuleCall_1() { return cAttributeValidationPropertyParserRuleCall_1; }

		//AttributeTextProperty
		public RuleCall getAttributeTextPropertyParserRuleCall_2() { return cAttributeTextPropertyParserRuleCall_2; }
	}

	public class AttributeValidationPropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeValidationProperty");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cConstraintsKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cConstraintsAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cConstraintsConstraintParserRuleCall_0_2_0 = (RuleCall)cConstraintsAssignment_0_2.eContents().get(0);
		private final Group cGroup_0_3 = (Group)cGroup_0.eContents().get(3);
		private final Keyword cCommaKeyword_0_3_0 = (Keyword)cGroup_0_3.eContents().get(0);
		private final Assignment cConstraintsAssignment_0_3_1 = (Assignment)cGroup_0_3.eContents().get(1);
		private final RuleCall cConstraintsConstraintParserRuleCall_0_3_1_0 = (RuleCall)cConstraintsAssignment_0_3_1.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Keyword cFormatKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cFormatAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cFormatValidatorReferenceParserRuleCall_1_2_0 = (RuleCall)cFormatAssignment_1_2.eContents().get(0);
		
		//AttributeValidationProperty:
		//	"constraints" "=" constraints+=Constraint ("," constraints+=Constraint)* | "format" "=" format=ValidatorReference;
		public ParserRule getRule() { return rule; }

		//"constraints" "=" constraints+=Constraint ("," constraints+=Constraint)* | "format" "=" format=ValidatorReference
		public Alternatives getAlternatives() { return cAlternatives; }

		//"constraints" "=" constraints+=Constraint ("," constraints+=Constraint)*
		public Group getGroup_0() { return cGroup_0; }

		//"constraints"
		public Keyword getConstraintsKeyword_0_0() { return cConstraintsKeyword_0_0; }

		//"="
		public Keyword getEqualsSignKeyword_0_1() { return cEqualsSignKeyword_0_1; }

		//constraints+=Constraint
		public Assignment getConstraintsAssignment_0_2() { return cConstraintsAssignment_0_2; }

		//Constraint
		public RuleCall getConstraintsConstraintParserRuleCall_0_2_0() { return cConstraintsConstraintParserRuleCall_0_2_0; }

		//("," constraints+=Constraint)*
		public Group getGroup_0_3() { return cGroup_0_3; }

		//","
		public Keyword getCommaKeyword_0_3_0() { return cCommaKeyword_0_3_0; }

		//constraints+=Constraint
		public Assignment getConstraintsAssignment_0_3_1() { return cConstraintsAssignment_0_3_1; }

		//Constraint
		public RuleCall getConstraintsConstraintParserRuleCall_0_3_1_0() { return cConstraintsConstraintParserRuleCall_0_3_1_0; }

		//"format" "=" format=ValidatorReference
		public Group getGroup_1() { return cGroup_1; }

		//"format"
		public Keyword getFormatKeyword_1_0() { return cFormatKeyword_1_0; }

		//"="
		public Keyword getEqualsSignKeyword_1_1() { return cEqualsSignKeyword_1_1; }

		//format=ValidatorReference
		public Assignment getFormatAssignment_1_2() { return cFormatAssignment_1_2; }

		//ValidatorReference
		public RuleCall getFormatValidatorReferenceParserRuleCall_1_2_0() { return cFormatValidatorReferenceParserRuleCall_1_2_0; }
	}

	public class AttributeTextPropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeTextProperty");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cTitleKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cLabelTextAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cLabelTextSTRINGTerminalRuleCall_0_2_0 = (RuleCall)cLabelTextAssignment_0_2.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Keyword cDescriptionKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cTooltipTextAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cTooltipTextSTRINGTerminalRuleCall_1_2_0 = (RuleCall)cTooltipTextAssignment_1_2.eContents().get(0);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Keyword cUnitKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Alternatives cAlternatives_2_2 = (Alternatives)cGroup_2.eContents().get(2);
		private final Assignment cUnitTextAssignment_2_2_0 = (Assignment)cAlternatives_2_2.eContents().get(0);
		private final RuleCall cUnitTextSTRINGTerminalRuleCall_2_2_0_0 = (RuleCall)cUnitTextAssignment_2_2_0.eContents().get(0);
		private final Assignment cUnitAttributeAssignment_2_2_1 = (Assignment)cAlternatives_2_2.eContents().get(1);
		private final CrossReference cUnitAttributeAttributeCrossReference_2_2_1_0 = (CrossReference)cUnitAttributeAssignment_2_2_1.eContents().get(0);
		private final RuleCall cUnitAttributeAttributeIDTerminalRuleCall_2_2_1_0_1 = (RuleCall)cUnitAttributeAttributeCrossReference_2_2_1_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cAlternatives.eContents().get(3);
		private final Keyword cHstoreKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cHstoreColumnAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cHstoreColumnSTRINGTerminalRuleCall_3_2_0 = (RuleCall)cHstoreColumnAssignment_3_2.eContents().get(0);
		
		//AttributeTextProperty:
		//	"title" "=" labelText=STRING | "description" "=" tooltipText=STRING | "unit" "=" (unitText=STRING |
		//	unitAttribute=[Attribute]) | "hstore" "=" hstoreColumn=STRING;
		public ParserRule getRule() { return rule; }

		//"title" "=" labelText=STRING | "description" "=" tooltipText=STRING | "unit" "=" (unitText=STRING |
		//unitAttribute=[Attribute]) | "hstore" "=" hstoreColumn=STRING
		public Alternatives getAlternatives() { return cAlternatives; }

		//"title" "=" labelText=STRING
		public Group getGroup_0() { return cGroup_0; }

		//"title"
		public Keyword getTitleKeyword_0_0() { return cTitleKeyword_0_0; }

		//"="
		public Keyword getEqualsSignKeyword_0_1() { return cEqualsSignKeyword_0_1; }

		//labelText=STRING
		public Assignment getLabelTextAssignment_0_2() { return cLabelTextAssignment_0_2; }

		//STRING
		public RuleCall getLabelTextSTRINGTerminalRuleCall_0_2_0() { return cLabelTextSTRINGTerminalRuleCall_0_2_0; }

		//"description" "=" tooltipText=STRING
		public Group getGroup_1() { return cGroup_1; }

		//"description"
		public Keyword getDescriptionKeyword_1_0() { return cDescriptionKeyword_1_0; }

		//"="
		public Keyword getEqualsSignKeyword_1_1() { return cEqualsSignKeyword_1_1; }

		//tooltipText=STRING
		public Assignment getTooltipTextAssignment_1_2() { return cTooltipTextAssignment_1_2; }

		//STRING
		public RuleCall getTooltipTextSTRINGTerminalRuleCall_1_2_0() { return cTooltipTextSTRINGTerminalRuleCall_1_2_0; }

		//"unit" "=" (unitText=STRING | unitAttribute=[Attribute])
		public Group getGroup_2() { return cGroup_2; }

		//"unit"
		public Keyword getUnitKeyword_2_0() { return cUnitKeyword_2_0; }

		//"="
		public Keyword getEqualsSignKeyword_2_1() { return cEqualsSignKeyword_2_1; }

		//unitText=STRING | unitAttribute=[Attribute]
		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }

		//unitText=STRING
		public Assignment getUnitTextAssignment_2_2_0() { return cUnitTextAssignment_2_2_0; }

		//STRING
		public RuleCall getUnitTextSTRINGTerminalRuleCall_2_2_0_0() { return cUnitTextSTRINGTerminalRuleCall_2_2_0_0; }

		//unitAttribute=[Attribute]
		public Assignment getUnitAttributeAssignment_2_2_1() { return cUnitAttributeAssignment_2_2_1; }

		//[Attribute]
		public CrossReference getUnitAttributeAttributeCrossReference_2_2_1_0() { return cUnitAttributeAttributeCrossReference_2_2_1_0; }

		//ID
		public RuleCall getUnitAttributeAttributeIDTerminalRuleCall_2_2_1_0_1() { return cUnitAttributeAttributeIDTerminalRuleCall_2_2_1_0_1; }

		//"hstore" "=" hstoreColumn=STRING
		public Group getGroup_3() { return cGroup_3; }

		//"hstore"
		public Keyword getHstoreKeyword_3_0() { return cHstoreKeyword_3_0; }

		//"="
		public Keyword getEqualsSignKeyword_3_1() { return cEqualsSignKeyword_3_1; }

		//hstoreColumn=STRING
		public Assignment getHstoreColumnAssignment_3_2() { return cHstoreColumnAssignment_3_2; }

		//STRING
		public RuleCall getHstoreColumnSTRINGTerminalRuleCall_3_2_0() { return cHstoreColumnSTRINGTerminalRuleCall_3_2_0; }
	}

	public class AttributeGroupElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeGroup");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Assignment cKeyAssignment_0_0 = (Assignment)cAlternatives_0.eContents().get(0);
		private final Keyword cKeyKeyKeyword_0_0_0 = (Keyword)cKeyAssignment_0_0.eContents().get(0);
		private final Assignment cUniqueAssignment_0_1 = (Assignment)cAlternatives_0.eContents().get(1);
		private final Keyword cUniqueUniqueKeyword_0_1_0 = (Keyword)cUniqueAssignment_0_1.eContents().get(0);
		private final Assignment cFilterAssignment_0_2 = (Assignment)cAlternatives_0.eContents().get(2);
		private final Keyword cFilterFilterKeyword_0_2_0 = (Keyword)cFilterAssignment_0_2.eContents().get(0);
		private final Assignment cSortorderAssignment_0_3 = (Assignment)cAlternatives_0.eContents().get(3);
		private final Keyword cSortorderSortorderKeyword_0_3_0 = (Keyword)cSortorderAssignment_0_3.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cAttributesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cAttributesAttributeSortOrderParserRuleCall_3_0 = (RuleCall)cAttributesAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cAttributesAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cAttributesAttributeSortOrderParserRuleCall_4_1_0 = (RuleCall)cAttributesAssignment_4_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//AttributeGroup:
		//	(key?="key" | unique?="unique" | filter?="filter" | sortorder?="sortorder") name=ID "(" attributes+=AttributeSortOrder
		//	("," attributes+=AttributeSortOrder)* ")";
		public ParserRule getRule() { return rule; }

		//(key?="key" | unique?="unique" | filter?="filter" | sortorder?="sortorder") name=ID "(" attributes+=AttributeSortOrder
		//("," attributes+=AttributeSortOrder)* ")"
		public Group getGroup() { return cGroup; }

		//key?="key" | unique?="unique" | filter?="filter" | sortorder?="sortorder"
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//key?="key"
		public Assignment getKeyAssignment_0_0() { return cKeyAssignment_0_0; }

		//"key"
		public Keyword getKeyKeyKeyword_0_0_0() { return cKeyKeyKeyword_0_0_0; }

		//unique?="unique"
		public Assignment getUniqueAssignment_0_1() { return cUniqueAssignment_0_1; }

		//"unique"
		public Keyword getUniqueUniqueKeyword_0_1_0() { return cUniqueUniqueKeyword_0_1_0; }

		//filter?="filter"
		public Assignment getFilterAssignment_0_2() { return cFilterAssignment_0_2; }

		//"filter"
		public Keyword getFilterFilterKeyword_0_2_0() { return cFilterFilterKeyword_0_2_0; }

		//sortorder?="sortorder"
		public Assignment getSortorderAssignment_0_3() { return cSortorderAssignment_0_3; }

		//"sortorder"
		public Keyword getSortorderSortorderKeyword_0_3_0() { return cSortorderSortorderKeyword_0_3_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }

		//attributes+=AttributeSortOrder
		public Assignment getAttributesAssignment_3() { return cAttributesAssignment_3; }

		//AttributeSortOrder
		public RuleCall getAttributesAttributeSortOrderParserRuleCall_3_0() { return cAttributesAttributeSortOrderParserRuleCall_3_0; }

		//("," attributes+=AttributeSortOrder)*
		public Group getGroup_4() { return cGroup_4; }

		//","
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }

		//attributes+=AttributeSortOrder
		public Assignment getAttributesAssignment_4_1() { return cAttributesAssignment_4_1; }

		//AttributeSortOrder
		public RuleCall getAttributesAttributeSortOrderParserRuleCall_4_1_0() { return cAttributesAttributeSortOrderParserRuleCall_4_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
	}

	public class AttributeSortOrderElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeSortOrder");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cAttributeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cAttributeAttributeCrossReference_0_0 = (CrossReference)cAttributeAssignment_0.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_0_0_1 = (RuleCall)cAttributeAttributeCrossReference_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cAscAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cAscAscKeyword_1_0_0 = (Keyword)cAscAssignment_1_0.eContents().get(0);
		private final Assignment cDescAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cDescDescKeyword_1_1_0 = (Keyword)cDescAssignment_1_1.eContents().get(0);
		
		//AttributeSortOrder:
		//	attribute=[Attribute] (asc?="asc" | desc?="desc")?;
		public ParserRule getRule() { return rule; }

		//attribute=[Attribute] (asc?="asc" | desc?="desc")?
		public Group getGroup() { return cGroup; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_0() { return cAttributeAssignment_0; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_0_0() { return cAttributeAttributeCrossReference_0_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_0_0_1() { return cAttributeAttributeIDTerminalRuleCall_0_0_1; }

		//(asc?="asc" | desc?="desc")?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//asc?="asc"
		public Assignment getAscAssignment_1_0() { return cAscAssignment_1_0; }

		//"asc"
		public Keyword getAscAscKeyword_1_0_0() { return cAscAscKeyword_1_0_0; }

		//desc?="desc"
		public Assignment getDescAssignment_1_1() { return cDescAssignment_1_1; }

		//"desc"
		public Keyword getDescDescKeyword_1_1_0() { return cDescDescKeyword_1_1_0; }
	}

	public class DaoFeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DaoFeature");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cColumnParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cManyToOneParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cOneToOneParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cManyToManyParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cOneToManyParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//DaoFeature:
		//	Column | ManyToOne | OneToOne | ManyToMany | OneToMany;
		public ParserRule getRule() { return rule; }

		//Column | ManyToOne | OneToOne | ManyToMany | OneToMany
		public Alternatives getAlternatives() { return cAlternatives; }

		//Column
		public RuleCall getColumnParserRuleCall_0() { return cColumnParserRuleCall_0; }

		//ManyToOne
		public RuleCall getManyToOneParserRuleCall_1() { return cManyToOneParserRuleCall_1; }

		//OneToOne
		public RuleCall getOneToOneParserRuleCall_2() { return cOneToOneParserRuleCall_2; }

		//ManyToMany
		public RuleCall getManyToManyParserRuleCall_3() { return cManyToManyParserRuleCall_3; }

		//OneToMany
		public RuleCall getOneToManyParserRuleCall_4() { return cOneToManyParserRuleCall_4; }
	}

	public class DaoElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Dao");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRepositoryKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cForKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cEntityEntityCrossReference_3_0 = (CrossReference)cEntityAssignment_3.eContents().get(0);
		private final RuleCall cEntityEntityQualifiedNameParserRuleCall_3_0_1 = (RuleCall)cEntityEntityCrossReference_3_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cTableKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cTableNameAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cTableNameSTRINGTerminalRuleCall_5_2_0 = (RuleCall)cTableNameAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cDiscriminatorKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cDiscriminatorAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cDiscriminatorSTRINGTerminalRuleCall_6_2_0 = (RuleCall)cDiscriminatorAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cQualifierKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cQualifierAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cQualifierSTRINGTerminalRuleCall_7_2_0 = (RuleCall)cQualifierAssignment_7_2.eContents().get(0);
		private final Alternatives cAlternatives_8 = (Alternatives)cGroup.eContents().get(8);
		private final Assignment cOperationsAssignment_8_0 = (Assignment)cAlternatives_8.eContents().get(0);
		private final RuleCall cOperationsOperationParserRuleCall_8_0_0 = (RuleCall)cOperationsAssignment_8_0.eContents().get(0);
		private final Assignment cQueryOperationAssignment_8_1 = (Assignment)cAlternatives_8.eContents().get(1);
		private final RuleCall cQueryOperationQueryOperationParserRuleCall_8_1_0 = (RuleCall)cQueryOperationAssignment_8_1.eContents().get(0);
		private final Alternatives cAlternatives_9 = (Alternatives)cGroup.eContents().get(9);
		private final Assignment cDataBaseConstraintsAssignment_9_0 = (Assignment)cAlternatives_9.eContents().get(0);
		private final RuleCall cDataBaseConstraintsDataBaseConstraintParserRuleCall_9_0_0 = (RuleCall)cDataBaseConstraintsAssignment_9_0.eContents().get(0);
		private final Assignment cColumnsAssignment_9_1 = (Assignment)cAlternatives_9.eContents().get(1);
		private final RuleCall cColumnsColumnParserRuleCall_9_1_0 = (RuleCall)cColumnsAssignment_9_1.eContents().get(0);
		private final Assignment cManyToOneAssociationsAssignment_9_2 = (Assignment)cAlternatives_9.eContents().get(2);
		private final RuleCall cManyToOneAssociationsManyToOneParserRuleCall_9_2_0 = (RuleCall)cManyToOneAssociationsAssignment_9_2.eContents().get(0);
		private final Assignment cOneToOneAssociationsAssignment_9_3 = (Assignment)cAlternatives_9.eContents().get(3);
		private final RuleCall cOneToOneAssociationsOneToOneParserRuleCall_9_3_0 = (RuleCall)cOneToOneAssociationsAssignment_9_3.eContents().get(0);
		private final Assignment cOneToManyAssociationsAssignment_9_4 = (Assignment)cAlternatives_9.eContents().get(4);
		private final RuleCall cOneToManyAssociationsOneToManyParserRuleCall_9_4_0 = (RuleCall)cOneToManyAssociationsAssignment_9_4.eContents().get(0);
		private final Assignment cManyToManyAssociationsAssignment_9_5 = (Assignment)cAlternatives_9.eContents().get(5);
		private final RuleCall cManyToManyAssociationsManyToManyParserRuleCall_9_5_0 = (RuleCall)cManyToManyAssociationsAssignment_9_5.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//Dao:
		//	"repository" name=ID "for" entity=[Entity|QualifiedName] "{" ("table" "=" tableName=STRING)? ("discriminator" "="
		//	discriminator=STRING)? ("qualifier" "=" qualifier=STRING)? (operations+=Operation | queryOperation+=QueryOperation)*
		//	(dataBaseConstraints+=DataBaseConstraint | columns+=Column | manyToOneAssociations+=ManyToOne |
		//	oneToOneAssociations+=OneToOne | oneToManyAssociations+=OneToMany | manyToManyAssociations+=ManyToMany)* "}";
		public ParserRule getRule() { return rule; }

		//"repository" name=ID "for" entity=[Entity|QualifiedName] "{" ("table" "=" tableName=STRING)? ("discriminator" "="
		//discriminator=STRING)? ("qualifier" "=" qualifier=STRING)? (operations+=Operation | queryOperation+=QueryOperation)*
		//(dataBaseConstraints+=DataBaseConstraint | columns+=Column | manyToOneAssociations+=ManyToOne |
		//oneToOneAssociations+=OneToOne | oneToManyAssociations+=OneToMany | manyToManyAssociations+=ManyToMany)* "}"
		public Group getGroup() { return cGroup; }

		//"repository"
		public Keyword getRepositoryKeyword_0() { return cRepositoryKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"for"
		public Keyword getForKeyword_2() { return cForKeyword_2; }

		//entity=[Entity|QualifiedName]
		public Assignment getEntityAssignment_3() { return cEntityAssignment_3; }

		//[Entity|QualifiedName]
		public CrossReference getEntityEntityCrossReference_3_0() { return cEntityEntityCrossReference_3_0; }

		//QualifiedName
		public RuleCall getEntityEntityQualifiedNameParserRuleCall_3_0_1() { return cEntityEntityQualifiedNameParserRuleCall_3_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }

		//("table" "=" tableName=STRING)?
		public Group getGroup_5() { return cGroup_5; }

		//"table"
		public Keyword getTableKeyword_5_0() { return cTableKeyword_5_0; }

		//"="
		public Keyword getEqualsSignKeyword_5_1() { return cEqualsSignKeyword_5_1; }

		//tableName=STRING
		public Assignment getTableNameAssignment_5_2() { return cTableNameAssignment_5_2; }

		//STRING
		public RuleCall getTableNameSTRINGTerminalRuleCall_5_2_0() { return cTableNameSTRINGTerminalRuleCall_5_2_0; }

		//("discriminator" "=" discriminator=STRING)?
		public Group getGroup_6() { return cGroup_6; }

		//"discriminator"
		public Keyword getDiscriminatorKeyword_6_0() { return cDiscriminatorKeyword_6_0; }

		//"="
		public Keyword getEqualsSignKeyword_6_1() { return cEqualsSignKeyword_6_1; }

		//discriminator=STRING
		public Assignment getDiscriminatorAssignment_6_2() { return cDiscriminatorAssignment_6_2; }

		//STRING
		public RuleCall getDiscriminatorSTRINGTerminalRuleCall_6_2_0() { return cDiscriminatorSTRINGTerminalRuleCall_6_2_0; }

		//("qualifier" "=" qualifier=STRING)?
		public Group getGroup_7() { return cGroup_7; }

		//"qualifier"
		public Keyword getQualifierKeyword_7_0() { return cQualifierKeyword_7_0; }

		//"="
		public Keyword getEqualsSignKeyword_7_1() { return cEqualsSignKeyword_7_1; }

		//qualifier=STRING
		public Assignment getQualifierAssignment_7_2() { return cQualifierAssignment_7_2; }

		//STRING
		public RuleCall getQualifierSTRINGTerminalRuleCall_7_2_0() { return cQualifierSTRINGTerminalRuleCall_7_2_0; }

		//(operations+=Operation | queryOperation+=QueryOperation)*
		public Alternatives getAlternatives_8() { return cAlternatives_8; }

		//operations+=Operation
		public Assignment getOperationsAssignment_8_0() { return cOperationsAssignment_8_0; }

		//Operation
		public RuleCall getOperationsOperationParserRuleCall_8_0_0() { return cOperationsOperationParserRuleCall_8_0_0; }

		//queryOperation+=QueryOperation
		public Assignment getQueryOperationAssignment_8_1() { return cQueryOperationAssignment_8_1; }

		//QueryOperation
		public RuleCall getQueryOperationQueryOperationParserRuleCall_8_1_0() { return cQueryOperationQueryOperationParserRuleCall_8_1_0; }

		//(dataBaseConstraints+=DataBaseConstraint | columns+=Column | manyToOneAssociations+=ManyToOne |
		//oneToOneAssociations+=OneToOne | oneToManyAssociations+=OneToMany | manyToManyAssociations+=ManyToMany)*
		public Alternatives getAlternatives_9() { return cAlternatives_9; }

		//dataBaseConstraints+=DataBaseConstraint
		public Assignment getDataBaseConstraintsAssignment_9_0() { return cDataBaseConstraintsAssignment_9_0; }

		//DataBaseConstraint
		public RuleCall getDataBaseConstraintsDataBaseConstraintParserRuleCall_9_0_0() { return cDataBaseConstraintsDataBaseConstraintParserRuleCall_9_0_0; }

		//columns+=Column
		public Assignment getColumnsAssignment_9_1() { return cColumnsAssignment_9_1; }

		//Column
		public RuleCall getColumnsColumnParserRuleCall_9_1_0() { return cColumnsColumnParserRuleCall_9_1_0; }

		//manyToOneAssociations+=ManyToOne
		public Assignment getManyToOneAssociationsAssignment_9_2() { return cManyToOneAssociationsAssignment_9_2; }

		//ManyToOne
		public RuleCall getManyToOneAssociationsManyToOneParserRuleCall_9_2_0() { return cManyToOneAssociationsManyToOneParserRuleCall_9_2_0; }

		//oneToOneAssociations+=OneToOne
		public Assignment getOneToOneAssociationsAssignment_9_3() { return cOneToOneAssociationsAssignment_9_3; }

		//OneToOne
		public RuleCall getOneToOneAssociationsOneToOneParserRuleCall_9_3_0() { return cOneToOneAssociationsOneToOneParserRuleCall_9_3_0; }

		//oneToManyAssociations+=OneToMany
		public Assignment getOneToManyAssociationsAssignment_9_4() { return cOneToManyAssociationsAssignment_9_4; }

		//OneToMany
		public RuleCall getOneToManyAssociationsOneToManyParserRuleCall_9_4_0() { return cOneToManyAssociationsOneToManyParserRuleCall_9_4_0; }

		//manyToManyAssociations+=ManyToMany
		public Assignment getManyToManyAssociationsAssignment_9_5() { return cManyToManyAssociationsAssignment_9_5; }

		//ManyToMany
		public RuleCall getManyToManyAssociationsManyToManyParserRuleCall_9_5_0() { return cManyToManyAssociationsManyToManyParserRuleCall_9_5_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
	}

	public class QueryOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QueryOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cOperationKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Assignment cTypeAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cTypeTypeCrossReference_1_0_0 = (CrossReference)cTypeAssignment_1_0.eContents().get(0);
		private final RuleCall cTypeTypeQualifiedNameParserRuleCall_1_0_0_1 = (RuleCall)cTypeTypeCrossReference_1_0_0.eContents().get(1);
		private final Assignment cManyAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0 = (Keyword)cManyAssignment_1_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cQueryParametersAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cQueryParametersQueryParameterParserRuleCall_4_0_0 = (RuleCall)cQueryParametersAssignment_4_0.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
		private final Assignment cQueryParametersAssignment_4_1_1 = (Assignment)cGroup_4_1.eContents().get(1);
		private final RuleCall cQueryParametersQueryParameterParserRuleCall_4_1_1_0 = (RuleCall)cQueryParametersAssignment_4_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Keyword cColonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cStatementAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cStatementQlStatementParserRuleCall_7_0 = (RuleCall)cStatementAssignment_7.eContents().get(0);
		
		//QueryOperation:
		//	"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (queryParameters+=QueryParameter (","
		//	queryParameters+=QueryParameter)*)? ")" ":" statement=QlStatement;
		public ParserRule getRule() { return rule; }

		//"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (queryParameters+=QueryParameter (","
		//queryParameters+=QueryParameter)*)? ")" ":" statement=QlStatement
		public Group getGroup() { return cGroup; }

		//"operation"
		public Keyword getOperationKeyword_0() { return cOperationKeyword_0; }

		//(type=[core::Type|QualifiedName] many?="[]"?)?
		public Group getGroup_1() { return cGroup_1; }

		//type=[core::Type|QualifiedName]
		public Assignment getTypeAssignment_1_0() { return cTypeAssignment_1_0; }

		//[core::Type|QualifiedName]
		public CrossReference getTypeTypeCrossReference_1_0_0() { return cTypeTypeCrossReference_1_0_0; }

		//QualifiedName
		public RuleCall getTypeTypeQualifiedNameParserRuleCall_1_0_0_1() { return cTypeTypeQualifiedNameParserRuleCall_1_0_0_1; }

		//many?="[]"?
		public Assignment getManyAssignment_1_1() { return cManyAssignment_1_1; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_1_1_0; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//(queryParameters+=QueryParameter ("," queryParameters+=QueryParameter)*)?
		public Group getGroup_4() { return cGroup_4; }

		//queryParameters+=QueryParameter
		public Assignment getQueryParametersAssignment_4_0() { return cQueryParametersAssignment_4_0; }

		//QueryParameter
		public RuleCall getQueryParametersQueryParameterParserRuleCall_4_0_0() { return cQueryParametersQueryParameterParserRuleCall_4_0_0; }

		//("," queryParameters+=QueryParameter)*
		public Group getGroup_4_1() { return cGroup_4_1; }

		//","
		public Keyword getCommaKeyword_4_1_0() { return cCommaKeyword_4_1_0; }

		//queryParameters+=QueryParameter
		public Assignment getQueryParametersAssignment_4_1_1() { return cQueryParametersAssignment_4_1_1; }

		//QueryParameter
		public RuleCall getQueryParametersQueryParameterParserRuleCall_4_1_1_0() { return cQueryParametersQueryParameterParserRuleCall_4_1_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }

		//":"
		public Keyword getColonKeyword_6() { return cColonKeyword_6; }

		//statement=QlStatement
		public Assignment getStatementAssignment_7() { return cStatementAssignment_7; }

		//QlStatement
		public RuleCall getStatementQlStatementParserRuleCall_7_0() { return cStatementQlStatementParserRuleCall_7_0; }
	}

	public class QueryParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QueryParameter");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cParameterParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		
		//QueryParameter:
		//	Parameter | attribute=[Attribute];
		public ParserRule getRule() { return rule; }

		//Parameter | attribute=[Attribute]
		public Alternatives getAlternatives() { return cAlternatives; }

		//Parameter
		public RuleCall getParameterParserRuleCall_0() { return cParameterParserRuleCall_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }
	}

	public class ColumnElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Column");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cColumnKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cColumnNameAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cColumnNameSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cColumnNameAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cUsertypeKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cUserTypeAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cUserTypeDataTypeAndTypeParameterParserRuleCall_3_2_0 = (RuleCall)cUserTypeAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSqltypeKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cColumnTypeAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final CrossReference cColumnTypeTypeCrossReference_4_2_0 = (CrossReference)cColumnTypeAssignment_4_2.eContents().get(0);
		private final RuleCall cColumnTypeTypeQualifiedNameParserRuleCall_4_2_0_1 = (RuleCall)cColumnTypeTypeCrossReference_4_2_0.eContents().get(1);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cColumnsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cColumnsColumnParserRuleCall_5_1_0 = (RuleCall)cColumnsAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		
		//Column:
		//	"column" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=DataTypeAndTypeParameter)?
		//	("sqltype" "=" columnType=[core::Type|QualifiedName])? ("{" columns+=Column+ "}")?;
		public ParserRule getRule() { return rule; }

		//"column" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=DataTypeAndTypeParameter)? ("sqltype"
		//"=" columnType=[core::Type|QualifiedName])? ("{" columns+=Column+ "}")?
		public Group getGroup() { return cGroup; }

		//"column"
		public Keyword getColumnKeyword_0() { return cColumnKeyword_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }

		//("<->" columnName=STRING)?
		public Group getGroup_2() { return cGroup_2; }

		//"<->"
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0; }

		//columnName=STRING
		public Assignment getColumnNameAssignment_2_1() { return cColumnNameAssignment_2_1; }

		//STRING
		public RuleCall getColumnNameSTRINGTerminalRuleCall_2_1_0() { return cColumnNameSTRINGTerminalRuleCall_2_1_0; }

		//("usertype" "=" userType=DataTypeAndTypeParameter)?
		public Group getGroup_3() { return cGroup_3; }

		//"usertype"
		public Keyword getUsertypeKeyword_3_0() { return cUsertypeKeyword_3_0; }

		//"="
		public Keyword getEqualsSignKeyword_3_1() { return cEqualsSignKeyword_3_1; }

		//userType=DataTypeAndTypeParameter
		public Assignment getUserTypeAssignment_3_2() { return cUserTypeAssignment_3_2; }

		//DataTypeAndTypeParameter
		public RuleCall getUserTypeDataTypeAndTypeParameterParserRuleCall_3_2_0() { return cUserTypeDataTypeAndTypeParameterParserRuleCall_3_2_0; }

		//("sqltype" "=" columnType=[core::Type|QualifiedName])?
		public Group getGroup_4() { return cGroup_4; }

		//"sqltype"
		public Keyword getSqltypeKeyword_4_0() { return cSqltypeKeyword_4_0; }

		//"="
		public Keyword getEqualsSignKeyword_4_1() { return cEqualsSignKeyword_4_1; }

		//columnType=[core::Type|QualifiedName]
		public Assignment getColumnTypeAssignment_4_2() { return cColumnTypeAssignment_4_2; }

		//[core::Type|QualifiedName]
		public CrossReference getColumnTypeTypeCrossReference_4_2_0() { return cColumnTypeTypeCrossReference_4_2_0; }

		//QualifiedName
		public RuleCall getColumnTypeTypeQualifiedNameParserRuleCall_4_2_0_1() { return cColumnTypeTypeQualifiedNameParserRuleCall_4_2_0_1; }

		//("{" columns+=Column+ "}")?
		public Group getGroup_5() { return cGroup_5; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }

		//columns+=Column+
		public Assignment getColumnsAssignment_5_1() { return cColumnsAssignment_5_1; }

		//Column
		public RuleCall getColumnsColumnParserRuleCall_5_1_0() { return cColumnsColumnParserRuleCall_5_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
	}

	public class ManyToOneElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ManyToOne");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cManyToOneKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cColumnNameAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cColumnNameSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cColumnNameAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cUsertypeKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cUserTypeAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final CrossReference cUserTypeTypeCrossReference_3_2_0 = (CrossReference)cUserTypeAssignment_3_2.eContents().get(0);
		private final RuleCall cUserTypeTypeQualifiedNameParserRuleCall_3_2_0_1 = (RuleCall)cUserTypeTypeCrossReference_3_2_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSqltypeKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSqlTypeAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final CrossReference cSqlTypeSqlTypeCrossReference_4_2_0 = (CrossReference)cSqlTypeAssignment_4_2.eContents().get(0);
		private final RuleCall cSqlTypeSqlTypeIDTerminalRuleCall_4_2_0_1 = (RuleCall)cSqlTypeSqlTypeCrossReference_4_2_0.eContents().get(1);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cColumnsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cColumnsColumnParserRuleCall_5_1_0 = (RuleCall)cColumnsAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		
		//ManyToOne:
		//	"many-to-one" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=[core::Type|QualifiedName])?
		//	("sqltype" "=" sqlType=[core::SqlType])? ("{" columns+=Column+ "}")?;
		public ParserRule getRule() { return rule; }

		//"many-to-one" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=[core::Type|QualifiedName])?
		//("sqltype" "=" sqlType=[core::SqlType])? ("{" columns+=Column+ "}")?
		public Group getGroup() { return cGroup; }

		//"many-to-one"
		public Keyword getManyToOneKeyword_0() { return cManyToOneKeyword_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }

		//("<->" columnName=STRING)?
		public Group getGroup_2() { return cGroup_2; }

		//"<->"
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0; }

		//columnName=STRING
		public Assignment getColumnNameAssignment_2_1() { return cColumnNameAssignment_2_1; }

		//STRING
		public RuleCall getColumnNameSTRINGTerminalRuleCall_2_1_0() { return cColumnNameSTRINGTerminalRuleCall_2_1_0; }

		//("usertype" "=" userType=[core::Type|QualifiedName])?
		public Group getGroup_3() { return cGroup_3; }

		//"usertype"
		public Keyword getUsertypeKeyword_3_0() { return cUsertypeKeyword_3_0; }

		//"="
		public Keyword getEqualsSignKeyword_3_1() { return cEqualsSignKeyword_3_1; }

		//userType=[core::Type|QualifiedName]
		public Assignment getUserTypeAssignment_3_2() { return cUserTypeAssignment_3_2; }

		//[core::Type|QualifiedName]
		public CrossReference getUserTypeTypeCrossReference_3_2_0() { return cUserTypeTypeCrossReference_3_2_0; }

		//QualifiedName
		public RuleCall getUserTypeTypeQualifiedNameParserRuleCall_3_2_0_1() { return cUserTypeTypeQualifiedNameParserRuleCall_3_2_0_1; }

		//("sqltype" "=" sqlType=[core::SqlType])?
		public Group getGroup_4() { return cGroup_4; }

		//"sqltype"
		public Keyword getSqltypeKeyword_4_0() { return cSqltypeKeyword_4_0; }

		//"="
		public Keyword getEqualsSignKeyword_4_1() { return cEqualsSignKeyword_4_1; }

		//sqlType=[core::SqlType]
		public Assignment getSqlTypeAssignment_4_2() { return cSqlTypeAssignment_4_2; }

		//[core::SqlType]
		public CrossReference getSqlTypeSqlTypeCrossReference_4_2_0() { return cSqlTypeSqlTypeCrossReference_4_2_0; }

		//ID
		public RuleCall getSqlTypeSqlTypeIDTerminalRuleCall_4_2_0_1() { return cSqlTypeSqlTypeIDTerminalRuleCall_4_2_0_1; }

		//("{" columns+=Column+ "}")?
		public Group getGroup_5() { return cGroup_5; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }

		//columns+=Column+
		public Assignment getColumnsAssignment_5_1() { return cColumnsAssignment_5_1; }

		//Column
		public RuleCall getColumnsColumnParserRuleCall_5_1_0() { return cColumnsColumnParserRuleCall_5_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
	}

	public class OneToOneElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "OneToOne");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cOneToOneKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		
		//OneToOne:
		//	"one-to-one" attribute=[Attribute];
		public ParserRule getRule() { return rule; }

		//"one-to-one" attribute=[Attribute]
		public Group getGroup() { return cGroup; }

		//"one-to-one"
		public Keyword getOneToOneKeyword_0() { return cOneToOneKeyword_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }
	}

	public class OneToManyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "OneToMany");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cOneToManyKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cColumnNameAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cColumnNameSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cColumnNameAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cColumnsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cColumnsColumnParserRuleCall_3_1_0 = (RuleCall)cColumnsAssignment_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		
		//OneToMany:
		//	"one-to-many" attribute=[Attribute] ("<->" columnName=STRING)? ("{" columns+=Column+ "}")?;
		public ParserRule getRule() { return rule; }

		//"one-to-many" attribute=[Attribute] ("<->" columnName=STRING)? ("{" columns+=Column+ "}")?
		public Group getGroup() { return cGroup; }

		//"one-to-many"
		public Keyword getOneToManyKeyword_0() { return cOneToManyKeyword_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }

		//("<->" columnName=STRING)?
		public Group getGroup_2() { return cGroup_2; }

		//"<->"
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_2_0; }

		//columnName=STRING
		public Assignment getColumnNameAssignment_2_1() { return cColumnNameAssignment_2_1; }

		//STRING
		public RuleCall getColumnNameSTRINGTerminalRuleCall_2_1_0() { return cColumnNameSTRINGTerminalRuleCall_2_1_0; }

		//("{" columns+=Column+ "}")?
		public Group getGroup_3() { return cGroup_3; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }

		//columns+=Column+
		public Assignment getColumnsAssignment_3_1() { return cColumnsAssignment_3_1; }

		//Column
		public RuleCall getColumnsColumnParserRuleCall_3_1_0() { return cColumnsColumnParserRuleCall_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
	}

	public class ManyToManyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ManyToMany");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cManyToManyKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_1_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cTableNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cTableNameSTRINGTerminalRuleCall_3_0 = (RuleCall)cTableNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFullStopKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cColumnNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cColumnNameSTRINGTerminalRuleCall_4_1_0 = (RuleCall)cColumnNameAssignment_4_1.eContents().get(0);
		
		//ManyToMany:
		//	"many-to-many" attribute=[Attribute] "<->" tableName=STRING ("." columnName=STRING)?;
		public ParserRule getRule() { return rule; }

		//"many-to-many" attribute=[Attribute] "<->" tableName=STRING ("." columnName=STRING)?
		public Group getGroup() { return cGroup; }

		//"many-to-many"
		public Keyword getManyToManyKeyword_0() { return cManyToManyKeyword_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_1_0() { return cAttributeAttributeCrossReference_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_1_0_1; }

		//"<->"
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_2() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_2; }

		//tableName=STRING
		public Assignment getTableNameAssignment_3() { return cTableNameAssignment_3; }

		//STRING
		public RuleCall getTableNameSTRINGTerminalRuleCall_3_0() { return cTableNameSTRINGTerminalRuleCall_3_0; }

		//("." columnName=STRING)?
		public Group getGroup_4() { return cGroup_4; }

		//"."
		public Keyword getFullStopKeyword_4_0() { return cFullStopKeyword_4_0; }

		//columnName=STRING
		public Assignment getColumnNameAssignment_4_1() { return cColumnNameAssignment_4_1; }

		//STRING
		public RuleCall getColumnNameSTRINGTerminalRuleCall_4_1_0() { return cColumnNameSTRINGTerminalRuleCall_4_1_0; }
	}

	public class DataBaseConstraintElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataBaseConstraint");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cTypeDataBaseConstraintTypeEnumRuleCall_0_0 = (RuleCall)cTypeAssignment_0.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cAttributesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cAttributesAttributeCrossReference_3_0 = (CrossReference)cAttributesAssignment_3.eContents().get(0);
		private final RuleCall cAttributesAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributesAttributeCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cAttributesAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final CrossReference cAttributesAttributeCrossReference_4_1_0 = (CrossReference)cAttributesAssignment_4_1.eContents().get(0);
		private final RuleCall cAttributesAttributeIDTerminalRuleCall_4_1_0_1 = (RuleCall)cAttributesAttributeCrossReference_4_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		/// **
		// * DataBaseConstraint used for efficient and consistent finder and ddl generation 
		// * Generated artefacts: Service,ServiceImpl,Dao,DaoImpl,Hbm,Ddl
		// * / DataBaseConstraint:
		//	type=DataBaseConstraintType name=ID "(" attributes+=[Attribute] ("," attributes+=[Attribute])* ")";
		public ParserRule getRule() { return rule; }

		//type=DataBaseConstraintType name=ID "(" attributes+=[Attribute] ("," attributes+=[Attribute])* ")"
		public Group getGroup() { return cGroup; }

		//type=DataBaseConstraintType
		public Assignment getTypeAssignment_0() { return cTypeAssignment_0; }

		//DataBaseConstraintType
		public RuleCall getTypeDataBaseConstraintTypeEnumRuleCall_0_0() { return cTypeDataBaseConstraintTypeEnumRuleCall_0_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }

		//attributes+=[Attribute]
		public Assignment getAttributesAssignment_3() { return cAttributesAssignment_3; }

		//[Attribute]
		public CrossReference getAttributesAttributeCrossReference_3_0() { return cAttributesAttributeCrossReference_3_0; }

		//ID
		public RuleCall getAttributesAttributeIDTerminalRuleCall_3_0_1() { return cAttributesAttributeIDTerminalRuleCall_3_0_1; }

		//("," attributes+=[Attribute])*
		public Group getGroup_4() { return cGroup_4; }

		//","
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }

		//attributes+=[Attribute]
		public Assignment getAttributesAssignment_4_1() { return cAttributesAssignment_4_1; }

		//[Attribute]
		public CrossReference getAttributesAttributeCrossReference_4_1_0() { return cAttributesAttributeCrossReference_4_1_0; }

		//ID
		public RuleCall getAttributesAttributeIDTerminalRuleCall_4_1_0_1() { return cAttributesAttributeIDTerminalRuleCall_4_1_0_1; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
	}

	public class ReferenceableByXmadslVariableElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReferenceableByXmadslVariable");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPropertyParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cStatusFlagParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cAttributeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cIElementWithNoNameParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//ReferenceableByXmadslVariable returns core::ReferenceableByXmadslVariable:
		//	Property | StatusFlag | Attribute | IElementWithNoName;
		public ParserRule getRule() { return rule; }

		//Property | StatusFlag | Attribute | IElementWithNoName
		public Alternatives getAlternatives() { return cAlternatives; }

		//Property
		public RuleCall getPropertyParserRuleCall_0() { return cPropertyParserRuleCall_0; }

		//StatusFlag
		public RuleCall getStatusFlagParserRuleCall_1() { return cStatusFlagParserRuleCall_1; }

		//Attribute
		public RuleCall getAttributeParserRuleCall_2() { return cAttributeParserRuleCall_2; }

		//IElementWithNoName
		public RuleCall getIElementWithNoNameParserRuleCall_3() { return cIElementWithNoNameParserRuleCall_3; }
	}

	public class ApplicationSessionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ApplicationSession");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cContextKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cPropertiesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cPropertiesPropertyParserRuleCall_3_0 = (RuleCall)cPropertiesAssignment_3.eContents().get(0);
		private final Assignment cFunctionsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cFunctionsSessionFunctionParserRuleCall_4_0 = (RuleCall)cFunctionsAssignment_4.eContents().get(0);
		private final Assignment cConditionsBlockAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cConditionsBlockConditionsBlockParserRuleCall_5_0 = (RuleCall)cConditionsBlockAssignment_5.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ApplicationSession:
		//	"context" name=ID "{" properties+=Property* functions+=SessionFunction* conditionsBlock=ConditionsBlock? "}";
		public ParserRule getRule() { return rule; }

		//"context" name=ID "{" properties+=Property* functions+=SessionFunction* conditionsBlock=ConditionsBlock? "}"
		public Group getGroup() { return cGroup; }

		//"context"
		public Keyword getContextKeyword_0() { return cContextKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//properties+=Property*
		public Assignment getPropertiesAssignment_3() { return cPropertiesAssignment_3; }

		//Property
		public RuleCall getPropertiesPropertyParserRuleCall_3_0() { return cPropertiesPropertyParserRuleCall_3_0; }

		//functions+=SessionFunction*
		public Assignment getFunctionsAssignment_4() { return cFunctionsAssignment_4; }

		//SessionFunction
		public RuleCall getFunctionsSessionFunctionParserRuleCall_4_0() { return cFunctionsSessionFunctionParserRuleCall_4_0; }

		//conditionsBlock=ConditionsBlock?
		public Assignment getConditionsBlockAssignment_5() { return cConditionsBlockAssignment_5; }

		//ConditionsBlock
		public RuleCall getConditionsBlockConditionsBlockParserRuleCall_5_0() { return cConditionsBlockConditionsBlockParserRuleCall_5_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
	}

	public class SessionFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SessionFunction");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFunctionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cResultTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cResultTypeSimpleTypeCrossReference_1_0 = (CrossReference)cResultTypeAssignment_1.eContents().get(0);
		private final RuleCall cResultTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1 = (RuleCall)cResultTypeSimpleTypeCrossReference_1_0.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cParameterTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cParameterTypeSimpleTypeCrossReference_4_0 = (CrossReference)cParameterTypeAssignment_4.eContents().get(0);
		private final RuleCall cParameterTypeSimpleTypeQualifiedNameParserRuleCall_4_0_1 = (RuleCall)cParameterTypeSimpleTypeCrossReference_4_0.eContents().get(1);
		private final Assignment cParameterNameAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cParameterNameIDTerminalRuleCall_5_0 = (RuleCall)cParameterNameAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SessionFunction returns core::Function:
		//	"function" resultType=[core::SimpleType|QualifiedName] name=ID "(" parameterType=[core::SimpleType|QualifiedName]
		//	parameterName=ID ")";
		public ParserRule getRule() { return rule; }

		//"function" resultType=[core::SimpleType|QualifiedName] name=ID "(" parameterType=[core::SimpleType|QualifiedName]
		//parameterName=ID ")"
		public Group getGroup() { return cGroup; }

		//"function"
		public Keyword getFunctionKeyword_0() { return cFunctionKeyword_0; }

		//resultType=[core::SimpleType|QualifiedName]
		public Assignment getResultTypeAssignment_1() { return cResultTypeAssignment_1; }

		//[core::SimpleType|QualifiedName]
		public CrossReference getResultTypeSimpleTypeCrossReference_1_0() { return cResultTypeSimpleTypeCrossReference_1_0; }

		//QualifiedName
		public RuleCall getResultTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1() { return cResultTypeSimpleTypeQualifiedNameParserRuleCall_1_0_1; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//parameterType=[core::SimpleType|QualifiedName]
		public Assignment getParameterTypeAssignment_4() { return cParameterTypeAssignment_4; }

		//[core::SimpleType|QualifiedName]
		public CrossReference getParameterTypeSimpleTypeCrossReference_4_0() { return cParameterTypeSimpleTypeCrossReference_4_0; }

		//QualifiedName
		public RuleCall getParameterTypeSimpleTypeQualifiedNameParserRuleCall_4_0_1() { return cParameterTypeSimpleTypeQualifiedNameParserRuleCall_4_0_1; }

		//parameterName=ID
		public Assignment getParameterNameAssignment_5() { return cParameterNameAssignment_5; }

		//ID
		public RuleCall getParameterNameIDTerminalRuleCall_5_0() { return cParameterNameIDTerminalRuleCall_5_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}

	public class QlStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QlStatement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cInsertStatementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSelectStatementParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cUpdateStatementParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cDeleteStatementParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cCallableStatementParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//QlStatement:
		//	InsertStatement | SelectStatement | UpdateStatement | DeleteStatement | CallableStatement;
		public ParserRule getRule() { return rule; }

		//InsertStatement | SelectStatement | UpdateStatement | DeleteStatement | CallableStatement
		public Alternatives getAlternatives() { return cAlternatives; }

		//InsertStatement
		public RuleCall getInsertStatementParserRuleCall_0() { return cInsertStatementParserRuleCall_0; }

		//SelectStatement
		public RuleCall getSelectStatementParserRuleCall_1() { return cSelectStatementParserRuleCall_1; }

		//UpdateStatement
		public RuleCall getUpdateStatementParserRuleCall_2() { return cUpdateStatementParserRuleCall_2; }

		//DeleteStatement
		public RuleCall getDeleteStatementParserRuleCall_3() { return cDeleteStatementParserRuleCall_3; }

		//CallableStatement
		public RuleCall getCallableStatementParserRuleCall_4() { return cCallableStatementParserRuleCall_4; }
	}

	public class CallableStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CallableStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cCallKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cFunctionCallAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cFunctionCallFunctionKeyword_1_0 = (Keyword)cFunctionCallAssignment_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cInParameterAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cInParameterCallInputParameterParserRuleCall_4_0_0 = (RuleCall)cInParameterAssignment_4_0.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
		private final Assignment cInParameterAssignment_4_1_1 = (Assignment)cGroup_4_1.eContents().get(1);
		private final RuleCall cInParameterCallInputParameterParserRuleCall_4_1_1_0 = (RuleCall)cInParameterAssignment_4_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cReturnKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOutParameterAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOutParameterCallOutputParameterParserRuleCall_6_1_0 = (RuleCall)cOutParameterAssignment_6_1.eContents().get(0);
		private final Group cGroup_6_2 = (Group)cGroup_6.eContents().get(2);
		private final Keyword cCommaKeyword_6_2_0 = (Keyword)cGroup_6_2.eContents().get(0);
		private final Assignment cOutParameterAssignment_6_2_1 = (Assignment)cGroup_6_2.eContents().get(1);
		private final RuleCall cOutParameterCallOutputParameterParserRuleCall_6_2_1_0 = (RuleCall)cOutParameterAssignment_6_2_1.eContents().get(0);
		
		//CallableStatement:
		//	"call" functionCall?="function"? name=QualifiedName "(" (inParameter+=CallInputParameter (","
		//	inParameter+=CallInputParameter)*)? ")" ("return" outParameter+=CallOutputParameter (","
		//	outParameter+=CallOutputParameter)*)?;
		public ParserRule getRule() { return rule; }

		//"call" functionCall?="function"? name=QualifiedName "(" (inParameter+=CallInputParameter (","
		//inParameter+=CallInputParameter)*)? ")" ("return" outParameter+=CallOutputParameter (","
		//outParameter+=CallOutputParameter)*)?
		public Group getGroup() { return cGroup; }

		//"call"
		public Keyword getCallKeyword_0() { return cCallKeyword_0; }

		//functionCall?="function"?
		public Assignment getFunctionCallAssignment_1() { return cFunctionCallAssignment_1; }

		//"function"
		public Keyword getFunctionCallFunctionKeyword_1_0() { return cFunctionCallFunctionKeyword_1_0; }

		//name=QualifiedName
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//(inParameter+=CallInputParameter ("," inParameter+=CallInputParameter)*)?
		public Group getGroup_4() { return cGroup_4; }

		//inParameter+=CallInputParameter
		public Assignment getInParameterAssignment_4_0() { return cInParameterAssignment_4_0; }

		//CallInputParameter
		public RuleCall getInParameterCallInputParameterParserRuleCall_4_0_0() { return cInParameterCallInputParameterParserRuleCall_4_0_0; }

		//("," inParameter+=CallInputParameter)*
		public Group getGroup_4_1() { return cGroup_4_1; }

		//","
		public Keyword getCommaKeyword_4_1_0() { return cCommaKeyword_4_1_0; }

		//inParameter+=CallInputParameter
		public Assignment getInParameterAssignment_4_1_1() { return cInParameterAssignment_4_1_1; }

		//CallInputParameter
		public RuleCall getInParameterCallInputParameterParserRuleCall_4_1_1_0() { return cInParameterCallInputParameterParserRuleCall_4_1_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }

		//("return" outParameter+=CallOutputParameter ("," outParameter+=CallOutputParameter)*)?
		public Group getGroup_6() { return cGroup_6; }

		//"return"
		public Keyword getReturnKeyword_6_0() { return cReturnKeyword_6_0; }

		//outParameter+=CallOutputParameter
		public Assignment getOutParameterAssignment_6_1() { return cOutParameterAssignment_6_1; }

		//CallOutputParameter
		public RuleCall getOutParameterCallOutputParameterParserRuleCall_6_1_0() { return cOutParameterCallOutputParameterParserRuleCall_6_1_0; }

		//("," outParameter+=CallOutputParameter)*
		public Group getGroup_6_2() { return cGroup_6_2; }

		//","
		public Keyword getCommaKeyword_6_2_0() { return cCommaKeyword_6_2_0; }

		//outParameter+=CallOutputParameter
		public Assignment getOutParameterAssignment_6_2_1() { return cOutParameterAssignment_6_2_1; }

		//CallOutputParameter
		public RuleCall getOutParameterCallOutputParameterParserRuleCall_6_2_1_0() { return cOutParameterCallOutputParameterParserRuleCall_6_2_1_0; }
	}

	public class CallInputParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CallInputParameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cCallInputParameterAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cParameterAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cParameterQueryParameterCrossReference_1_0 = (CrossReference)cParameterAssignment_1.eContents().get(0);
		private final RuleCall cParameterQueryParameterIDTerminalRuleCall_1_0_1 = (RuleCall)cParameterQueryParameterCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cFullStopKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cAttributeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_2_1_0 = (CrossReference)cAttributeAssignment_2_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_2_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_2_1_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cAsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_3_1_0 = (RuleCall)cNameAssignment_3_1.eContents().get(0);
		
		//CallInputParameter:
		//	{CallInputParameter} parameter=[QueryParameter] ("." attribute=[Attribute])? ("as" name=ID)?;
		public ParserRule getRule() { return rule; }

		//{CallInputParameter} parameter=[QueryParameter] ("." attribute=[Attribute])? ("as" name=ID)?
		public Group getGroup() { return cGroup; }

		//{CallInputParameter}
		public Action getCallInputParameterAction_0() { return cCallInputParameterAction_0; }

		//parameter=[QueryParameter]
		public Assignment getParameterAssignment_1() { return cParameterAssignment_1; }

		//[QueryParameter]
		public CrossReference getParameterQueryParameterCrossReference_1_0() { return cParameterQueryParameterCrossReference_1_0; }

		//ID
		public RuleCall getParameterQueryParameterIDTerminalRuleCall_1_0_1() { return cParameterQueryParameterIDTerminalRuleCall_1_0_1; }

		//("." attribute=[Attribute])?
		public Group getGroup_2() { return cGroup_2; }

		//"."
		public Keyword getFullStopKeyword_2_0() { return cFullStopKeyword_2_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_2_1() { return cAttributeAssignment_2_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_2_1_0() { return cAttributeAttributeCrossReference_2_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_2_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_2_1_0_1; }

		//("as" name=ID)?
		public Group getGroup_3() { return cGroup_3; }

		//"as"
		public Keyword getAsKeyword_3_0() { return cAsKeyword_3_0; }

		//name=ID
		public Assignment getNameAssignment_3_1() { return cNameAssignment_3_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_3_1_0() { return cNameIDTerminalRuleCall_3_1_0; }
	}

	public class CallOutputParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CallOutputParameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cCallOutputParameterAction_0 = (Action)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_1_0_0 = (RuleCall)cNameAssignment_1_0.eContents().get(0);
		private final Keyword cAsKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cAttributeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cAttributeAttributeCrossReference_2_0 = (CrossReference)cAttributeAssignment_2.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_2_0_1 = (RuleCall)cAttributeAttributeCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cFullStopKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNestedAttributeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final CrossReference cNestedAttributeAttributeCrossReference_3_1_0 = (CrossReference)cNestedAttributeAssignment_3_1.eContents().get(0);
		private final RuleCall cNestedAttributeAttributeIDTerminalRuleCall_3_1_0_1 = (RuleCall)cNestedAttributeAttributeCrossReference_3_1_0.eContents().get(1);
		
		//CallOutputParameter:
		//	{CallOutputParameter} (name=ID "as"?)? attribute=[Attribute]? ("." nestedAttribute=[Attribute])?;
		public ParserRule getRule() { return rule; }

		//{CallOutputParameter} (name=ID "as"?)? attribute=[Attribute]? ("." nestedAttribute=[Attribute])?
		public Group getGroup() { return cGroup; }

		//{CallOutputParameter}
		public Action getCallOutputParameterAction_0() { return cCallOutputParameterAction_0; }

		//(name=ID "as"?)?
		public Group getGroup_1() { return cGroup_1; }

		//name=ID
		public Assignment getNameAssignment_1_0() { return cNameAssignment_1_0; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_0() { return cNameIDTerminalRuleCall_1_0_0; }

		//"as"?
		public Keyword getAsKeyword_1_1() { return cAsKeyword_1_1; }

		//attribute=[Attribute]?
		public Assignment getAttributeAssignment_2() { return cAttributeAssignment_2; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_2_0() { return cAttributeAttributeCrossReference_2_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_2_0_1() { return cAttributeAttributeIDTerminalRuleCall_2_0_1; }

		//("." nestedAttribute=[Attribute])?
		public Group getGroup_3() { return cGroup_3; }

		//"."
		public Keyword getFullStopKeyword_3_0() { return cFullStopKeyword_3_0; }

		//nestedAttribute=[Attribute]
		public Assignment getNestedAttributeAssignment_3_1() { return cNestedAttributeAssignment_3_1; }

		//[Attribute]
		public CrossReference getNestedAttributeAttributeCrossReference_3_1_0() { return cNestedAttributeAttributeCrossReference_3_1_0; }

		//ID
		public RuleCall getNestedAttributeAttributeIDTerminalRuleCall_3_1_0_1() { return cNestedAttributeAttributeIDTerminalRuleCall_3_1_0_1; }
	}

	public class InsertStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InsertStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cInsertKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cIntoKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cEntityAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cEntityEntityCrossReference_2_0 = (CrossReference)cEntityAssignment_2.eContents().get(0);
		private final RuleCall cEntityEntityQualifiedNameParserRuleCall_2_0_1 = (RuleCall)cEntityEntityCrossReference_2_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cExpressionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cExpressionPrimaryExpressionParserRuleCall_4_0 = (RuleCall)cExpressionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cCommaKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cExpressionAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cExpressionPrimaryExpressionParserRuleCall_5_1_0 = (RuleCall)cExpressionAssignment_5_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cSelectStatementAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cSelectStatementSelectStatementParserRuleCall_7_0 = (RuleCall)cSelectStatementAssignment_7.eContents().get(0);
		
		//InsertStatement:
		//	"insert" "into" entity=[Entity|QualifiedName] "(" expression+=PrimaryExpression ("," expression+=PrimaryExpression)*
		//	")" selectStatement=SelectStatement;
		public ParserRule getRule() { return rule; }

		//"insert" "into" entity=[Entity|QualifiedName] "(" expression+=PrimaryExpression ("," expression+=PrimaryExpression)* ")"
		//selectStatement=SelectStatement
		public Group getGroup() { return cGroup; }

		//"insert"
		public Keyword getInsertKeyword_0() { return cInsertKeyword_0; }

		//"into"
		public Keyword getIntoKeyword_1() { return cIntoKeyword_1; }

		//entity=[Entity|QualifiedName]
		public Assignment getEntityAssignment_2() { return cEntityAssignment_2; }

		//[Entity|QualifiedName]
		public CrossReference getEntityEntityCrossReference_2_0() { return cEntityEntityCrossReference_2_0; }

		//QualifiedName
		public RuleCall getEntityEntityQualifiedNameParserRuleCall_2_0_1() { return cEntityEntityQualifiedNameParserRuleCall_2_0_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//expression+=PrimaryExpression
		public Assignment getExpressionAssignment_4() { return cExpressionAssignment_4; }

		//PrimaryExpression
		public RuleCall getExpressionPrimaryExpressionParserRuleCall_4_0() { return cExpressionPrimaryExpressionParserRuleCall_4_0; }

		//("," expression+=PrimaryExpression)*
		public Group getGroup_5() { return cGroup_5; }

		//","
		public Keyword getCommaKeyword_5_0() { return cCommaKeyword_5_0; }

		//expression+=PrimaryExpression
		public Assignment getExpressionAssignment_5_1() { return cExpressionAssignment_5_1; }

		//PrimaryExpression
		public RuleCall getExpressionPrimaryExpressionParserRuleCall_5_1_0() { return cExpressionPrimaryExpressionParserRuleCall_5_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }

		//selectStatement=SelectStatement
		public Assignment getSelectStatementAssignment_7() { return cSelectStatementAssignment_7; }

		//SelectStatement
		public RuleCall getSelectStatementSelectStatementParserRuleCall_7_0() { return cSelectStatementSelectStatementParserRuleCall_7_0; }
	}

	public class DeleteStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DeleteStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDeleteKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFromKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cEntityAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cEntityEntityCrossReference_2_0 = (CrossReference)cEntityAssignment_2.eContents().get(0);
		private final RuleCall cEntityEntityQualifiedNameParserRuleCall_2_0_1 = (RuleCall)cEntityEntityCrossReference_2_0.eContents().get(1);
		private final Keyword cAsKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cNameIDTerminalRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cWhereKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cWhereAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cWhereExpressionParserRuleCall_5_1_0 = (RuleCall)cWhereAssignment_5_1.eContents().get(0);
		
		//DeleteStatement:
		//	"delete" "from"? entity=[Entity|QualifiedName] "as"? name=ID ("where" where=Expression)?;
		public ParserRule getRule() { return rule; }

		//"delete" "from"? entity=[Entity|QualifiedName] "as"? name=ID ("where" where=Expression)?
		public Group getGroup() { return cGroup; }

		//"delete"
		public Keyword getDeleteKeyword_0() { return cDeleteKeyword_0; }

		//"from"?
		public Keyword getFromKeyword_1() { return cFromKeyword_1; }

		//entity=[Entity|QualifiedName]
		public Assignment getEntityAssignment_2() { return cEntityAssignment_2; }

		//[Entity|QualifiedName]
		public CrossReference getEntityEntityCrossReference_2_0() { return cEntityEntityCrossReference_2_0; }

		//QualifiedName
		public RuleCall getEntityEntityQualifiedNameParserRuleCall_2_0_1() { return cEntityEntityQualifiedNameParserRuleCall_2_0_1; }

		//"as"?
		public Keyword getAsKeyword_3() { return cAsKeyword_3; }

		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }

		//("where" where=Expression)?
		public Group getGroup_5() { return cGroup_5; }

		//"where"
		public Keyword getWhereKeyword_5_0() { return cWhereKeyword_5_0; }

		//where=Expression
		public Assignment getWhereAssignment_5_1() { return cWhereAssignment_5_1; }

		//Expression
		public RuleCall getWhereExpressionParserRuleCall_5_1_0() { return cWhereExpressionParserRuleCall_5_1_0; }
	}

	public class UpdateStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UpdateStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUpdateKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cVersionedAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cVersionedVersionedKeyword_1_0 = (Keyword)cVersionedAssignment_1.eContents().get(0);
		private final Keyword cFromKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cEntityEntityCrossReference_3_0 = (CrossReference)cEntityAssignment_3.eContents().get(0);
		private final RuleCall cEntityEntityQualifiedNameParserRuleCall_3_0_1 = (RuleCall)cEntityEntityCrossReference_3_0.eContents().get(1);
		private final Keyword cAsKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cNameAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cNameIDTerminalRuleCall_5_0 = (RuleCall)cNameAssignment_5.eContents().get(0);
		private final Keyword cSetKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cAssignmentAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cAssignmentPropertyAssignmentParserRuleCall_7_0 = (RuleCall)cAssignmentAssignment_7.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cCommaKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cAssignmentAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final RuleCall cAssignmentPropertyAssignmentParserRuleCall_8_1_0 = (RuleCall)cAssignmentAssignment_8_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cWhereKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cWhereAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cWhereExpressionParserRuleCall_9_1_0 = (RuleCall)cWhereAssignment_9_1.eContents().get(0);
		
		//UpdateStatement:
		//	"update" versioned?="versioned"? "from"? entity=[Entity|QualifiedName] "as"? name=ID "set"
		//	assignment+=PropertyAssignment ("," assignment+=PropertyAssignment)* ("where" where=Expression)?;
		public ParserRule getRule() { return rule; }

		//"update" versioned?="versioned"? "from"? entity=[Entity|QualifiedName] "as"? name=ID "set"
		//assignment+=PropertyAssignment ("," assignment+=PropertyAssignment)* ("where" where=Expression)?
		public Group getGroup() { return cGroup; }

		//"update"
		public Keyword getUpdateKeyword_0() { return cUpdateKeyword_0; }

		//versioned?="versioned"?
		public Assignment getVersionedAssignment_1() { return cVersionedAssignment_1; }

		//"versioned"
		public Keyword getVersionedVersionedKeyword_1_0() { return cVersionedVersionedKeyword_1_0; }

		//"from"?
		public Keyword getFromKeyword_2() { return cFromKeyword_2; }

		//entity=[Entity|QualifiedName]
		public Assignment getEntityAssignment_3() { return cEntityAssignment_3; }

		//[Entity|QualifiedName]
		public CrossReference getEntityEntityCrossReference_3_0() { return cEntityEntityCrossReference_3_0; }

		//QualifiedName
		public RuleCall getEntityEntityQualifiedNameParserRuleCall_3_0_1() { return cEntityEntityQualifiedNameParserRuleCall_3_0_1; }

		//"as"?
		public Keyword getAsKeyword_4() { return cAsKeyword_4; }

		//name=ID
		public Assignment getNameAssignment_5() { return cNameAssignment_5; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_5_0() { return cNameIDTerminalRuleCall_5_0; }

		//"set"
		public Keyword getSetKeyword_6() { return cSetKeyword_6; }

		//assignment+=PropertyAssignment
		public Assignment getAssignmentAssignment_7() { return cAssignmentAssignment_7; }

		//PropertyAssignment
		public RuleCall getAssignmentPropertyAssignmentParserRuleCall_7_0() { return cAssignmentPropertyAssignmentParserRuleCall_7_0; }

		//("," assignment+=PropertyAssignment)*
		public Group getGroup_8() { return cGroup_8; }

		//","
		public Keyword getCommaKeyword_8_0() { return cCommaKeyword_8_0; }

		//assignment+=PropertyAssignment
		public Assignment getAssignmentAssignment_8_1() { return cAssignmentAssignment_8_1; }

		//PropertyAssignment
		public RuleCall getAssignmentPropertyAssignmentParserRuleCall_8_1_0() { return cAssignmentPropertyAssignmentParserRuleCall_8_1_0; }

		//("where" where=Expression)?
		public Group getGroup_9() { return cGroup_9; }

		//"where"
		public Keyword getWhereKeyword_9_0() { return cWhereKeyword_9_0; }

		//where=Expression
		public Assignment getWhereAssignment_9_1() { return cWhereAssignment_9_1; }

		//Expression
		public RuleCall getWhereExpressionParserRuleCall_9_1_0() { return cWhereExpressionParserRuleCall_9_1_0; }
	}

	public class PropertyAssignmentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyAssignment");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cPropertyAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cPropertyPropertyValueParserRuleCall_0_0 = (RuleCall)cPropertyAssignment_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionConcatenationExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//PropertyAssignment:
		//	property=PropertyValue "=" expression=ConcatenationExpression;
		public ParserRule getRule() { return rule; }

		//property=PropertyValue "=" expression=ConcatenationExpression
		public Group getGroup() { return cGroup; }

		//property=PropertyValue
		public Assignment getPropertyAssignment_0() { return cPropertyAssignment_0; }

		//PropertyValue
		public RuleCall getPropertyPropertyValueParserRuleCall_0_0() { return cPropertyPropertyValueParserRuleCall_0_0; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//expression=ConcatenationExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//ConcatenationExpression
		public RuleCall getExpressionConcatenationExpressionParserRuleCall_2_0() { return cExpressionConcatenationExpressionParserRuleCall_2_0; }
	}

	public class SelectStatementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SelectStatement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Keyword cSelectKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Alternatives cAlternatives_0_1 = (Alternatives)cGroup_0.eContents().get(1);
		private final RuleCall cSelectPropertiesParserRuleCall_0_1_0 = (RuleCall)cAlternatives_0_1.eContents().get(0);
		private final RuleCall cSelectClassParserRuleCall_0_1_1 = (RuleCall)cAlternatives_0_1.eContents().get(1);
		private final RuleCall cSelectObjectParserRuleCall_0_1_2 = (RuleCall)cAlternatives_0_1.eContents().get(2);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cFromKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cFromAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cFromFromRangeParserRuleCall_1_1_0 = (RuleCall)cFromAssignment_1_1.eContents().get(0);
		private final Alternatives cAlternatives_1_2 = (Alternatives)cGroup_1.eContents().get(2);
		private final Assignment cJoinAssignment_1_2_0 = (Assignment)cAlternatives_1_2.eContents().get(0);
		private final RuleCall cJoinJoinParserRuleCall_1_2_0_0 = (RuleCall)cJoinAssignment_1_2_0.eContents().get(0);
		private final Group cGroup_1_2_1 = (Group)cAlternatives_1_2.eContents().get(1);
		private final Keyword cCommaKeyword_1_2_1_0 = (Keyword)cGroup_1_2_1.eContents().get(0);
		private final Assignment cFromAssignment_1_2_1_1 = (Assignment)cGroup_1_2_1.eContents().get(1);
		private final RuleCall cFromFromRangeParserRuleCall_1_2_1_1_0 = (RuleCall)cFromAssignment_1_2_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cWhereKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cWhereAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cWhereExpressionParserRuleCall_2_1_0 = (RuleCall)cWhereAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cGroupKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cByKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cGroupByAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cGroupByExpressionParserRuleCall_3_2_0 = (RuleCall)cGroupByAssignment_3_2.eContents().get(0);
		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
		private final Assignment cGroupByAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
		private final RuleCall cGroupByExpressionParserRuleCall_3_3_1_0 = (RuleCall)cGroupByAssignment_3_3_1.eContents().get(0);
		private final Group cGroup_3_4 = (Group)cGroup_3.eContents().get(4);
		private final Keyword cHavingKeyword_3_4_0 = (Keyword)cGroup_3_4.eContents().get(0);
		private final Assignment cHavingAssignment_3_4_1 = (Assignment)cGroup_3_4.eContents().get(1);
		private final RuleCall cHavingExpressionParserRuleCall_3_4_1_0 = (RuleCall)cHavingAssignment_3_4_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cOrderKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cByKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cOrderByAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cOrderBySortOrderElementParserRuleCall_4_2_0 = (RuleCall)cOrderByAssignment_4_2.eContents().get(0);
		private final Group cGroup_4_3 = (Group)cGroup_4.eContents().get(3);
		private final Keyword cCommaKeyword_4_3_0 = (Keyword)cGroup_4_3.eContents().get(0);
		private final Assignment cOrderByAssignment_4_3_1 = (Assignment)cGroup_4_3.eContents().get(1);
		private final RuleCall cOrderBySortOrderElementParserRuleCall_4_3_1_0 = (RuleCall)cOrderByAssignment_4_3_1.eContents().get(0);
		
		//SelectStatement:
		//	("select" (SelectProperties | SelectClass | SelectObject))? ("from" from+=FromRange (join+=Join | ","
		//	from+=FromRange)*)? ("where" where=Expression)? ("group" "by" groupBy+=Expression ("," groupBy+=Expression)* ("having"
		//	having=Expression)?)? ("order" "by" orderBy+=SortOrderElement ("," orderBy+=SortOrderElement)*)?;
		public ParserRule getRule() { return rule; }

		//("select" (SelectProperties | SelectClass | SelectObject))? ("from" from+=FromRange (join+=Join | ","
		//from+=FromRange)*)? ("where" where=Expression)? ("group" "by" groupBy+=Expression ("," groupBy+=Expression)* ("having"
		//having=Expression)?)? ("order" "by" orderBy+=SortOrderElement ("," orderBy+=SortOrderElement)*)?
		public Group getGroup() { return cGroup; }

		//("select" (SelectProperties | SelectClass | SelectObject))?
		public Group getGroup_0() { return cGroup_0; }

		//"select"
		public Keyword getSelectKeyword_0_0() { return cSelectKeyword_0_0; }

		//SelectProperties | SelectClass | SelectObject
		public Alternatives getAlternatives_0_1() { return cAlternatives_0_1; }

		//SelectProperties
		public RuleCall getSelectPropertiesParserRuleCall_0_1_0() { return cSelectPropertiesParserRuleCall_0_1_0; }

		//SelectClass
		public RuleCall getSelectClassParserRuleCall_0_1_1() { return cSelectClassParserRuleCall_0_1_1; }

		//SelectObject
		public RuleCall getSelectObjectParserRuleCall_0_1_2() { return cSelectObjectParserRuleCall_0_1_2; }

		//("from" from+=FromRange (join+=Join | "," from+=FromRange)*)?
		public Group getGroup_1() { return cGroup_1; }

		//"from"
		public Keyword getFromKeyword_1_0() { return cFromKeyword_1_0; }

		//from+=FromRange
		public Assignment getFromAssignment_1_1() { return cFromAssignment_1_1; }

		//FromRange
		public RuleCall getFromFromRangeParserRuleCall_1_1_0() { return cFromFromRangeParserRuleCall_1_1_0; }

		//(join+=Join | "," from+=FromRange)*
		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }

		//join+=Join
		public Assignment getJoinAssignment_1_2_0() { return cJoinAssignment_1_2_0; }

		//Join
		public RuleCall getJoinJoinParserRuleCall_1_2_0_0() { return cJoinJoinParserRuleCall_1_2_0_0; }

		//"," from+=FromRange
		public Group getGroup_1_2_1() { return cGroup_1_2_1; }

		//","
		public Keyword getCommaKeyword_1_2_1_0() { return cCommaKeyword_1_2_1_0; }

		//from+=FromRange
		public Assignment getFromAssignment_1_2_1_1() { return cFromAssignment_1_2_1_1; }

		//FromRange
		public RuleCall getFromFromRangeParserRuleCall_1_2_1_1_0() { return cFromFromRangeParserRuleCall_1_2_1_1_0; }

		//("where" where=Expression)?
		public Group getGroup_2() { return cGroup_2; }

		//"where"
		public Keyword getWhereKeyword_2_0() { return cWhereKeyword_2_0; }

		//where=Expression
		public Assignment getWhereAssignment_2_1() { return cWhereAssignment_2_1; }

		//Expression
		public RuleCall getWhereExpressionParserRuleCall_2_1_0() { return cWhereExpressionParserRuleCall_2_1_0; }

		//("group" "by" groupBy+=Expression ("," groupBy+=Expression)* ("having" having=Expression)?)?
		public Group getGroup_3() { return cGroup_3; }

		//"group"
		public Keyword getGroupKeyword_3_0() { return cGroupKeyword_3_0; }

		//"by"
		public Keyword getByKeyword_3_1() { return cByKeyword_3_1; }

		//groupBy+=Expression
		public Assignment getGroupByAssignment_3_2() { return cGroupByAssignment_3_2; }

		//Expression
		public RuleCall getGroupByExpressionParserRuleCall_3_2_0() { return cGroupByExpressionParserRuleCall_3_2_0; }

		//("," groupBy+=Expression)*
		public Group getGroup_3_3() { return cGroup_3_3; }

		//","
		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }

		//groupBy+=Expression
		public Assignment getGroupByAssignment_3_3_1() { return cGroupByAssignment_3_3_1; }

		//Expression
		public RuleCall getGroupByExpressionParserRuleCall_3_3_1_0() { return cGroupByExpressionParserRuleCall_3_3_1_0; }

		//("having" having=Expression)?
		public Group getGroup_3_4() { return cGroup_3_4; }

		//"having"
		public Keyword getHavingKeyword_3_4_0() { return cHavingKeyword_3_4_0; }

		//having=Expression
		public Assignment getHavingAssignment_3_4_1() { return cHavingAssignment_3_4_1; }

		//Expression
		public RuleCall getHavingExpressionParserRuleCall_3_4_1_0() { return cHavingExpressionParserRuleCall_3_4_1_0; }

		//("order" "by" orderBy+=SortOrderElement ("," orderBy+=SortOrderElement)*)?
		public Group getGroup_4() { return cGroup_4; }

		//"order"
		public Keyword getOrderKeyword_4_0() { return cOrderKeyword_4_0; }

		//"by"
		public Keyword getByKeyword_4_1() { return cByKeyword_4_1; }

		//orderBy+=SortOrderElement
		public Assignment getOrderByAssignment_4_2() { return cOrderByAssignment_4_2; }

		//SortOrderElement
		public RuleCall getOrderBySortOrderElementParserRuleCall_4_2_0() { return cOrderBySortOrderElementParserRuleCall_4_2_0; }

		//("," orderBy+=SortOrderElement)*
		public Group getGroup_4_3() { return cGroup_4_3; }

		//","
		public Keyword getCommaKeyword_4_3_0() { return cCommaKeyword_4_3_0; }

		//orderBy+=SortOrderElement
		public Assignment getOrderByAssignment_4_3_1() { return cOrderByAssignment_4_3_1; }

		//SortOrderElement
		public RuleCall getOrderBySortOrderElementParserRuleCall_4_3_1_0() { return cOrderBySortOrderElementParserRuleCall_4_3_1_0; }
	}

	public class SortOrderElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SortOrderElement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cExpressionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cExpressionExpressionParserRuleCall_0_0 = (RuleCall)cExpressionAssignment_0.eContents().get(0);
		private final Assignment cSortOrderAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cSortOrderAscendingOrDescendingParserRuleCall_1_0 = (RuleCall)cSortOrderAssignment_1.eContents().get(0);
		
		//SortOrderElement:
		//	expression=Expression sortOrder=AscendingOrDescending?;
		public ParserRule getRule() { return rule; }

		//expression=Expression sortOrder=AscendingOrDescending?
		public Group getGroup() { return cGroup; }

		//expression=Expression
		public Assignment getExpressionAssignment_0() { return cExpressionAssignment_0; }

		//Expression
		public RuleCall getExpressionExpressionParserRuleCall_0_0() { return cExpressionExpressionParserRuleCall_0_0; }

		//sortOrder=AscendingOrDescending?
		public Assignment getSortOrderAssignment_1() { return cSortOrderAssignment_1; }

		//AscendingOrDescending
		public RuleCall getSortOrderAscendingOrDescendingParserRuleCall_1_0() { return cSortOrderAscendingOrDescendingParserRuleCall_1_0; }
	}

	public class SelectPropertiesElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SelectProperties");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDistinctAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cDistinctDistinctKeyword_0_0 = (Keyword)cDistinctAssignment_0.eContents().get(0);
		private final Assignment cPropertiesAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cPropertiesAliasedExpressionParserRuleCall_1_0 = (RuleCall)cPropertiesAssignment_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 cPropertiesAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cPropertiesAliasedExpressionParserRuleCall_2_1_0 = (RuleCall)cPropertiesAssignment_2_1.eContents().get(0);
		
		//SelectProperties:
		//	distinct?="distinct"? properties+=AliasedExpression ("," properties+=AliasedExpression)*;
		public ParserRule getRule() { return rule; }

		//distinct?="distinct"? properties+=AliasedExpression ("," properties+=AliasedExpression)*
		public Group getGroup() { return cGroup; }

		//distinct?="distinct"?
		public Assignment getDistinctAssignment_0() { return cDistinctAssignment_0; }

		//"distinct"
		public Keyword getDistinctDistinctKeyword_0_0() { return cDistinctDistinctKeyword_0_0; }

		//properties+=AliasedExpression
		public Assignment getPropertiesAssignment_1() { return cPropertiesAssignment_1; }

		//AliasedExpression
		public RuleCall getPropertiesAliasedExpressionParserRuleCall_1_0() { return cPropertiesAliasedExpressionParserRuleCall_1_0; }

		//("," properties+=AliasedExpression)*
		public Group getGroup_2() { return cGroup_2; }

		//","
		public Keyword getCommaKeyword_2_0() { return cCommaKeyword_2_0; }

		//properties+=AliasedExpression
		public Assignment getPropertiesAssignment_2_1() { return cPropertiesAssignment_2_1; }

		//AliasedExpression
		public RuleCall getPropertiesAliasedExpressionParserRuleCall_2_1_0() { return cPropertiesAliasedExpressionParserRuleCall_2_1_0; }
	}

	public class SelectClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SelectClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cNewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cClassAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cClassQualifiedNameParserRuleCall_1_0 = (RuleCall)cClassAssignment_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cArgumentsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cArgumentsAliasedExpressionParserRuleCall_3_0 = (RuleCall)cArgumentsAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cArgumentsAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cArgumentsAliasedExpressionParserRuleCall_4_1_0 = (RuleCall)cArgumentsAssignment_4_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//SelectClass:
		//	"new" class=QualifiedName "(" arguments+=AliasedExpression ("," arguments+=AliasedExpression)* ")";
		public ParserRule getRule() { return rule; }

		//"new" class=QualifiedName "(" arguments+=AliasedExpression ("," arguments+=AliasedExpression)* ")"
		public Group getGroup() { return cGroup; }

		//"new"
		public Keyword getNewKeyword_0() { return cNewKeyword_0; }

		//class=QualifiedName
		public Assignment getClassAssignment_1() { return cClassAssignment_1; }

		//QualifiedName
		public RuleCall getClassQualifiedNameParserRuleCall_1_0() { return cClassQualifiedNameParserRuleCall_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }

		//arguments+=AliasedExpression
		public Assignment getArgumentsAssignment_3() { return cArgumentsAssignment_3; }

		//AliasedExpression
		public RuleCall getArgumentsAliasedExpressionParserRuleCall_3_0() { return cArgumentsAliasedExpressionParserRuleCall_3_0; }

		//("," arguments+=AliasedExpression)*
		public Group getGroup_4() { return cGroup_4; }

		//","
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }

		//arguments+=AliasedExpression
		public Assignment getArgumentsAssignment_4_1() { return cArgumentsAssignment_4_1; }

		//AliasedExpression
		public RuleCall getArgumentsAliasedExpressionParserRuleCall_4_1_0() { return cArgumentsAliasedExpressionParserRuleCall_4_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
	}

	public class SelectObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SelectObject");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cObjectKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//SelectObject:
		//	"object" "(" name=ID ")";
		public ParserRule getRule() { return rule; }

		//"object" "(" name=ID ")"
		public Group getGroup() { return cGroup; }

		//"object"
		public Keyword getObjectKeyword_0() { return cObjectKeyword_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}

	public class FromRangeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FromRange");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cFromClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cInClassParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cInCollectionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cInCollectionElementsParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//FromRange:
		//	FromClass | InClass | InCollection | InCollectionElements;
		public ParserRule getRule() { return rule; }

		//FromClass | InClass | InCollection | InCollectionElements
		public Alternatives getAlternatives() { return cAlternatives; }

		//FromClass
		public RuleCall getFromClassParserRuleCall_0() { return cFromClassParserRuleCall_0; }

		//InClass
		public RuleCall getInClassParserRuleCall_1() { return cInClassParserRuleCall_1; }

		//InCollection
		public RuleCall getInCollectionParserRuleCall_2() { return cInCollectionParserRuleCall_2; }

		//InCollectionElements
		public RuleCall getInCollectionElementsParserRuleCall_3() { return cInCollectionElementsParserRuleCall_3; }
	}

	public class FromClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FromClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cEntityAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cEntityEntityCrossReference_0_0 = (CrossReference)cEntityAssignment_0.eContents().get(0);
		private final RuleCall cEntityEntityQualifiedNameParserRuleCall_0_0_1 = (RuleCall)cEntityEntityCrossReference_0_0.eContents().get(1);
		private final Keyword cAsKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Assignment cPopertyFetchAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cPopertyFetchPropertyFetchParserRuleCall_3_0 = (RuleCall)cPopertyFetchAssignment_3.eContents().get(0);
		
		//FromClass:
		//	entity=[Entity|QualifiedName] "as"? name=ID popertyFetch?=PropertyFetch?;
		public ParserRule getRule() { return rule; }

		//entity=[Entity|QualifiedName] "as"? name=ID popertyFetch?=PropertyFetch?
		public Group getGroup() { return cGroup; }

		//entity=[Entity|QualifiedName]
		public Assignment getEntityAssignment_0() { return cEntityAssignment_0; }

		//[Entity|QualifiedName]
		public CrossReference getEntityEntityCrossReference_0_0() { return cEntityEntityCrossReference_0_0; }

		//QualifiedName
		public RuleCall getEntityEntityQualifiedNameParserRuleCall_0_0_1() { return cEntityEntityQualifiedNameParserRuleCall_0_0_1; }

		//"as"?
		public Keyword getAsKeyword_1() { return cAsKeyword_1; }

		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }

		//popertyFetch?=PropertyFetch?
		public Assignment getPopertyFetchAssignment_3() { return cPopertyFetchAssignment_3; }

		//PropertyFetch
		public RuleCall getPopertyFetchPropertyFetchParserRuleCall_3_0() { return cPopertyFetchPropertyFetchParserRuleCall_3_0; }
	}

	public class InClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cInKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cClassKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cClassAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cClassQualifiedNameParserRuleCall_3_0 = (RuleCall)cClassAssignment_3.eContents().get(0);
		
		//InClass:
		//	name=ID "in" "class" class=QualifiedName;
		public ParserRule getRule() { return rule; }

		//name=ID "in" "class" class=QualifiedName
		public Group getGroup() { return cGroup; }

		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }

		//"in"
		public Keyword getInKeyword_1() { return cInKeyword_1; }

		//"class"
		public Keyword getClassKeyword_2() { return cClassKeyword_2; }

		//class=QualifiedName
		public Assignment getClassAssignment_3() { return cClassAssignment_3; }

		//QualifiedName
		public RuleCall getClassQualifiedNameParserRuleCall_3_0() { return cClassQualifiedNameParserRuleCall_3_0; }
	}

	public class InCollectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InCollection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cInKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cPathAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cPathQualifiedNameParserRuleCall_2_0 = (RuleCall)cPathAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cAliasAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cAliasIDTerminalRuleCall_4_0 = (RuleCall)cAliasAssignment_4.eContents().get(0);
		
		//InCollection:
		//	"in" "(" path=QualifiedName ")" alias=ID;
		public ParserRule getRule() { return rule; }

		//"in" "(" path=QualifiedName ")" alias=ID
		public Group getGroup() { return cGroup; }

		//"in"
		public Keyword getInKeyword_0() { return cInKeyword_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//path=QualifiedName
		public Assignment getPathAssignment_2() { return cPathAssignment_2; }

		//QualifiedName
		public RuleCall getPathQualifiedNameParserRuleCall_2_0() { return cPathQualifiedNameParserRuleCall_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }

		//alias=ID
		public Assignment getAliasAssignment_4() { return cAliasAssignment_4; }

		//ID
		public RuleCall getAliasIDTerminalRuleCall_4_0() { return cAliasIDTerminalRuleCall_4_0; }
	}

	public class InCollectionElementsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InCollectionElements");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cInKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cElementsKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cReferenceAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cReferenceQualifiedNameParserRuleCall_4_0 = (RuleCall)cReferenceAssignment_4.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//InCollectionElements:
		//	name=ID "in" "elements" "(" reference=QualifiedName ")";
		public ParserRule getRule() { return rule; }

		//name=ID "in" "elements" "(" reference=QualifiedName ")"
		public Group getGroup() { return cGroup; }

		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }

		//"in"
		public Keyword getInKeyword_1() { return cInKeyword_1; }

		//"elements"
		public Keyword getElementsKeyword_2() { return cElementsKeyword_2; }

		//"("
		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }

		//reference=QualifiedName
		public Assignment getReferenceAssignment_4() { return cReferenceAssignment_4; }

		//QualifiedName
		public RuleCall getReferenceQualifiedNameParserRuleCall_4_0() { return cReferenceQualifiedNameParserRuleCall_4_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
	}

	public class JoinElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Join");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cTypeJoinTypeParserRuleCall_0_0 = (RuleCall)cTypeAssignment_0.eContents().get(0);
		private final Keyword cJoinKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cFetchAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cFetchFetchKeyword_2_0 = (Keyword)cFetchAssignment_2.eContents().get(0);
		private final Assignment cEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cEntityJoinEntityCrossReference_3_0 = (CrossReference)cEntityAssignment_3.eContents().get(0);
		private final RuleCall cEntityJoinEntityIDTerminalRuleCall_3_0_1 = (RuleCall)cEntityJoinEntityCrossReference_3_0.eContents().get(1);
		private final Keyword cFullStopKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cReferenceAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final CrossReference cReferenceAttributeCrossReference_5_0 = (CrossReference)cReferenceAssignment_5.eContents().get(0);
		private final RuleCall cReferenceAttributeIDTerminalRuleCall_5_0_1 = (RuleCall)cReferenceAttributeCrossReference_5_0.eContents().get(1);
		private final Keyword cAsKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cNameAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cNameIDTerminalRuleCall_7_0 = (RuleCall)cNameAssignment_7.eContents().get(0);
		private final Assignment cPropertyFetchAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cPropertyFetchPropertyFetchParserRuleCall_8_0 = (RuleCall)cPropertyFetchAssignment_8.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cWithKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cExpressionAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cExpressionExpressionParserRuleCall_9_1_0 = (RuleCall)cExpressionAssignment_9_1.eContents().get(0);
		
		//Join:
		//	type=JoinType? "join" fetch?="fetch"? entity=[JoinEntity] "." reference=[Attribute] "as"? name=ID
		//	propertyFetch?=PropertyFetch? ("with" expression=Expression)?;
		public ParserRule getRule() { return rule; }

		//type=JoinType? "join" fetch?="fetch"? entity=[JoinEntity] "." reference=[Attribute] "as"? name=ID
		//propertyFetch?=PropertyFetch? ("with" expression=Expression)?
		public Group getGroup() { return cGroup; }

		//type=JoinType?
		public Assignment getTypeAssignment_0() { return cTypeAssignment_0; }

		//JoinType
		public RuleCall getTypeJoinTypeParserRuleCall_0_0() { return cTypeJoinTypeParserRuleCall_0_0; }

		//"join"
		public Keyword getJoinKeyword_1() { return cJoinKeyword_1; }

		//fetch?="fetch"?
		public Assignment getFetchAssignment_2() { return cFetchAssignment_2; }

		//"fetch"
		public Keyword getFetchFetchKeyword_2_0() { return cFetchFetchKeyword_2_0; }

		//entity=[JoinEntity]
		public Assignment getEntityAssignment_3() { return cEntityAssignment_3; }

		//[JoinEntity]
		public CrossReference getEntityJoinEntityCrossReference_3_0() { return cEntityJoinEntityCrossReference_3_0; }

		//ID
		public RuleCall getEntityJoinEntityIDTerminalRuleCall_3_0_1() { return cEntityJoinEntityIDTerminalRuleCall_3_0_1; }

		//"."
		public Keyword getFullStopKeyword_4() { return cFullStopKeyword_4; }

		//reference=[Attribute]
		public Assignment getReferenceAssignment_5() { return cReferenceAssignment_5; }

		//[Attribute]
		public CrossReference getReferenceAttributeCrossReference_5_0() { return cReferenceAttributeCrossReference_5_0; }

		//ID
		public RuleCall getReferenceAttributeIDTerminalRuleCall_5_0_1() { return cReferenceAttributeIDTerminalRuleCall_5_0_1; }

		//"as"?
		public Keyword getAsKeyword_6() { return cAsKeyword_6; }

		//name=ID
		public Assignment getNameAssignment_7() { return cNameAssignment_7; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_7_0() { return cNameIDTerminalRuleCall_7_0; }

		//propertyFetch?=PropertyFetch?
		public Assignment getPropertyFetchAssignment_8() { return cPropertyFetchAssignment_8; }

		//PropertyFetch
		public RuleCall getPropertyFetchPropertyFetchParserRuleCall_8_0() { return cPropertyFetchPropertyFetchParserRuleCall_8_0; }

		//("with" expression=Expression)?
		public Group getGroup_9() { return cGroup_9; }

		//"with"
		public Keyword getWithKeyword_9_0() { return cWithKeyword_9_0; }

		//expression=Expression
		public Assignment getExpressionAssignment_9_1() { return cExpressionAssignment_9_1; }

		//Expression
		public RuleCall getExpressionExpressionParserRuleCall_9_1_0() { return cExpressionExpressionParserRuleCall_9_1_0; }
	}

	public class JoinEntityElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "JoinEntity");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cFromClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cJoinParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//JoinEntity:
		//	FromClass | Join;
		public ParserRule getRule() { return rule; }

		//FromClass | Join
		public Alternatives getAlternatives() { return cAlternatives; }

		//FromClass
		public RuleCall getFromClassParserRuleCall_0() { return cFromClassParserRuleCall_0; }

		//Join
		public RuleCall getJoinParserRuleCall_1() { return cJoinParserRuleCall_1; }
	}

	public class AliasedExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AliasedExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cAliasedExpressionExpressionAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Keyword cAsKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cNameAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_1_2_0 = (RuleCall)cNameAssignment_1_2.eContents().get(0);
		
		//AliasedExpression returns Expression:
		//	Expression ({AliasedExpression.expression=current} "as" name=ID)?;
		public ParserRule getRule() { return rule; }

		//Expression ({AliasedExpression.expression=current} "as" name=ID)?
		public Group getGroup() { return cGroup; }

		//Expression
		public RuleCall getExpressionParserRuleCall_0() { return cExpressionParserRuleCall_0; }

		//({AliasedExpression.expression=current} "as" name=ID)?
		public Group getGroup_1() { return cGroup_1; }

		//{AliasedExpression.expression=current}
		public Action getAliasedExpressionExpressionAction_1_0() { return cAliasedExpressionExpressionAction_1_0; }

		//"as"
		public Keyword getAsKeyword_1_1() { return cAsKeyword_1_1; }

		//name=ID
		public Assignment getNameAssignment_1_2() { return cNameAssignment_1_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_2_0() { return cNameIDTerminalRuleCall_1_2_0; }
	}

	public class ExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
		private final RuleCall cLogicalOrExpressionParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//Expression:
		//	LogicalOrExpression;
		public ParserRule getRule() { return rule; }

		//LogicalOrExpression
		public RuleCall getLogicalOrExpressionParserRuleCall() { return cLogicalOrExpressionParserRuleCall; }
	}

	public class LogicalOrExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalOrExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cLogicalAndExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cOperatorOrKeyword_1_1_0 = (Keyword)cOperatorAssignment_1_1.eContents().get(0);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightLogicalAndExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//LogicalOrExpression returns Expression:
		//	LogicalAndExpression ({BinaryExpression.left=current} operator="or" right=LogicalAndExpression)*;
		public ParserRule getRule() { return rule; }

		//LogicalAndExpression ({BinaryExpression.left=current} operator="or" right=LogicalAndExpression)*
		public Group getGroup() { return cGroup; }

		//LogicalAndExpression
		public RuleCall getLogicalAndExpressionParserRuleCall_0() { return cLogicalAndExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator="or" right=LogicalAndExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator="or"
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"or"
		public Keyword getOperatorOrKeyword_1_1_0() { return cOperatorOrKeyword_1_1_0; }

		//right=LogicalAndExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//LogicalAndExpression
		public RuleCall getRightLogicalAndExpressionParserRuleCall_1_2_0() { return cRightLogicalAndExpressionParserRuleCall_1_2_0; }
	}

	public class LogicalAndExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalAndExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cPrefixExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cOperatorAndKeyword_1_1_0 = (Keyword)cOperatorAssignment_1_1.eContents().get(0);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightPrefixExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//LogicalAndExpression returns Expression:
		//	PrefixExpression ({BinaryExpression.left=current} operator="and" right=PrefixExpression)*;
		public ParserRule getRule() { return rule; }

		//PrefixExpression ({BinaryExpression.left=current} operator="and" right=PrefixExpression)*
		public Group getGroup() { return cGroup; }

		//PrefixExpression
		public RuleCall getPrefixExpressionParserRuleCall_0() { return cPrefixExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator="and" right=PrefixExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator="and"
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"and"
		public Keyword getOperatorAndKeyword_1_1_0() { return cOperatorAndKeyword_1_1_0; }

		//right=PrefixExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//PrefixExpression
		public RuleCall getRightPrefixExpressionParserRuleCall_1_2_0() { return cRightPrefixExpressionParserRuleCall_1_2_0; }
	}

	public class PrefixExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrefixExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cNotExpressionAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Keyword cNotKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cExpressionAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cExpressionPrefixExpressionParserRuleCall_0_2_0 = (RuleCall)cExpressionAssignment_0_2.eContents().get(0);
		private final RuleCall cEqualityExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//PrefixExpression returns Expression:
		//	{NotExpression} "not" expression=PrefixExpression | EqualityExpression;
		public ParserRule getRule() { return rule; }

		//{NotExpression} "not" expression=PrefixExpression | EqualityExpression
		public Alternatives getAlternatives() { return cAlternatives; }

		//{NotExpression} "not" expression=PrefixExpression
		public Group getGroup_0() { return cGroup_0; }

		//{NotExpression}
		public Action getNotExpressionAction_0_0() { return cNotExpressionAction_0_0; }

		//"not"
		public Keyword getNotKeyword_0_1() { return cNotKeyword_0_1; }

		//expression=PrefixExpression
		public Assignment getExpressionAssignment_0_2() { return cExpressionAssignment_0_2; }

		//PrefixExpression
		public RuleCall getExpressionPrefixExpressionParserRuleCall_0_2_0() { return cExpressionPrefixExpressionParserRuleCall_0_2_0; }

		//EqualityExpression
		public RuleCall getEqualityExpressionParserRuleCall_1() { return cEqualityExpressionParserRuleCall_1; }
	}

	public class EqualityExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EqualityExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cRelationalExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Alternatives cOperatorAlternatives_1_1_0 = (Alternatives)cOperatorAssignment_1_1.eContents().get(0);
		private final Keyword cOperatorEqualsSignKeyword_1_1_0_0 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(0);
		private final Keyword cOperatorIsKeyword_1_1_0_1 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(1);
		private final RuleCall cOperatorIsNotParserRuleCall_1_1_0_2 = (RuleCall)cOperatorAlternatives_1_1_0.eContents().get(2);
		private final Keyword cOperatorExclamationMarkEqualsSignKeyword_1_1_0_3 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(3);
		private final Keyword cOperatorLessThanSignGreaterThanSignKeyword_1_1_0_4 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(4);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightRelationalExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//EqualityExpression returns Expression:
		//	RelationalExpression ({BinaryExpression.left=current} operator=("=" | "is" | IsNot | "!=" | "<>")
		//	right=RelationalExpression)*;
		public ParserRule getRule() { return rule; }

		//RelationalExpression ({BinaryExpression.left=current} operator=("=" | "is" | IsNot | "!=" | "<>")
		//right=RelationalExpression)*
		public Group getGroup() { return cGroup; }

		//RelationalExpression
		public RuleCall getRelationalExpressionParserRuleCall_0() { return cRelationalExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator=("=" | "is" | IsNot | "!=" | "<>") right=RelationalExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator=("=" | "is" | IsNot | "!=" | "<>")
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"=" | "is" | IsNot | "!=" | "<>"
		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }

		//"="
		public Keyword getOperatorEqualsSignKeyword_1_1_0_0() { return cOperatorEqualsSignKeyword_1_1_0_0; }

		//"is"
		public Keyword getOperatorIsKeyword_1_1_0_1() { return cOperatorIsKeyword_1_1_0_1; }

		//IsNot
		public RuleCall getOperatorIsNotParserRuleCall_1_1_0_2() { return cOperatorIsNotParserRuleCall_1_1_0_2; }

		//"!="
		public Keyword getOperatorExclamationMarkEqualsSignKeyword_1_1_0_3() { return cOperatorExclamationMarkEqualsSignKeyword_1_1_0_3; }

		//"<>"
		public Keyword getOperatorLessThanSignGreaterThanSignKeyword_1_1_0_4() { return cOperatorLessThanSignGreaterThanSignKeyword_1_1_0_4; }

		//right=RelationalExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//RelationalExpression
		public RuleCall getRightRelationalExpressionParserRuleCall_1_2_0() { return cRightRelationalExpressionParserRuleCall_1_2_0; }
	}

	public class RelationalExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RelationalExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cConcatenationExpressionParserRuleCall_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 Action cBinaryExpressionLeftAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
		private final Assignment cOperatorAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final Alternatives cOperatorAlternatives_1_0_1_0 = (Alternatives)cOperatorAssignment_1_0_1.eContents().get(0);
		private final Keyword cOperatorLessThanSignKeyword_1_0_1_0_0 = (Keyword)cOperatorAlternatives_1_0_1_0.eContents().get(0);
		private final Keyword cOperatorGreaterThanSignKeyword_1_0_1_0_1 = (Keyword)cOperatorAlternatives_1_0_1_0.eContents().get(1);
		private final Keyword cOperatorLessThanSignEqualsSignKeyword_1_0_1_0_2 = (Keyword)cOperatorAlternatives_1_0_1_0.eContents().get(2);
		private final Keyword cOperatorGreaterThanSignEqualsSignKeyword_1_0_1_0_3 = (Keyword)cOperatorAlternatives_1_0_1_0.eContents().get(3);
		private final Assignment cRightAssignment_1_0_2 = (Assignment)cGroup_1_0.eContents().get(2);
		private final RuleCall cRightAdditiveExpressionParserRuleCall_1_0_2_0 = (RuleCall)cRightAssignment_1_0_2.eContents().get(0);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Action cInExpressionExpressionAction_1_1_0 = (Action)cGroup_1_1.eContents().get(0);
		private final Assignment cNotAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final Keyword cNotNotKeyword_1_1_1_0 = (Keyword)cNotAssignment_1_1_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1_2 = (Assignment)cGroup_1_1.eContents().get(2);
		private final Keyword cOperatorInKeyword_1_1_2_0 = (Keyword)cOperatorAssignment_1_1_2.eContents().get(0);
		private final Assignment cInAssignment_1_1_3 = (Assignment)cGroup_1_1.eContents().get(3);
		private final Alternatives cInAlternatives_1_1_3_0 = (Alternatives)cInAssignment_1_1_3.eContents().get(0);
		private final RuleCall cInCollectionFunctionParserRuleCall_1_1_3_0_0 = (RuleCall)cInAlternatives_1_1_3_0.eContents().get(0);
		private final RuleCall cInParenthesizedExpressionParserRuleCall_1_1_3_0_1 = (RuleCall)cInAlternatives_1_1_3_0.eContents().get(1);
		private final RuleCall cInSubQueryParserRuleCall_1_1_3_0_2 = (RuleCall)cInAlternatives_1_1_3_0.eContents().get(2);
		private final Group cGroup_1_2 = (Group)cAlternatives_1.eContents().get(2);
		private final Action cBetweenExpressionExpressionAction_1_2_0 = (Action)cGroup_1_2.eContents().get(0);
		private final Assignment cNotAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final Keyword cNotNotKeyword_1_2_1_0 = (Keyword)cNotAssignment_1_2_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_2_2 = (Assignment)cGroup_1_2.eContents().get(2);
		private final Keyword cOperatorBetweenKeyword_1_2_2_0 = (Keyword)cOperatorAssignment_1_2_2.eContents().get(0);
		private final Assignment cLeftAssignment_1_2_3 = (Assignment)cGroup_1_2.eContents().get(3);
		private final RuleCall cLeftConcatenationExpressionParserRuleCall_1_2_3_0 = (RuleCall)cLeftAssignment_1_2_3.eContents().get(0);
		private final Keyword cAndKeyword_1_2_4 = (Keyword)cGroup_1_2.eContents().get(4);
		private final Assignment cRightAssignment_1_2_5 = (Assignment)cGroup_1_2.eContents().get(5);
		private final RuleCall cRightConcatenationExpressionParserRuleCall_1_2_5_0 = (RuleCall)cRightAssignment_1_2_5.eContents().get(0);
		private final Group cGroup_1_3 = (Group)cAlternatives_1.eContents().get(3);
		private final Action cLikeExpressionExpressionAction_1_3_0 = (Action)cGroup_1_3.eContents().get(0);
		private final Assignment cNotAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
		private final Keyword cNotNotKeyword_1_3_1_0 = (Keyword)cNotAssignment_1_3_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_3_2 = (Assignment)cGroup_1_3.eContents().get(2);
		private final Keyword cOperatorLikeKeyword_1_3_2_0 = (Keyword)cOperatorAssignment_1_3_2.eContents().get(0);
		private final Assignment cLikeAssignment_1_3_3 = (Assignment)cGroup_1_3.eContents().get(3);
		private final RuleCall cLikeConcatenationExpressionParserRuleCall_1_3_3_0 = (RuleCall)cLikeAssignment_1_3_3.eContents().get(0);
		private final Group cGroup_1_3_4 = (Group)cGroup_1_3.eContents().get(4);
		private final Keyword cEscapeKeyword_1_3_4_0 = (Keyword)cGroup_1_3_4.eContents().get(0);
		private final Assignment cEscapeAssignment_1_3_4_1 = (Assignment)cGroup_1_3_4.eContents().get(1);
		private final RuleCall cEscapeConcatenationExpressionParserRuleCall_1_3_4_1_0 = (RuleCall)cEscapeAssignment_1_3_4_1.eContents().get(0);
		private final Group cGroup_1_4 = (Group)cAlternatives_1.eContents().get(4);
		private final Action cMemberOfExpressionExpressionAction_1_4_0 = (Action)cGroup_1_4.eContents().get(0);
		private final Assignment cNotAssignment_1_4_1 = (Assignment)cGroup_1_4.eContents().get(1);
		private final Keyword cNotNotKeyword_1_4_1_0 = (Keyword)cNotAssignment_1_4_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_4_2 = (Assignment)cGroup_1_4.eContents().get(2);
		private final Keyword cOperatorMemberKeyword_1_4_2_0 = (Keyword)cOperatorAssignment_1_4_2.eContents().get(0);
		private final Keyword cOfKeyword_1_4_3 = (Keyword)cGroup_1_4.eContents().get(3);
		private final Assignment cMemberOfAssignment_1_4_4 = (Assignment)cGroup_1_4.eContents().get(4);
		private final RuleCall cMemberOfQualifiedNameParserRuleCall_1_4_4_0 = (RuleCall)cMemberOfAssignment_1_4_4.eContents().get(0);
		
		//RelationalExpression returns Expression:
		//	ConcatenationExpression (({BinaryExpression.left=current} operator=("<" | ">" | "<=" | ">=")
		//	right=AdditiveExpression)* | {InExpression.expression=current} not?="not"? operator="in" in=(CollectionFunction |
		//	ParenthesizedExpression | SubQuery) | {BetweenExpression.expression=current} not?="not"? operator="between"
		//	left=ConcatenationExpression "and" right=ConcatenationExpression | {LikeExpression.expression=current} not?="not"?
		//	operator="like" like=ConcatenationExpression ("escape" escape=ConcatenationExpression)? |
		//	{MemberOfExpression.expression=current} not?="not"? operator="member" "of"? memberOf=QualifiedName);
		public ParserRule getRule() { return rule; }

		//ConcatenationExpression (({BinaryExpression.left=current} operator=("<" | ">" | "<=" | ">=") right=AdditiveExpression)*
		//| {InExpression.expression=current} not?="not"? operator="in" in=(CollectionFunction | ParenthesizedExpression |
		//SubQuery) | {BetweenExpression.expression=current} not?="not"? operator="between" left=ConcatenationExpression "and"
		//right=ConcatenationExpression | {LikeExpression.expression=current} not?="not"? operator="like"
		//like=ConcatenationExpression ("escape" escape=ConcatenationExpression)? | {MemberOfExpression.expression=current}
		//not?="not"? operator="member" "of"? memberOf=QualifiedName)
		public Group getGroup() { return cGroup; }

		//ConcatenationExpression
		public RuleCall getConcatenationExpressionParserRuleCall_0() { return cConcatenationExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator=("<" | ">" | "<=" | ">=") right=AdditiveExpression)* |
		//{InExpression.expression=current} not?="not"? operator="in" in=(CollectionFunction | ParenthesizedExpression |
		//SubQuery) | {BetweenExpression.expression=current} not?="not"? operator="between" left=ConcatenationExpression "and"
		//right=ConcatenationExpression | {LikeExpression.expression=current} not?="not"? operator="like"
		//like=ConcatenationExpression ("escape" escape=ConcatenationExpression)? | {MemberOfExpression.expression=current}
		//not?="not"? operator="member" "of"? memberOf=QualifiedName
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//({BinaryExpression.left=current} operator=("<" | ">" | "<=" | ">=") right=AdditiveExpression)*
		public Group getGroup_1_0() { return cGroup_1_0; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0_0() { return cBinaryExpressionLeftAction_1_0_0; }

		//operator=("<" | ">" | "<=" | ">=")
		public Assignment getOperatorAssignment_1_0_1() { return cOperatorAssignment_1_0_1; }

		//"<" | ">" | "<=" | ">="
		public Alternatives getOperatorAlternatives_1_0_1_0() { return cOperatorAlternatives_1_0_1_0; }

		//"<"
		public Keyword getOperatorLessThanSignKeyword_1_0_1_0_0() { return cOperatorLessThanSignKeyword_1_0_1_0_0; }

		//">"
		public Keyword getOperatorGreaterThanSignKeyword_1_0_1_0_1() { return cOperatorGreaterThanSignKeyword_1_0_1_0_1; }

		//"<="
		public Keyword getOperatorLessThanSignEqualsSignKeyword_1_0_1_0_2() { return cOperatorLessThanSignEqualsSignKeyword_1_0_1_0_2; }

		//">="
		public Keyword getOperatorGreaterThanSignEqualsSignKeyword_1_0_1_0_3() { return cOperatorGreaterThanSignEqualsSignKeyword_1_0_1_0_3; }

		//right=AdditiveExpression
		public Assignment getRightAssignment_1_0_2() { return cRightAssignment_1_0_2; }

		//AdditiveExpression
		public RuleCall getRightAdditiveExpressionParserRuleCall_1_0_2_0() { return cRightAdditiveExpressionParserRuleCall_1_0_2_0; }

		//{InExpression.expression=current} not?="not"? operator="in" in=(CollectionFunction | ParenthesizedExpression | SubQuery)
		public Group getGroup_1_1() { return cGroup_1_1; }

		//{InExpression.expression=current}
		public Action getInExpressionExpressionAction_1_1_0() { return cInExpressionExpressionAction_1_1_0; }

		//not?="not"?
		public Assignment getNotAssignment_1_1_1() { return cNotAssignment_1_1_1; }

		//"not"
		public Keyword getNotNotKeyword_1_1_1_0() { return cNotNotKeyword_1_1_1_0; }

		//operator="in"
		public Assignment getOperatorAssignment_1_1_2() { return cOperatorAssignment_1_1_2; }

		//"in"
		public Keyword getOperatorInKeyword_1_1_2_0() { return cOperatorInKeyword_1_1_2_0; }

		//in=(CollectionFunction | ParenthesizedExpression | SubQuery)
		public Assignment getInAssignment_1_1_3() { return cInAssignment_1_1_3; }

		//CollectionFunction | ParenthesizedExpression | SubQuery
		public Alternatives getInAlternatives_1_1_3_0() { return cInAlternatives_1_1_3_0; }

		//CollectionFunction
		public RuleCall getInCollectionFunctionParserRuleCall_1_1_3_0_0() { return cInCollectionFunctionParserRuleCall_1_1_3_0_0; }

		//ParenthesizedExpression
		public RuleCall getInParenthesizedExpressionParserRuleCall_1_1_3_0_1() { return cInParenthesizedExpressionParserRuleCall_1_1_3_0_1; }

		//SubQuery
		public RuleCall getInSubQueryParserRuleCall_1_1_3_0_2() { return cInSubQueryParserRuleCall_1_1_3_0_2; }

		//{BetweenExpression.expression=current} not?="not"? operator="between" left=ConcatenationExpression "and"
		//right=ConcatenationExpression
		public Group getGroup_1_2() { return cGroup_1_2; }

		//{BetweenExpression.expression=current}
		public Action getBetweenExpressionExpressionAction_1_2_0() { return cBetweenExpressionExpressionAction_1_2_0; }

		//not?="not"?
		public Assignment getNotAssignment_1_2_1() { return cNotAssignment_1_2_1; }

		//"not"
		public Keyword getNotNotKeyword_1_2_1_0() { return cNotNotKeyword_1_2_1_0; }

		//operator="between"
		public Assignment getOperatorAssignment_1_2_2() { return cOperatorAssignment_1_2_2; }

		//"between"
		public Keyword getOperatorBetweenKeyword_1_2_2_0() { return cOperatorBetweenKeyword_1_2_2_0; }

		//left=ConcatenationExpression
		public Assignment getLeftAssignment_1_2_3() { return cLeftAssignment_1_2_3; }

		//ConcatenationExpression
		public RuleCall getLeftConcatenationExpressionParserRuleCall_1_2_3_0() { return cLeftConcatenationExpressionParserRuleCall_1_2_3_0; }

		//"and"
		public Keyword getAndKeyword_1_2_4() { return cAndKeyword_1_2_4; }

		//right=ConcatenationExpression
		public Assignment getRightAssignment_1_2_5() { return cRightAssignment_1_2_5; }

		//ConcatenationExpression
		public RuleCall getRightConcatenationExpressionParserRuleCall_1_2_5_0() { return cRightConcatenationExpressionParserRuleCall_1_2_5_0; }

		//{LikeExpression.expression=current} not?="not"? operator="like" like=ConcatenationExpression ("escape"
		//escape=ConcatenationExpression)?
		public Group getGroup_1_3() { return cGroup_1_3; }

		//{LikeExpression.expression=current}
		public Action getLikeExpressionExpressionAction_1_3_0() { return cLikeExpressionExpressionAction_1_3_0; }

		//not?="not"?
		public Assignment getNotAssignment_1_3_1() { return cNotAssignment_1_3_1; }

		//"not"
		public Keyword getNotNotKeyword_1_3_1_0() { return cNotNotKeyword_1_3_1_0; }

		//operator="like"
		public Assignment getOperatorAssignment_1_3_2() { return cOperatorAssignment_1_3_2; }

		//"like"
		public Keyword getOperatorLikeKeyword_1_3_2_0() { return cOperatorLikeKeyword_1_3_2_0; }

		//like=ConcatenationExpression
		public Assignment getLikeAssignment_1_3_3() { return cLikeAssignment_1_3_3; }

		//ConcatenationExpression
		public RuleCall getLikeConcatenationExpressionParserRuleCall_1_3_3_0() { return cLikeConcatenationExpressionParserRuleCall_1_3_3_0; }

		//("escape" escape=ConcatenationExpression)?
		public Group getGroup_1_3_4() { return cGroup_1_3_4; }

		//"escape"
		public Keyword getEscapeKeyword_1_3_4_0() { return cEscapeKeyword_1_3_4_0; }

		//escape=ConcatenationExpression
		public Assignment getEscapeAssignment_1_3_4_1() { return cEscapeAssignment_1_3_4_1; }

		//ConcatenationExpression
		public RuleCall getEscapeConcatenationExpressionParserRuleCall_1_3_4_1_0() { return cEscapeConcatenationExpressionParserRuleCall_1_3_4_1_0; }

		//{MemberOfExpression.expression=current} not?="not"? operator="member" "of"? memberOf=QualifiedName
		public Group getGroup_1_4() { return cGroup_1_4; }

		//{MemberOfExpression.expression=current}
		public Action getMemberOfExpressionExpressionAction_1_4_0() { return cMemberOfExpressionExpressionAction_1_4_0; }

		//not?="not"?
		public Assignment getNotAssignment_1_4_1() { return cNotAssignment_1_4_1; }

		//"not"
		public Keyword getNotNotKeyword_1_4_1_0() { return cNotNotKeyword_1_4_1_0; }

		//operator="member"
		public Assignment getOperatorAssignment_1_4_2() { return cOperatorAssignment_1_4_2; }

		//"member"
		public Keyword getOperatorMemberKeyword_1_4_2_0() { return cOperatorMemberKeyword_1_4_2_0; }

		//"of"?
		public Keyword getOfKeyword_1_4_3() { return cOfKeyword_1_4_3; }

		//memberOf=QualifiedName
		public Assignment getMemberOfAssignment_1_4_4() { return cMemberOfAssignment_1_4_4; }

		//QualifiedName
		public RuleCall getMemberOfQualifiedNameParserRuleCall_1_4_4_0() { return cMemberOfQualifiedNameParserRuleCall_1_4_4_0; }
	}

	public class ConcatenationExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ConcatenationExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cAdditiveExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Keyword cOperatorVerticalLineVerticalLineKeyword_1_1_0 = (Keyword)cOperatorAssignment_1_1.eContents().get(0);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightAdditiveExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//ConcatenationExpression returns Expression:
		//	AdditiveExpression ({BinaryExpression.left=current} operator="||" right=AdditiveExpression)*;
		public ParserRule getRule() { return rule; }

		//AdditiveExpression ({BinaryExpression.left=current} operator="||" right=AdditiveExpression)*
		public Group getGroup() { return cGroup; }

		//AdditiveExpression
		public RuleCall getAdditiveExpressionParserRuleCall_0() { return cAdditiveExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator="||" right=AdditiveExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator="||"
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"||"
		public Keyword getOperatorVerticalLineVerticalLineKeyword_1_1_0() { return cOperatorVerticalLineVerticalLineKeyword_1_1_0; }

		//right=AdditiveExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//AdditiveExpression
		public RuleCall getRightAdditiveExpressionParserRuleCall_1_2_0() { return cRightAdditiveExpressionParserRuleCall_1_2_0; }
	}

	public class AdditiveExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AdditiveExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cMultiplyExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Alternatives cOperatorAlternatives_1_1_0 = (Alternatives)cOperatorAssignment_1_1.eContents().get(0);
		private final Keyword cOperatorPlusSignKeyword_1_1_0_0 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(0);
		private final Keyword cOperatorHyphenMinusKeyword_1_1_0_1 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(1);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightMultiplyExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//AdditiveExpression returns Expression:
		//	MultiplyExpression ({BinaryExpression.left=current} operator=("+" | "-") right=MultiplyExpression)*;
		public ParserRule getRule() { return rule; }

		//MultiplyExpression ({BinaryExpression.left=current} operator=("+" | "-") right=MultiplyExpression)*
		public Group getGroup() { return cGroup; }

		//MultiplyExpression
		public RuleCall getMultiplyExpressionParserRuleCall_0() { return cMultiplyExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator=("+" | "-") right=MultiplyExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator=("+" | "-")
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"+" | "-"
		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }

		//"+"
		public Keyword getOperatorPlusSignKeyword_1_1_0_0() { return cOperatorPlusSignKeyword_1_1_0_0; }

		//"-"
		public Keyword getOperatorHyphenMinusKeyword_1_1_0_1() { return cOperatorHyphenMinusKeyword_1_1_0_1; }

		//right=MultiplyExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//MultiplyExpression
		public RuleCall getRightMultiplyExpressionParserRuleCall_1_2_0() { return cRightMultiplyExpressionParserRuleCall_1_2_0; }
	}

	public class MultiplyExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "MultiplyExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cUnaryExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cBinaryExpressionLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Alternatives cOperatorAlternatives_1_1_0 = (Alternatives)cOperatorAssignment_1_1.eContents().get(0);
		private final Keyword cOperatorAsteriskKeyword_1_1_0_0 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(0);
		private final Keyword cOperatorSolidusKeyword_1_1_0_1 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(1);
		private final Keyword cOperatorPercentSignKeyword_1_1_0_2 = (Keyword)cOperatorAlternatives_1_1_0.eContents().get(2);
		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cRightUnaryExpressionParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
		
		//MultiplyExpression returns Expression:
		//	UnaryExpression ({BinaryExpression.left=current} operator=("*" | "/" | "%") right=UnaryExpression)*;
		public ParserRule getRule() { return rule; }

		//UnaryExpression ({BinaryExpression.left=current} operator=("*" | "/" | "%") right=UnaryExpression)*
		public Group getGroup() { return cGroup; }

		//UnaryExpression
		public RuleCall getUnaryExpressionParserRuleCall_0() { return cUnaryExpressionParserRuleCall_0; }

		//({BinaryExpression.left=current} operator=("*" | "/" | "%") right=UnaryExpression)*
		public Group getGroup_1() { return cGroup_1; }

		//{BinaryExpression.left=current}
		public Action getBinaryExpressionLeftAction_1_0() { return cBinaryExpressionLeftAction_1_0; }

		//operator=("*" | "/" | "%")
		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }

		//"*" | "/" | "%"
		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }

		//"*"
		public Keyword getOperatorAsteriskKeyword_1_1_0_0() { return cOperatorAsteriskKeyword_1_1_0_0; }

		//"/"
		public Keyword getOperatorSolidusKeyword_1_1_0_1() { return cOperatorSolidusKeyword_1_1_0_1; }

		//"%"
		public Keyword getOperatorPercentSignKeyword_1_1_0_2() { return cOperatorPercentSignKeyword_1_1_0_2; }

		//right=UnaryExpression
		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }

		//UnaryExpression
		public RuleCall getRightUnaryExpressionParserRuleCall_1_2_0() { return cRightUnaryExpressionParserRuleCall_1_2_0; }
	}

	public class UnaryExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UnaryExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cUnaryExpressionAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Assignment cOperatorAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final Alternatives cOperatorAlternatives_0_1_0 = (Alternatives)cOperatorAssignment_0_1.eContents().get(0);
		private final Keyword cOperatorHyphenMinusKeyword_0_1_0_0 = (Keyword)cOperatorAlternatives_0_1_0.eContents().get(0);
		private final Keyword cOperatorPlusSignKeyword_0_1_0_1 = (Keyword)cOperatorAlternatives_0_1_0.eContents().get(1);
		private final Assignment cExpressionAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cExpressionUnaryExpressionParserRuleCall_0_2_0 = (RuleCall)cExpressionAssignment_0_2.eContents().get(0);
		private final RuleCall cPrimaryExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cCaseExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cQuantifiedExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//UnaryExpression returns Expression:
		//	{UnaryExpression} operator=("-" | "+") expression=UnaryExpression | PrimaryExpression | CaseExpression |
		//	QuantifiedExpression;
		public ParserRule getRule() { return rule; }

		//{UnaryExpression} operator=("-" | "+") expression=UnaryExpression | PrimaryExpression | CaseExpression |
		//QuantifiedExpression
		public Alternatives getAlternatives() { return cAlternatives; }

		//{UnaryExpression} operator=("-" | "+") expression=UnaryExpression
		public Group getGroup_0() { return cGroup_0; }

		//{UnaryExpression}
		public Action getUnaryExpressionAction_0_0() { return cUnaryExpressionAction_0_0; }

		//operator=("-" | "+")
		public Assignment getOperatorAssignment_0_1() { return cOperatorAssignment_0_1; }

		//"-" | "+"
		public Alternatives getOperatorAlternatives_0_1_0() { return cOperatorAlternatives_0_1_0; }

		//"-"
		public Keyword getOperatorHyphenMinusKeyword_0_1_0_0() { return cOperatorHyphenMinusKeyword_0_1_0_0; }

		//"+"
		public Keyword getOperatorPlusSignKeyword_0_1_0_1() { return cOperatorPlusSignKeyword_0_1_0_1; }

		//expression=UnaryExpression
		public Assignment getExpressionAssignment_0_2() { return cExpressionAssignment_0_2; }

		//UnaryExpression
		public RuleCall getExpressionUnaryExpressionParserRuleCall_0_2_0() { return cExpressionUnaryExpressionParserRuleCall_0_2_0; }

		//PrimaryExpression
		public RuleCall getPrimaryExpressionParserRuleCall_1() { return cPrimaryExpressionParserRuleCall_1; }

		//CaseExpression
		public RuleCall getCaseExpressionParserRuleCall_2() { return cCaseExpressionParserRuleCall_2; }

		//QuantifiedExpression
		public RuleCall getQuantifiedExpressionParserRuleCall_3() { return cQuantifiedExpressionParserRuleCall_3; }
	}

	public class PrimaryExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrimaryExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPropertyValueParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cTrimFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cCastFunctionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cAggregateFunctionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cCollectionFunctionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cFunctionCallParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cParenthesizedExpressionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cSubQueryParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cLiteralValueParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cQueryParameterValueParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		
		//PrimaryExpression returns Expression:
		//	PropertyValue | TrimFunction | CastFunction | AggregateFunction | CollectionFunction | FunctionCall |
		//	ParenthesizedExpression | SubQuery | LiteralValue | QueryParameterValue;
		public ParserRule getRule() { return rule; }

		//PropertyValue | TrimFunction | CastFunction | AggregateFunction | CollectionFunction | FunctionCall |
		//ParenthesizedExpression | SubQuery | LiteralValue | QueryParameterValue
		public Alternatives getAlternatives() { return cAlternatives; }

		//PropertyValue
		public RuleCall getPropertyValueParserRuleCall_0() { return cPropertyValueParserRuleCall_0; }

		//TrimFunction
		public RuleCall getTrimFunctionParserRuleCall_1() { return cTrimFunctionParserRuleCall_1; }

		//CastFunction
		public RuleCall getCastFunctionParserRuleCall_2() { return cCastFunctionParserRuleCall_2; }

		//AggregateFunction
		public RuleCall getAggregateFunctionParserRuleCall_3() { return cAggregateFunctionParserRuleCall_3; }

		//CollectionFunction
		public RuleCall getCollectionFunctionParserRuleCall_4() { return cCollectionFunctionParserRuleCall_4; }

		//FunctionCall
		public RuleCall getFunctionCallParserRuleCall_5() { return cFunctionCallParserRuleCall_5; }

		//ParenthesizedExpression
		public RuleCall getParenthesizedExpressionParserRuleCall_6() { return cParenthesizedExpressionParserRuleCall_6; }

		//SubQuery
		public RuleCall getSubQueryParserRuleCall_7() { return cSubQueryParserRuleCall_7; }

		//LiteralValue
		public RuleCall getLiteralValueParserRuleCall_8() { return cLiteralValueParserRuleCall_8; }

		//QueryParameterValue
		public RuleCall getQueryParameterValueParserRuleCall_9() { return cQueryParameterValueParserRuleCall_9; }
	}

	public class PropertyValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cSegmentsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cSegmentsIDTerminalRuleCall_1_1_0 = (RuleCall)cSegmentsAssignment_1_1.eContents().get(0);
		private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final Keyword cLeftSquareBracketKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0);
		private final Assignment cIndexAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final RuleCall cIndexExpressionParserRuleCall_1_2_1_0 = (RuleCall)cIndexAssignment_1_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_2_2 = (Keyword)cGroup_1_2.eContents().get(2);
		private final Assignment cClassPropertyAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cClassPropertyClassKeyword_2_0 = (Keyword)cClassPropertyAssignment_2.eContents().get(0);
		
		//PropertyValue:
		//	name=ID ("." segments+=ID? ("[" index+=Expression "]")?)* classProperty?="class"?;
		public ParserRule getRule() { return rule; }

		//name=ID ("." segments+=ID? ("[" index+=Expression "]")?)* classProperty?="class"?
		public Group getGroup() { return cGroup; }

		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }

		//("." segments+=ID? ("[" index+=Expression "]")?)*
		public Group getGroup_1() { return cGroup_1; }

		//"."
		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }

		//segments+=ID?
		public Assignment getSegmentsAssignment_1_1() { return cSegmentsAssignment_1_1; }

		//ID
		public RuleCall getSegmentsIDTerminalRuleCall_1_1_0() { return cSegmentsIDTerminalRuleCall_1_1_0; }

		//("[" index+=Expression "]")?
		public Group getGroup_1_2() { return cGroup_1_2; }

		//"["
		public Keyword getLeftSquareBracketKeyword_1_2_0() { return cLeftSquareBracketKeyword_1_2_0; }

		//index+=Expression
		public Assignment getIndexAssignment_1_2_1() { return cIndexAssignment_1_2_1; }

		//Expression
		public RuleCall getIndexExpressionParserRuleCall_1_2_1_0() { return cIndexExpressionParserRuleCall_1_2_1_0; }

		//"]"
		public Keyword getRightSquareBracketKeyword_1_2_2() { return cRightSquareBracketKeyword_1_2_2; }

		//classProperty?="class"?
		public Assignment getClassPropertyAssignment_2() { return cClassPropertyAssignment_2; }

		//"class"
		public Keyword getClassPropertyClassKeyword_2_0() { return cClassPropertyClassKeyword_2_0; }
	}

	public class FunctionCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFunctionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cFunctionIDTerminalRuleCall_0_0 = (RuleCall)cFunctionAssignment_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cArgumentsAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cArgumentsExpressionParserRuleCall_2_0 = (RuleCall)cArgumentsAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cCommaKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cArgumentsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cArgumentsExpressionParserRuleCall_3_1_0 = (RuleCall)cArgumentsAssignment_3_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//FunctionCall:
		//	function=ID "(" arguments+=Expression ("," arguments+=Expression)* ")";
		public ParserRule getRule() { return rule; }

		//function=ID "(" arguments+=Expression ("," arguments+=Expression)* ")"
		public Group getGroup() { return cGroup; }

		//function=ID
		public Assignment getFunctionAssignment_0() { return cFunctionAssignment_0; }

		//ID
		public RuleCall getFunctionIDTerminalRuleCall_0_0() { return cFunctionIDTerminalRuleCall_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//arguments+=Expression
		public Assignment getArgumentsAssignment_2() { return cArgumentsAssignment_2; }

		//Expression
		public RuleCall getArgumentsExpressionParserRuleCall_2_0() { return cArgumentsExpressionParserRuleCall_2_0; }

		//("," arguments+=Expression)*
		public Group getGroup_3() { return cGroup_3; }

		//","
		public Keyword getCommaKeyword_3_0() { return cCommaKeyword_3_0; }

		//arguments+=Expression
		public Assignment getArgumentsAssignment_3_1() { return cArgumentsAssignment_3_1; }

		//Expression
		public RuleCall getArgumentsExpressionParserRuleCall_3_1_0() { return cArgumentsExpressionParserRuleCall_3_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
	}

	public class TrimFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TrimFunction");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFunctionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cFunctionTrimKeyword_0_0 = (Keyword)cFunctionAssignment_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cModeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Alternatives cModeAlternatives_2_0 = (Alternatives)cModeAssignment_2.eContents().get(0);
		private final Keyword cModeTrailingKeyword_2_0_0 = (Keyword)cModeAlternatives_2_0.eContents().get(0);
		private final Keyword cModeLeadingKeyword_2_0_1 = (Keyword)cModeAlternatives_2_0.eContents().get(1);
		private final Keyword cModeBothKeyword_2_0_2 = (Keyword)cModeAlternatives_2_0.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cCharacterAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cCharacterStringLiteralValueParserRuleCall_3_0_0 = (RuleCall)cCharacterAssignment_3_0.eContents().get(0);
		private final Keyword cFromKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cFromAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cFromExpressionParserRuleCall_4_0 = (RuleCall)cFromAssignment_4.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//TrimFunction:
		//	function="trim" "(" mode=("trailing" | "leading" | "both")? (character=StringLiteralValue "from")? from=Expression
		//	")";
		public ParserRule getRule() { return rule; }

		//function="trim" "(" mode=("trailing" | "leading" | "both")? (character=StringLiteralValue "from")? from=Expression ")"
		public Group getGroup() { return cGroup; }

		//function="trim"
		public Assignment getFunctionAssignment_0() { return cFunctionAssignment_0; }

		//"trim"
		public Keyword getFunctionTrimKeyword_0_0() { return cFunctionTrimKeyword_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//mode=("trailing" | "leading" | "both")?
		public Assignment getModeAssignment_2() { return cModeAssignment_2; }

		//"trailing" | "leading" | "both"
		public Alternatives getModeAlternatives_2_0() { return cModeAlternatives_2_0; }

		//"trailing"
		public Keyword getModeTrailingKeyword_2_0_0() { return cModeTrailingKeyword_2_0_0; }

		//"leading"
		public Keyword getModeLeadingKeyword_2_0_1() { return cModeLeadingKeyword_2_0_1; }

		//"both"
		public Keyword getModeBothKeyword_2_0_2() { return cModeBothKeyword_2_0_2; }

		//(character=StringLiteralValue "from")?
		public Group getGroup_3() { return cGroup_3; }

		//character=StringLiteralValue
		public Assignment getCharacterAssignment_3_0() { return cCharacterAssignment_3_0; }

		//StringLiteralValue
		public RuleCall getCharacterStringLiteralValueParserRuleCall_3_0_0() { return cCharacterStringLiteralValueParserRuleCall_3_0_0; }

		//"from"
		public Keyword getFromKeyword_3_1() { return cFromKeyword_3_1; }

		//from=Expression
		public Assignment getFromAssignment_4() { return cFromAssignment_4; }

		//Expression
		public RuleCall getFromExpressionParserRuleCall_4_0() { return cFromExpressionParserRuleCall_4_0; }

		//")"
		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
	}

	public class CastFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CastFunction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Assignment cFunctionAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final Keyword cFunctionCastKeyword_0_0_0 = (Keyword)cFunctionAssignment_0_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cFromAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cFromExpressionParserRuleCall_0_2_0 = (RuleCall)cFromAssignment_0_2.eContents().get(0);
		private final Keyword cAsKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Assignment cNameAssignment_0_4 = (Assignment)cGroup_0.eContents().get(4);
		private final RuleCall cNameIDTerminalRuleCall_0_4_0 = (RuleCall)cNameAssignment_0_4.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_5 = (Keyword)cGroup_0.eContents().get(5);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cFunctionAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final Keyword cFunctionExtractKeyword_1_0_0 = (Keyword)cFunctionAssignment_1_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cNameAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_1_2_0 = (RuleCall)cNameAssignment_1_2.eContents().get(0);
		private final Keyword cFromKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		private final Assignment cFromAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
		private final RuleCall cFromExpressionParserRuleCall_1_4_0 = (RuleCall)cFromAssignment_1_4.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5);
		
		//CastFunction:
		//	function="cast" "(" from=Expression "as" name=ID ")" | function="extract" "(" name=ID "from" from=Expression ")";
		public ParserRule getRule() { return rule; }

		//function="cast" "(" from=Expression "as" name=ID ")" | function="extract" "(" name=ID "from" from=Expression ")"
		public Alternatives getAlternatives() { return cAlternatives; }

		//function="cast" "(" from=Expression "as" name=ID ")"
		public Group getGroup_0() { return cGroup_0; }

		//function="cast"
		public Assignment getFunctionAssignment_0_0() { return cFunctionAssignment_0_0; }

		//"cast"
		public Keyword getFunctionCastKeyword_0_0_0() { return cFunctionCastKeyword_0_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_0_1() { return cLeftParenthesisKeyword_0_1; }

		//from=Expression
		public Assignment getFromAssignment_0_2() { return cFromAssignment_0_2; }

		//Expression
		public RuleCall getFromExpressionParserRuleCall_0_2_0() { return cFromExpressionParserRuleCall_0_2_0; }

		//"as"
		public Keyword getAsKeyword_0_3() { return cAsKeyword_0_3; }

		//name=ID
		public Assignment getNameAssignment_0_4() { return cNameAssignment_0_4; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_4_0() { return cNameIDTerminalRuleCall_0_4_0; }

		//")"
		public Keyword getRightParenthesisKeyword_0_5() { return cRightParenthesisKeyword_0_5; }

		//function="extract" "(" name=ID "from" from=Expression ")"
		public Group getGroup_1() { return cGroup_1; }

		//function="extract"
		public Assignment getFunctionAssignment_1_0() { return cFunctionAssignment_1_0; }

		//"extract"
		public Keyword getFunctionExtractKeyword_1_0_0() { return cFunctionExtractKeyword_1_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1_1() { return cLeftParenthesisKeyword_1_1; }

		//name=ID
		public Assignment getNameAssignment_1_2() { return cNameAssignment_1_2; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_2_0() { return cNameIDTerminalRuleCall_1_2_0; }

		//"from"
		public Keyword getFromKeyword_1_3() { return cFromKeyword_1_3; }

		//from=Expression
		public Assignment getFromAssignment_1_4() { return cFromAssignment_1_4; }

		//Expression
		public RuleCall getFromExpressionParserRuleCall_1_4_0() { return cFromExpressionParserRuleCall_1_4_0; }

		//")"
		public Keyword getRightParenthesisKeyword_1_5() { return cRightParenthesisKeyword_1_5; }
	}

	public class AggregateFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AggregateFunction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Assignment cFunctionAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final Alternatives cFunctionAlternatives_0_0_0 = (Alternatives)cFunctionAssignment_0_0.eContents().get(0);
		private final Keyword cFunctionSumKeyword_0_0_0_0 = (Keyword)cFunctionAlternatives_0_0_0.eContents().get(0);
		private final Keyword cFunctionAvgKeyword_0_0_0_1 = (Keyword)cFunctionAlternatives_0_0_0.eContents().get(1);
		private final Keyword cFunctionMaxKeyword_0_0_0_2 = (Keyword)cFunctionAlternatives_0_0_0.eContents().get(2);
		private final Keyword cFunctionMinKeyword_0_0_0_3 = (Keyword)cFunctionAlternatives_0_0_0.eContents().get(3);
		private final Keyword cLeftParenthesisKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cAggregateExpressionAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cAggregateExpressionAdditiveExpressionParserRuleCall_0_2_0 = (RuleCall)cAggregateExpressionAssignment_0_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cFunctionAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final Keyword cFunctionCountKeyword_1_0_0 = (Keyword)cFunctionAssignment_1_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Alternatives cAlternatives_1_2 = (Alternatives)cGroup_1.eContents().get(2);
		private final Assignment cAllAssignment_1_2_0 = (Assignment)cAlternatives_1_2.eContents().get(0);
		private final Keyword cAllAsteriskKeyword_1_2_0_0 = (Keyword)cAllAssignment_1_2_0.eContents().get(0);
		private final Group cGroup_1_2_1 = (Group)cAlternatives_1_2.eContents().get(1);
		private final Alternatives cAlternatives_1_2_1_0 = (Alternatives)cGroup_1_2_1.eContents().get(0);
		private final Assignment cDistinctAssignment_1_2_1_0_0 = (Assignment)cAlternatives_1_2_1_0.eContents().get(0);
		private final Keyword cDistinctDistinctKeyword_1_2_1_0_0_0 = (Keyword)cDistinctAssignment_1_2_1_0_0.eContents().get(0);
		private final Assignment cAllAssignment_1_2_1_0_1 = (Assignment)cAlternatives_1_2_1_0.eContents().get(1);
		private final Keyword cAllAllKeyword_1_2_1_0_1_0 = (Keyword)cAllAssignment_1_2_1_0_1.eContents().get(0);
		private final Alternatives cAlternatives_1_2_1_1 = (Alternatives)cGroup_1_2_1.eContents().get(1);
		private final Assignment cFromAssignment_1_2_1_1_0 = (Assignment)cAlternatives_1_2_1_1.eContents().get(0);
		private final RuleCall cFromQualifiedNameParserRuleCall_1_2_1_1_0_0 = (RuleCall)cFromAssignment_1_2_1_1_0.eContents().get(0);
		private final Assignment cCollectionAssignment_1_2_1_1_1 = (Assignment)cAlternatives_1_2_1_1.eContents().get(1);
		private final RuleCall cCollectionCollectionFunctionParserRuleCall_1_2_1_1_1_0 = (RuleCall)cCollectionAssignment_1_2_1_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		
		//AggregateFunction:
		//	function=("sum" | "avg" | "max" | "min") "(" aggregateExpression=AdditiveExpression ")" | function="count" "("
		//	(all?="*" | (distinct?="distinct" | all?="all")? (from=QualifiedName | collection=CollectionFunction)) ")";
		public ParserRule getRule() { return rule; }

		//function=("sum" | "avg" | "max" | "min") "(" aggregateExpression=AdditiveExpression ")" | function="count" "(" (all?="*"
		//| (distinct?="distinct" | all?="all")? (from=QualifiedName | collection=CollectionFunction)) ")"
		public Alternatives getAlternatives() { return cAlternatives; }

		//function=("sum" | "avg" | "max" | "min") "(" aggregateExpression=AdditiveExpression ")"
		public Group getGroup_0() { return cGroup_0; }

		//function=("sum" | "avg" | "max" | "min")
		public Assignment getFunctionAssignment_0_0() { return cFunctionAssignment_0_0; }

		//"sum" | "avg" | "max" | "min"
		public Alternatives getFunctionAlternatives_0_0_0() { return cFunctionAlternatives_0_0_0; }

		//"sum"
		public Keyword getFunctionSumKeyword_0_0_0_0() { return cFunctionSumKeyword_0_0_0_0; }

		//"avg"
		public Keyword getFunctionAvgKeyword_0_0_0_1() { return cFunctionAvgKeyword_0_0_0_1; }

		//"max"
		public Keyword getFunctionMaxKeyword_0_0_0_2() { return cFunctionMaxKeyword_0_0_0_2; }

		//"min"
		public Keyword getFunctionMinKeyword_0_0_0_3() { return cFunctionMinKeyword_0_0_0_3; }

		//"("
		public Keyword getLeftParenthesisKeyword_0_1() { return cLeftParenthesisKeyword_0_1; }

		//aggregateExpression=AdditiveExpression
		public Assignment getAggregateExpressionAssignment_0_2() { return cAggregateExpressionAssignment_0_2; }

		//AdditiveExpression
		public RuleCall getAggregateExpressionAdditiveExpressionParserRuleCall_0_2_0() { return cAggregateExpressionAdditiveExpressionParserRuleCall_0_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_0_3() { return cRightParenthesisKeyword_0_3; }

		//function="count" "(" (all?="*" | (distinct?="distinct" | all?="all")? (from=QualifiedName |
		//collection=CollectionFunction)) ")"
		public Group getGroup_1() { return cGroup_1; }

		//function="count"
		public Assignment getFunctionAssignment_1_0() { return cFunctionAssignment_1_0; }

		//"count"
		public Keyword getFunctionCountKeyword_1_0_0() { return cFunctionCountKeyword_1_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1_1() { return cLeftParenthesisKeyword_1_1; }

		//all?="*" | (distinct?="distinct" | all?="all")? (from=QualifiedName | collection=CollectionFunction)
		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }

		//all?="*"
		public Assignment getAllAssignment_1_2_0() { return cAllAssignment_1_2_0; }

		//"*"
		public Keyword getAllAsteriskKeyword_1_2_0_0() { return cAllAsteriskKeyword_1_2_0_0; }

		//(distinct?="distinct" | all?="all")? (from=QualifiedName | collection=CollectionFunction)
		public Group getGroup_1_2_1() { return cGroup_1_2_1; }

		//(distinct?="distinct" | all?="all")?
		public Alternatives getAlternatives_1_2_1_0() { return cAlternatives_1_2_1_0; }

		//distinct?="distinct"
		public Assignment getDistinctAssignment_1_2_1_0_0() { return cDistinctAssignment_1_2_1_0_0; }

		//"distinct"
		public Keyword getDistinctDistinctKeyword_1_2_1_0_0_0() { return cDistinctDistinctKeyword_1_2_1_0_0_0; }

		//all?="all"
		public Assignment getAllAssignment_1_2_1_0_1() { return cAllAssignment_1_2_1_0_1; }

		//"all"
		public Keyword getAllAllKeyword_1_2_1_0_1_0() { return cAllAllKeyword_1_2_1_0_1_0; }

		//from=QualifiedName | collection=CollectionFunction
		public Alternatives getAlternatives_1_2_1_1() { return cAlternatives_1_2_1_1; }

		//from=QualifiedName
		public Assignment getFromAssignment_1_2_1_1_0() { return cFromAssignment_1_2_1_1_0; }

		//QualifiedName
		public RuleCall getFromQualifiedNameParserRuleCall_1_2_1_1_0_0() { return cFromQualifiedNameParserRuleCall_1_2_1_1_0_0; }

		//collection=CollectionFunction
		public Assignment getCollectionAssignment_1_2_1_1_1() { return cCollectionAssignment_1_2_1_1_1; }

		//CollectionFunction
		public RuleCall getCollectionCollectionFunctionParserRuleCall_1_2_1_1_1_0() { return cCollectionCollectionFunctionParserRuleCall_1_2_1_1_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_1_3() { return cRightParenthesisKeyword_1_3; }
	}

	public class QueryParameterReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QueryParameterReference");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cParameterParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cAttributeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cIElementWithNoNameParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//QueryParameterReference:
		//	Parameter | Attribute | IElementWithNoName;
		public ParserRule getRule() { return rule; }

		//Parameter | Attribute | IElementWithNoName
		public Alternatives getAlternatives() { return cAlternatives; }

		//Parameter
		public RuleCall getParameterParserRuleCall_0() { return cParameterParserRuleCall_0; }

		//Attribute
		public RuleCall getAttributeParserRuleCall_1() { return cAttributeParserRuleCall_1; }

		//IElementWithNoName
		public RuleCall getIElementWithNoNameParserRuleCall_2() { return cIElementWithNoNameParserRuleCall_2; }
	}

	public class QueryParameterValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QueryParameterValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cColonKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cParameterAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cParameterQueryParameterReferenceCrossReference_1_0 = (CrossReference)cParameterAssignment_1.eContents().get(0);
		private final RuleCall cParameterQueryParameterReferenceIDTerminalRuleCall_1_0_1 = (RuleCall)cParameterQueryParameterReferenceCrossReference_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cFullStopKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cAttributeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cAttributeAttributeCrossReference_2_1_0 = (CrossReference)cAttributeAssignment_2_1.eContents().get(0);
		private final RuleCall cAttributeAttributeIDTerminalRuleCall_2_1_0_1 = (RuleCall)cAttributeAttributeCrossReference_2_1_0.eContents().get(1);
		
		//QueryParameterValue:
		//	":" parameter=[QueryParameterReference] ("." attribute=[Attribute])?;
		public ParserRule getRule() { return rule; }

		//":" parameter=[QueryParameterReference] ("." attribute=[Attribute])?
		public Group getGroup() { return cGroup; }

		//":"
		public Keyword getColonKeyword_0() { return cColonKeyword_0; }

		//parameter=[QueryParameterReference]
		public Assignment getParameterAssignment_1() { return cParameterAssignment_1; }

		//[QueryParameterReference]
		public CrossReference getParameterQueryParameterReferenceCrossReference_1_0() { return cParameterQueryParameterReferenceCrossReference_1_0; }

		//ID
		public RuleCall getParameterQueryParameterReferenceIDTerminalRuleCall_1_0_1() { return cParameterQueryParameterReferenceIDTerminalRuleCall_1_0_1; }

		//("." attribute=[Attribute])?
		public Group getGroup_2() { return cGroup_2; }

		//"."
		public Keyword getFullStopKeyword_2_0() { return cFullStopKeyword_2_0; }

		//attribute=[Attribute]
		public Assignment getAttributeAssignment_2_1() { return cAttributeAssignment_2_1; }

		//[Attribute]
		public CrossReference getAttributeAttributeCrossReference_2_1_0() { return cAttributeAttributeCrossReference_2_1_0; }

		//ID
		public RuleCall getAttributeAttributeIDTerminalRuleCall_2_1_0_1() { return cAttributeAttributeIDTerminalRuleCall_2_1_0_1; }
	}

	public class QuantifiedExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QuantifiedExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cQuantifierAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cQuantifierAlternatives_0_0 = (Alternatives)cQuantifierAssignment_0.eContents().get(0);
		private final Keyword cQuantifierSomeKeyword_0_0_0 = (Keyword)cQuantifierAlternatives_0_0.eContents().get(0);
		private final Keyword cQuantifierExistsKeyword_0_0_1 = (Keyword)cQuantifierAlternatives_0_0.eContents().get(1);
		private final Keyword cQuantifierAllKeyword_0_0_2 = (Keyword)cQuantifierAlternatives_0_0.eContents().get(2);
		private final Keyword cQuantifierAnyKeyword_0_0_3 = (Keyword)cQuantifierAlternatives_0_0.eContents().get(3);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Alternatives cExpressionAlternatives_1_0_0 = (Alternatives)cExpressionAssignment_1_0.eContents().get(0);
		private final RuleCall cExpressionCollectionFunctionParserRuleCall_1_0_0_0 = (RuleCall)cExpressionAlternatives_1_0_0.eContents().get(0);
		private final RuleCall cExpressionSubQueryParserRuleCall_1_0_0_1 = (RuleCall)cExpressionAlternatives_1_0_0.eContents().get(1);
		private final Assignment cNameAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		
		//QuantifiedExpression:
		//	quantifier=("some" | "exists" | "all" | "any") (expression=(CollectionFunction | SubQuery) | name=ID);
		public ParserRule getRule() { return rule; }

		//quantifier=("some" | "exists" | "all" | "any") (expression=(CollectionFunction | SubQuery) | name=ID)
		public Group getGroup() { return cGroup; }

		//quantifier=("some" | "exists" | "all" | "any")
		public Assignment getQuantifierAssignment_0() { return cQuantifierAssignment_0; }

		//"some" | "exists" | "all" | "any"
		public Alternatives getQuantifierAlternatives_0_0() { return cQuantifierAlternatives_0_0; }

		//"some"
		public Keyword getQuantifierSomeKeyword_0_0_0() { return cQuantifierSomeKeyword_0_0_0; }

		//"exists"
		public Keyword getQuantifierExistsKeyword_0_0_1() { return cQuantifierExistsKeyword_0_0_1; }

		//"all"
		public Keyword getQuantifierAllKeyword_0_0_2() { return cQuantifierAllKeyword_0_0_2; }

		//"any"
		public Keyword getQuantifierAnyKeyword_0_0_3() { return cQuantifierAnyKeyword_0_0_3; }

		//expression=(CollectionFunction | SubQuery) | name=ID
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//expression=(CollectionFunction | SubQuery)
		public Assignment getExpressionAssignment_1_0() { return cExpressionAssignment_1_0; }

		//CollectionFunction | SubQuery
		public Alternatives getExpressionAlternatives_1_0_0() { return cExpressionAlternatives_1_0_0; }

		//CollectionFunction
		public RuleCall getExpressionCollectionFunctionParserRuleCall_1_0_0_0() { return cExpressionCollectionFunctionParserRuleCall_1_0_0_0; }

		//SubQuery
		public RuleCall getExpressionSubQueryParserRuleCall_1_0_0_1() { return cExpressionSubQueryParserRuleCall_1_0_0_1; }

		//name=ID
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_1_0() { return cNameIDTerminalRuleCall_1_1_0; }
	}

	public class CaseExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CaseExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cCaseKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cWhenClauseAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cWhenClauseWhenClauseParserRuleCall_0_1_0 = (RuleCall)cWhenClauseAssignment_0_1.eContents().get(0);
		private final Group cGroup_0_2 = (Group)cGroup_0.eContents().get(2);
		private final Keyword cElseKeyword_0_2_0 = (Keyword)cGroup_0_2.eContents().get(0);
		private final Assignment cElseExpressionAssignment_0_2_1 = (Assignment)cGroup_0_2.eContents().get(1);
		private final RuleCall cElseExpressionUnaryExpressionParserRuleCall_0_2_1_0 = (RuleCall)cElseExpressionAssignment_0_2_1.eContents().get(0);
		private final Keyword cEndKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Keyword cCaseKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cExpressionAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cExpressionUnaryExpressionParserRuleCall_1_1_0 = (RuleCall)cExpressionAssignment_1_1.eContents().get(0);
		private final Assignment cAltWhenClauseAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cAltWhenClauseAltWhenClauseParserRuleCall_1_2_0 = (RuleCall)cAltWhenClauseAssignment_1_2.eContents().get(0);
		private final Group cGroup_1_3 = (Group)cGroup_1.eContents().get(3);
		private final Keyword cElseKeyword_1_3_0 = (Keyword)cGroup_1_3.eContents().get(0);
		private final Assignment cElseExpressionAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
		private final RuleCall cElseExpressionUnaryExpressionParserRuleCall_1_3_1_0 = (RuleCall)cElseExpressionAssignment_1_3_1.eContents().get(0);
		private final Keyword cEndKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4);
		
		//CaseExpression:
		//	"case" whenClause+=WhenClause+ ("else" elseExpression=UnaryExpression)? "end" | "case" expression=UnaryExpression
		//	altWhenClause+=AltWhenClause+ ("else" elseExpression=UnaryExpression)? "end";
		public ParserRule getRule() { return rule; }

		//"case" whenClause+=WhenClause+ ("else" elseExpression=UnaryExpression)? "end" | "case" expression=UnaryExpression
		//altWhenClause+=AltWhenClause+ ("else" elseExpression=UnaryExpression)? "end"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"case" whenClause+=WhenClause+ ("else" elseExpression=UnaryExpression)? "end"
		public Group getGroup_0() { return cGroup_0; }

		//"case"
		public Keyword getCaseKeyword_0_0() { return cCaseKeyword_0_0; }

		//whenClause+=WhenClause+
		public Assignment getWhenClauseAssignment_0_1() { return cWhenClauseAssignment_0_1; }

		//WhenClause
		public RuleCall getWhenClauseWhenClauseParserRuleCall_0_1_0() { return cWhenClauseWhenClauseParserRuleCall_0_1_0; }

		//("else" elseExpression=UnaryExpression)?
		public Group getGroup_0_2() { return cGroup_0_2; }

		//"else"
		public Keyword getElseKeyword_0_2_0() { return cElseKeyword_0_2_0; }

		//elseExpression=UnaryExpression
		public Assignment getElseExpressionAssignment_0_2_1() { return cElseExpressionAssignment_0_2_1; }

		//UnaryExpression
		public RuleCall getElseExpressionUnaryExpressionParserRuleCall_0_2_1_0() { return cElseExpressionUnaryExpressionParserRuleCall_0_2_1_0; }

		//"end"
		public Keyword getEndKeyword_0_3() { return cEndKeyword_0_3; }

		//"case" expression=UnaryExpression altWhenClause+=AltWhenClause+ ("else" elseExpression=UnaryExpression)? "end"
		public Group getGroup_1() { return cGroup_1; }

		//"case"
		public Keyword getCaseKeyword_1_0() { return cCaseKeyword_1_0; }

		//expression=UnaryExpression
		public Assignment getExpressionAssignment_1_1() { return cExpressionAssignment_1_1; }

		//UnaryExpression
		public RuleCall getExpressionUnaryExpressionParserRuleCall_1_1_0() { return cExpressionUnaryExpressionParserRuleCall_1_1_0; }

		//altWhenClause+=AltWhenClause+
		public Assignment getAltWhenClauseAssignment_1_2() { return cAltWhenClauseAssignment_1_2; }

		//AltWhenClause
		public RuleCall getAltWhenClauseAltWhenClauseParserRuleCall_1_2_0() { return cAltWhenClauseAltWhenClauseParserRuleCall_1_2_0; }

		//("else" elseExpression=UnaryExpression)?
		public Group getGroup_1_3() { return cGroup_1_3; }

		//"else"
		public Keyword getElseKeyword_1_3_0() { return cElseKeyword_1_3_0; }

		//elseExpression=UnaryExpression
		public Assignment getElseExpressionAssignment_1_3_1() { return cElseExpressionAssignment_1_3_1; }

		//UnaryExpression
		public RuleCall getElseExpressionUnaryExpressionParserRuleCall_1_3_1_0() { return cElseExpressionUnaryExpressionParserRuleCall_1_3_1_0; }

		//"end"
		public Keyword getEndKeyword_1_4() { return cEndKeyword_1_4; }
	}

	public class WhenClauseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "WhenClause");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cWhenKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cWhenExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cWhenExpressionExpressionParserRuleCall_1_0 = (RuleCall)cWhenExpressionAssignment_1.eContents().get(0);
		private final Keyword cThenKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cThenExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cThenExpressionUnaryExpressionParserRuleCall_3_0 = (RuleCall)cThenExpressionAssignment_3.eContents().get(0);
		
		//WhenClause:
		//	"when" whenExpression=Expression "then" thenExpression=UnaryExpression;
		public ParserRule getRule() { return rule; }

		//"when" whenExpression=Expression "then" thenExpression=UnaryExpression
		public Group getGroup() { return cGroup; }

		//"when"
		public Keyword getWhenKeyword_0() { return cWhenKeyword_0; }

		//whenExpression=Expression
		public Assignment getWhenExpressionAssignment_1() { return cWhenExpressionAssignment_1; }

		//Expression
		public RuleCall getWhenExpressionExpressionParserRuleCall_1_0() { return cWhenExpressionExpressionParserRuleCall_1_0; }

		//"then"
		public Keyword getThenKeyword_2() { return cThenKeyword_2; }

		//thenExpression=UnaryExpression
		public Assignment getThenExpressionAssignment_3() { return cThenExpressionAssignment_3; }

		//UnaryExpression
		public RuleCall getThenExpressionUnaryExpressionParserRuleCall_3_0() { return cThenExpressionUnaryExpressionParserRuleCall_3_0; }
	}

	public class AltWhenClauseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AltWhenClause");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cWhenKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cWhenExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cWhenExpressionUnaryExpressionParserRuleCall_1_0 = (RuleCall)cWhenExpressionAssignment_1.eContents().get(0);
		private final Keyword cThenKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cThenExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cThenExpressionUnaryExpressionParserRuleCall_3_0 = (RuleCall)cThenExpressionAssignment_3.eContents().get(0);
		
		//AltWhenClause:
		//	"when" whenExpression=UnaryExpression "then" thenExpression=UnaryExpression;
		public ParserRule getRule() { return rule; }

		//"when" whenExpression=UnaryExpression "then" thenExpression=UnaryExpression
		public Group getGroup() { return cGroup; }

		//"when"
		public Keyword getWhenKeyword_0() { return cWhenKeyword_0; }

		//whenExpression=UnaryExpression
		public Assignment getWhenExpressionAssignment_1() { return cWhenExpressionAssignment_1; }

		//UnaryExpression
		public RuleCall getWhenExpressionUnaryExpressionParserRuleCall_1_0() { return cWhenExpressionUnaryExpressionParserRuleCall_1_0; }

		//"then"
		public Keyword getThenKeyword_2() { return cThenKeyword_2; }

		//thenExpression=UnaryExpression
		public Assignment getThenExpressionAssignment_3() { return cThenExpressionAssignment_3; }

		//UnaryExpression
		public RuleCall getThenExpressionUnaryExpressionParserRuleCall_3_0() { return cThenExpressionUnaryExpressionParserRuleCall_3_0; }
	}

	public class CollectionFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionFunction");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFunctionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cFunctionAlternatives_0_0 = (Alternatives)cFunctionAssignment_0.eContents().get(0);
		private final Keyword cFunctionElementsKeyword_0_0_0 = (Keyword)cFunctionAlternatives_0_0.eContents().get(0);
		private final Keyword cFunctionIndicesKeyword_0_0_1 = (Keyword)cFunctionAlternatives_0_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cPropertyAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cPropertyPropertyValueParserRuleCall_2_0 = (RuleCall)cPropertyAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//CollectionFunction:
		//	function=("elements" | "indices") "(" property=PropertyValue ")";
		public ParserRule getRule() { return rule; }

		//function=("elements" | "indices") "(" property=PropertyValue ")"
		public Group getGroup() { return cGroup; }

		//function=("elements" | "indices")
		public Assignment getFunctionAssignment_0() { return cFunctionAssignment_0; }

		//"elements" | "indices"
		public Alternatives getFunctionAlternatives_0_0() { return cFunctionAlternatives_0_0; }

		//"elements"
		public Keyword getFunctionElementsKeyword_0_0_0() { return cFunctionElementsKeyword_0_0_0; }

		//"indices"
		public Keyword getFunctionIndicesKeyword_0_0_1() { return cFunctionIndicesKeyword_0_0_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//property=PropertyValue
		public Assignment getPropertyAssignment_2() { return cPropertyAssignment_2; }

		//PropertyValue
		public RuleCall getPropertyPropertyValueParserRuleCall_2_0() { return cPropertyPropertyValueParserRuleCall_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}

	public class SubQueryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubQuery");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cQueriesAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cQueriesSelectStatementParserRuleCall_1_0 = (RuleCall)cQueriesAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cUnionKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cQueriesAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cQueriesSelectStatementParserRuleCall_2_1_0 = (RuleCall)cQueriesAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//SubQuery:
		//	"(" queries+=SelectStatement ("union" queries+=SelectStatement)* ")";
		public ParserRule getRule() { return rule; }

		//"(" queries+=SelectStatement ("union" queries+=SelectStatement)* ")"
		public Group getGroup() { return cGroup; }

		//"("
		public Keyword getLeftParenthesisKeyword_0() { return cLeftParenthesisKeyword_0; }

		//queries+=SelectStatement
		public Assignment getQueriesAssignment_1() { return cQueriesAssignment_1; }

		//SelectStatement
		public RuleCall getQueriesSelectStatementParserRuleCall_1_0() { return cQueriesSelectStatementParserRuleCall_1_0; }

		//("union" queries+=SelectStatement)*
		public Group getGroup_2() { return cGroup_2; }

		//"union"
		public Keyword getUnionKeyword_2_0() { return cUnionKeyword_2_0; }

		//queries+=SelectStatement
		public Assignment getQueriesAssignment_2_1() { return cQueriesAssignment_2_1; }

		//SelectStatement
		public RuleCall getQueriesSelectStatementParserRuleCall_2_1_0() { return cQueriesSelectStatementParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}

	public class ParenthesizedExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ParenthesizedExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cExpressionsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cExpressionsExpressionParserRuleCall_1_0 = (RuleCall)cExpressionsAssignment_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 cExpressionsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cExpressionsExpressionParserRuleCall_2_1_0 = (RuleCall)cExpressionsAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//ParenthesizedExpression:
		//	"(" expressions+=Expression ("," expressions+=Expression)* ")";
		public ParserRule getRule() { return rule; }

		//"(" expressions+=Expression ("," expressions+=Expression)* ")"
		public Group getGroup() { return cGroup; }

		//"("
		public Keyword getLeftParenthesisKeyword_0() { return cLeftParenthesisKeyword_0; }

		//expressions+=Expression
		public Assignment getExpressionsAssignment_1() { return cExpressionsAssignment_1; }

		//Expression
		public RuleCall getExpressionsExpressionParserRuleCall_1_0() { return cExpressionsExpressionParserRuleCall_1_0; }

		//("," expressions+=Expression)*
		public Group getGroup_2() { return cGroup_2; }

		//","
		public Keyword getCommaKeyword_2_0() { return cCommaKeyword_2_0; }

		//expressions+=Expression
		public Assignment getExpressionsAssignment_2_1() { return cExpressionsAssignment_2_1; }

		//Expression
		public RuleCall getExpressionsExpressionParserRuleCall_2_1_0() { return cExpressionsExpressionParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}

	public class LiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LiteralValue");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cBooleanLiteralValueParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cRealLiteralValueParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cIntegerLiteralValueParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cNullLiteralValueParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cEmptyLiteralValueParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cStringLiteralValueParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		
		//LiteralValue:
		//	BooleanLiteralValue | RealLiteralValue | IntegerLiteralValue | NullLiteralValue | EmptyLiteralValue |
		//	StringLiteralValue;
		public ParserRule getRule() { return rule; }

		//BooleanLiteralValue | RealLiteralValue | IntegerLiteralValue | NullLiteralValue | EmptyLiteralValue | StringLiteralValue
		public Alternatives getAlternatives() { return cAlternatives; }

		//BooleanLiteralValue
		public RuleCall getBooleanLiteralValueParserRuleCall_0() { return cBooleanLiteralValueParserRuleCall_0; }

		//RealLiteralValue
		public RuleCall getRealLiteralValueParserRuleCall_1() { return cRealLiteralValueParserRuleCall_1; }

		//IntegerLiteralValue
		public RuleCall getIntegerLiteralValueParserRuleCall_2() { return cIntegerLiteralValueParserRuleCall_2; }

		//NullLiteralValue
		public RuleCall getNullLiteralValueParserRuleCall_3() { return cNullLiteralValueParserRuleCall_3; }

		//EmptyLiteralValue
		public RuleCall getEmptyLiteralValueParserRuleCall_4() { return cEmptyLiteralValueParserRuleCall_4; }

		//StringLiteralValue
		public RuleCall getStringLiteralValueParserRuleCall_5() { return cStringLiteralValueParserRuleCall_5; }
	}

	public class StringLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringLiteralValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cStringLiteralValueAction_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);
		
		//StringLiteralValue:
		//	{StringLiteralValue} value=STRING;
		public ParserRule getRule() { return rule; }

		//{StringLiteralValue} value=STRING
		public Group getGroup() { return cGroup; }

		//{StringLiteralValue}
		public Action getStringLiteralValueAction_0() { return cStringLiteralValueAction_0; }

		//value=STRING
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//STRING
		public RuleCall getValueSTRINGTerminalRuleCall_1_0() { return cValueSTRINGTerminalRuleCall_1_0; }
	}

	public class IntegerLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IntegerLiteralValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cIntegerLiteralValueAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueIntValueParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//IntegerLiteralValue:
		//	{IntegerLiteralValue} value=IntValue;
		public ParserRule getRule() { return rule; }

		//{IntegerLiteralValue} value=IntValue
		public Group getGroup() { return cGroup; }

		//{IntegerLiteralValue}
		public Action getIntegerLiteralValueAction_0() { return cIntegerLiteralValueAction_0; }

		//value=IntValue
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//IntValue
		public RuleCall getValueIntValueParserRuleCall_1_0() { return cValueIntValueParserRuleCall_1_0; }
	}

	public class RealLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RealLiteralValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cRealLiteralValueAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueRealValueParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//RealLiteralValue:
		//	{RealLiteralValue} value=RealValue;
		public ParserRule getRule() { return rule; }

		//{RealLiteralValue} value=RealValue
		public Group getGroup() { return cGroup; }

		//{RealLiteralValue}
		public Action getRealLiteralValueAction_0() { return cRealLiteralValueAction_0; }

		//value=RealValue
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//RealValue
		public RuleCall getValueRealValueParserRuleCall_1_0() { return cValueRealValueParserRuleCall_1_0; }
	}

	public class BooleanLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanLiteralValue");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cBooleanLiteralValueAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Keyword cFalseKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cIsTrueAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final Keyword cIsTrueTrueKeyword_1_0 = (Keyword)cIsTrueAssignment_1.eContents().get(0);
		
		//BooleanLiteralValue:
		//	{BooleanLiteralValue} "false" | isTrue?="true";
		public ParserRule getRule() { return rule; }

		//{BooleanLiteralValue} "false" | isTrue?="true"
		public Alternatives getAlternatives() { return cAlternatives; }

		//{BooleanLiteralValue} "false"
		public Group getGroup_0() { return cGroup_0; }

		//{BooleanLiteralValue}
		public Action getBooleanLiteralValueAction_0_0() { return cBooleanLiteralValueAction_0_0; }

		//"false"
		public Keyword getFalseKeyword_0_1() { return cFalseKeyword_0_1; }

		//isTrue?="true"
		public Assignment getIsTrueAssignment_1() { return cIsTrueAssignment_1; }

		//"true"
		public Keyword getIsTrueTrueKeyword_1_0() { return cIsTrueTrueKeyword_1_0; }
	}

	public class NullLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NullLiteralValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cNullLiteralValueAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cNullKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//NullLiteralValue:
		//	{NullLiteralValue} "null";
		public ParserRule getRule() { return rule; }

		//{NullLiteralValue} "null"
		public Group getGroup() { return cGroup; }

		//{NullLiteralValue}
		public Action getNullLiteralValueAction_0() { return cNullLiteralValueAction_0; }

		//"null"
		public Keyword getNullKeyword_1() { return cNullKeyword_1; }
	}

	public class EmptyLiteralValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EmptyLiteralValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cEmptyLiteralValueAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cEmptyKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//EmptyLiteralValue:
		//	{EmptyLiteralValue} "empty";
		public ParserRule getRule() { return rule; }

		//{EmptyLiteralValue} "empty"
		public Group getGroup() { return cGroup; }

		//{EmptyLiteralValue}
		public Action getEmptyLiteralValueAction_0() { return cEmptyLiteralValueAction_0; }

		//"empty"
		public Keyword getEmptyKeyword_1() { return cEmptyKeyword_1; }
	}

	public class RealValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RealValue");
		private final RuleCall cREALParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//RealValue:
		//	REAL;
		public ParserRule getRule() { return rule; }

		//REAL
		public RuleCall getREALParserRuleCall() { return cREALParserRuleCall; }
	}

	public class IntValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IntValue");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cINTTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cHEXTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//IntValue:
		//	INT | HEX;
		public ParserRule getRule() { return rule; }

		//INT | HEX
		public Alternatives getAlternatives() { return cAlternatives; }

		//INT
		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }

		//HEX
		public RuleCall getHEXTerminalRuleCall_1() { return cHEXTerminalRuleCall_1; }
	}

	public class IsNotElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IsNot");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cIsKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cNotKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//IsNot:
		//	"is" "not";
		public ParserRule getRule() { return rule; }

		//"is" "not"
		public Group getGroup() { return cGroup; }

		//"is"
		public Keyword getIsKeyword_0() { return cIsKeyword_0; }

		//"not"
		public Keyword getNotKeyword_1() { return cNotKeyword_1; }
	}

	public class PropertyFetchElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFetch");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFetchKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cAllKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cPropertiesKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//PropertyFetch:
		//	"fetch" "all" "properties";
		public ParserRule getRule() { return rule; }

		//"fetch" "all" "properties"
		public Group getGroup() { return cGroup; }

		//"fetch"
		public Keyword getFetchKeyword_0() { return cFetchKeyword_0; }

		//"all"
		public Keyword getAllKeyword_1() { return cAllKeyword_1; }

		//"properties"
		public Keyword getPropertiesKeyword_2() { return cPropertiesKeyword_2; }
	}

	public class AscendingOrDescendingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AscendingOrDescending");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cAscKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cDescKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//AscendingOrDescending:
		//	"asc" | "desc";
		public ParserRule getRule() { return rule; }

		//"asc" | "desc"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"asc"
		public Keyword getAscKeyword_0() { return cAscKeyword_0; }

		//"desc"
		public Keyword getDescKeyword_1() { return cDescKeyword_1; }
	}

	public class JoinTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "JoinType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Alternatives cAlternatives_0_0 = (Alternatives)cGroup_0.eContents().get(0);
		private final Keyword cLeftKeyword_0_0_0 = (Keyword)cAlternatives_0_0.eContents().get(0);
		private final Keyword cRightKeyword_0_0_1 = (Keyword)cAlternatives_0_0.eContents().get(1);
		private final Keyword cOuterKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Keyword cFullKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cInnerKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		
		//JoinType:
		//	("left" | "right") "outer"? | "full" | "inner";
		public ParserRule getRule() { return rule; }

		//("left" | "right") "outer"? | "full" | "inner"
		public Alternatives getAlternatives() { return cAlternatives; }

		//("left" | "right") "outer"?
		public Group getGroup_0() { return cGroup_0; }

		//"left" | "right"
		public Alternatives getAlternatives_0_0() { return cAlternatives_0_0; }

		//"left"
		public Keyword getLeftKeyword_0_0_0() { return cLeftKeyword_0_0_0; }

		//"right"
		public Keyword getRightKeyword_0_0_1() { return cRightKeyword_0_0_1; }

		//"outer"?
		public Keyword getOuterKeyword_0_1() { return cOuterKeyword_0_1; }

		//"full"
		public Keyword getFullKeyword_1() { return cFullKeyword_1; }

		//"inner"
		public Keyword getInnerKeyword_2() { return cInnerKeyword_2; }
	}

	public class REALElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "REAL");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cINTTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final RuleCall cEXP_INTTerminalRuleCall_2_0 = (RuleCall)cAlternatives_2.eContents().get(0);
		private final RuleCall cINTTerminalRuleCall_2_1 = (RuleCall)cAlternatives_2.eContents().get(1);
		
		//REAL hidden():
		//	INT? "." (EXP_INT | INT);
		public ParserRule getRule() { return rule; }

		//INT? "." (EXP_INT | INT)
		public Group getGroup() { return cGroup; }

		//INT?
		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }

		//"."
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }

		//EXP_INT | INT
		public Alternatives getAlternatives_2() { return cAlternatives_2; }

		//EXP_INT
		public RuleCall getEXP_INTTerminalRuleCall_2_0() { return cEXP_INTTerminalRuleCall_2_0; }

		//INT
		public RuleCall getINTTerminalRuleCall_2_1() { return cINTTerminalRuleCall_2_1; }
	}

	public class IElementWithNoNameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IElementWithNoName");
		private final Assignment cNoNameAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cNoNameIDTerminalRuleCall_0 = (RuleCall)cNoNameAssignment.eContents().get(0);
		
		//// Dummy to avoid name be pulled up
		//IElementWithNoName:
		//	noName=ID;
		public ParserRule getRule() { return rule; }

		//noName=ID
		public Assignment getNoNameAssignment() { return cNoNameAssignment; }

		//ID
		public RuleCall getNoNameIDTerminalRuleCall_0() { return cNoNameIDTerminalRuleCall_0; }
	}

	public class PresentableFeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PresentableFeature");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final RuleCall cFeatureReferenceParserRuleCall_0_0 = (RuleCall)cAlternatives_0.eContents().get(0);
		private final RuleCall cAttributeParserRuleCall_0_1 = (RuleCall)cAlternatives_0.eContents().get(1);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		
		//PresentableFeature:
		//	(FeatureReference | Attribute) name=ID?;
		public ParserRule getRule() { return rule; }

		//(FeatureReference | Attribute) name=ID?
		public Group getGroup() { return cGroup; }

		//FeatureReference | Attribute
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//FeatureReference
		public RuleCall getFeatureReferenceParserRuleCall_0_0() { return cFeatureReferenceParserRuleCall_0_0; }

		//Attribute
		public RuleCall getAttributeParserRuleCall_0_1() { return cAttributeParserRuleCall_0_1; }

		//name=ID?
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
	}
	
	
	public class CrudOperationTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CrudOperationType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cCREATEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cCREATECreateKeyword_0_0 = (Keyword)cCREATEEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cREADEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cREADReadKeyword_1_0 = (Keyword)cREADEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cUPDATEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cUPDATEUpdateKeyword_2_0 = (Keyword)cUPDATEEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cDELETEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cDELETEDeleteKeyword_3_0 = (Keyword)cDELETEEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cALLEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cALLCrudKeyword_4_0 = (Keyword)cALLEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum CrudOperationType:
		//	CREATE="create" | READ="read" | UPDATE="update" | DELETE="delete" | ALL="crud";
		public EnumRule getRule() { return rule; }

		//CREATE="create" | READ="read" | UPDATE="update" | DELETE="delete" | ALL="crud"
		public Alternatives getAlternatives() { return cAlternatives; }

		//CREATE="create"
		public EnumLiteralDeclaration getCREATEEnumLiteralDeclaration_0() { return cCREATEEnumLiteralDeclaration_0; }

		//"create"
		public Keyword getCREATECreateKeyword_0_0() { return cCREATECreateKeyword_0_0; }

		//READ="read"
		public EnumLiteralDeclaration getREADEnumLiteralDeclaration_1() { return cREADEnumLiteralDeclaration_1; }

		//"read"
		public Keyword getREADReadKeyword_1_0() { return cREADReadKeyword_1_0; }

		//UPDATE="update"
		public EnumLiteralDeclaration getUPDATEEnumLiteralDeclaration_2() { return cUPDATEEnumLiteralDeclaration_2; }

		//"update"
		public Keyword getUPDATEUpdateKeyword_2_0() { return cUPDATEUpdateKeyword_2_0; }

		//DELETE="delete"
		public EnumLiteralDeclaration getDELETEEnumLiteralDeclaration_3() { return cDELETEEnumLiteralDeclaration_3; }

		//"delete"
		public Keyword getDELETEDeleteKeyword_3_0() { return cDELETEDeleteKeyword_3_0; }

		//ALL="crud"
		public EnumLiteralDeclaration getALLEnumLiteralDeclaration_4() { return cALLEnumLiteralDeclaration_4; }

		//"crud"
		public Keyword getALLCrudKeyword_4_0() { return cALLCrudKeyword_4_0; }
	}

	public class DataBaseConstraintTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "DataBaseConstraintType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cINDEXEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cINDEXIndexKeyword_0_0 = (Keyword)cINDEXEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cUNIQUEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cUNIQUEUniqueKeyword_1_0 = (Keyword)cUNIQUEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cNATURALEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cNATURALNaturalKeyword_2_0 = (Keyword)cNATURALEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cPRIMARYEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cPRIMARYPrimaryKeyword_3_0 = (Keyword)cPRIMARYEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum DataBaseConstraintType:
		//	INDEX="index" | UNIQUE="unique" | NATURAL="natural" | PRIMARY="primary";
		public EnumRule getRule() { return rule; }

		//INDEX="index" | UNIQUE="unique" | NATURAL="natural" | PRIMARY="primary"
		public Alternatives getAlternatives() { return cAlternatives; }

		//INDEX="index"
		public EnumLiteralDeclaration getINDEXEnumLiteralDeclaration_0() { return cINDEXEnumLiteralDeclaration_0; }

		//"index"
		public Keyword getINDEXIndexKeyword_0_0() { return cINDEXIndexKeyword_0_0; }

		//UNIQUE="unique"
		public EnumLiteralDeclaration getUNIQUEEnumLiteralDeclaration_1() { return cUNIQUEEnumLiteralDeclaration_1; }

		//"unique"
		public Keyword getUNIQUEUniqueKeyword_1_0() { return cUNIQUEUniqueKeyword_1_0; }

		//NATURAL="natural"
		public EnumLiteralDeclaration getNATURALEnumLiteralDeclaration_2() { return cNATURALEnumLiteralDeclaration_2; }

		//"natural"
		public Keyword getNATURALNaturalKeyword_2_0() { return cNATURALNaturalKeyword_2_0; }

		//PRIMARY="primary"
		public EnumLiteralDeclaration getPRIMARYEnumLiteralDeclaration_3() { return cPRIMARYEnumLiteralDeclaration_3; }

		//"primary"
		public Keyword getPRIMARYPrimaryKeyword_3_0() { return cPRIMARYPrimaryKeyword_3_0; }
	}
	
	private ModelElements pModel;
	private ModelElementElements pModelElement;
	private TypeElements pType;
	private ComplexTypeElements pComplexType;
	private ServiceElements pService;
	private DependantElements pDependant;
	private PropertyElements pProperty;
	private OperationElements pOperation;
	private ParameterElements pParameter;
	private DelegateOperationElements pDelegateOperation;
	private DaoOperationElements pDaoOperation;
	private ValueObjectElements pValueObject;
	private DataViewElements pDataView;
	private FeatureReferenceElements pFeatureReference;
	private MapperElements pMapper;
	private PropertyMappingElements pPropertyMapping;
	private EntityElements pEntity;
	private AttributeElements pAttribute;
	private AttributeFlagElements pAttributeFlag;
	private ExpressionFlagElements pExpressionFlag;
	private RequiredFlagElements pRequiredFlag;
	private ReadOnlyFlagElements pReadOnlyFlag;
	private AvailableFlagElements pAvailableFlag;
	private DerivedFlagElements pDerivedFlag;
	private TransientFlagElements pTransientFlag;
	private AttributePropertyElements pAttributeProperty;
	private AttributeValidationPropertyElements pAttributeValidationProperty;
	private AttributeTextPropertyElements pAttributeTextProperty;
	private AttributeGroupElements pAttributeGroup;
	private AttributeSortOrderElements pAttributeSortOrder;
	private DaoFeatureElements pDaoFeature;
	private DaoElements pDao;
	private QueryOperationElements pQueryOperation;
	private QueryParameterElements pQueryParameter;
	private ColumnElements pColumn;
	private ManyToOneElements pManyToOne;
	private OneToOneElements pOneToOne;
	private OneToManyElements pOneToMany;
	private ManyToManyElements pManyToMany;
	private DataBaseConstraintElements pDataBaseConstraint;
	private CrudOperationTypeElements unknownRuleCrudOperationType;
	private DataBaseConstraintTypeElements unknownRuleDataBaseConstraintType;
	private ReferenceableByXmadslVariableElements pReferenceableByXmadslVariable;
	private ApplicationSessionElements pApplicationSession;
	private SessionFunctionElements pSessionFunction;
	private QlStatementElements pQlStatement;
	private CallableStatementElements pCallableStatement;
	private CallInputParameterElements pCallInputParameter;
	private CallOutputParameterElements pCallOutputParameter;
	private InsertStatementElements pInsertStatement;
	private DeleteStatementElements pDeleteStatement;
	private UpdateStatementElements pUpdateStatement;
	private PropertyAssignmentElements pPropertyAssignment;
	private SelectStatementElements pSelectStatement;
	private SortOrderElementElements pSortOrderElement;
	private SelectPropertiesElements pSelectProperties;
	private SelectClassElements pSelectClass;
	private SelectObjectElements pSelectObject;
	private FromRangeElements pFromRange;
	private FromClassElements pFromClass;
	private InClassElements pInClass;
	private InCollectionElements pInCollection;
	private InCollectionElementsElements pInCollectionElements;
	private JoinElements pJoin;
	private JoinEntityElements pJoinEntity;
	private AliasedExpressionElements pAliasedExpression;
	private ExpressionElements pExpression;
	private LogicalOrExpressionElements pLogicalOrExpression;
	private LogicalAndExpressionElements pLogicalAndExpression;
	private PrefixExpressionElements pPrefixExpression;
	private EqualityExpressionElements pEqualityExpression;
	private RelationalExpressionElements pRelationalExpression;
	private ConcatenationExpressionElements pConcatenationExpression;
	private AdditiveExpressionElements pAdditiveExpression;
	private MultiplyExpressionElements pMultiplyExpression;
	private UnaryExpressionElements pUnaryExpression;
	private PrimaryExpressionElements pPrimaryExpression;
	private PropertyValueElements pPropertyValue;
	private FunctionCallElements pFunctionCall;
	private TrimFunctionElements pTrimFunction;
	private CastFunctionElements pCastFunction;
	private AggregateFunctionElements pAggregateFunction;
	private QueryParameterReferenceElements pQueryParameterReference;
	private QueryParameterValueElements pQueryParameterValue;
	private QuantifiedExpressionElements pQuantifiedExpression;
	private CaseExpressionElements pCaseExpression;
	private WhenClauseElements pWhenClause;
	private AltWhenClauseElements pAltWhenClause;
	private CollectionFunctionElements pCollectionFunction;
	private SubQueryElements pSubQuery;
	private ParenthesizedExpressionElements pParenthesizedExpression;
	private LiteralValueElements pLiteralValue;
	private StringLiteralValueElements pStringLiteralValue;
	private IntegerLiteralValueElements pIntegerLiteralValue;
	private RealLiteralValueElements pRealLiteralValue;
	private BooleanLiteralValueElements pBooleanLiteralValue;
	private NullLiteralValueElements pNullLiteralValue;
	private EmptyLiteralValueElements pEmptyLiteralValue;
	private RealValueElements pRealValue;
	private IntValueElements pIntValue;
	private IsNotElements pIsNot;
	private PropertyFetchElements pPropertyFetch;
	private AscendingOrDescendingElements pAscendingOrDescending;
	private JoinTypeElements pJoinType;
	private REALElements pREAL;
	private IElementWithNoNameElements pIElementWithNoName;
	private PresentableFeatureElements pPresentableFeature;
	private TerminalRule tEXP_INT;
	private TerminalRule tHEX;
	private TerminalRule tREGION_START;
	private TerminalRule tREGION_END;
	
	private final GrammarProvider grammarProvider;

	private CoreDslGrammarAccess gaCoreDsl;

	@Inject
	public DomDslGrammarAccess(GrammarProvider grammarProvider,
		CoreDslGrammarAccess gaCoreDsl) {
		this.grammarProvider = grammarProvider;
		this.gaCoreDsl = gaCoreDsl;
	}
	
	public Grammar getGrammar() {	
		return grammarProvider.getGrammar(this);
	}
	

	public CoreDslGrammarAccess getCoreDslGrammarAccess() {
		return gaCoreDsl;
	}

	
	//Model returns core::Model:
	//	{core::Model} ("namespace" name=QualifiedName)? imports+=Import* elements+=ModelElement*;
	public ModelElements getModelAccess() {
		return (pModel != null) ? pModel : (pModel = new ModelElements());
	}
	
	public ParserRule getModelRule() {
		return getModelAccess().getRule();
	}

	//ModelElement returns core::ModelElement:
	//	ApplicationSession | Service | ComplexType | Dao | Mapper;
	public ModelElementElements getModelElementAccess() {
		return (pModelElement != null) ? pModelElement : (pModelElement = new ModelElementElements());
	}
	
	public ParserRule getModelElementRule() {
		return getModelElementAccess().getRule();
	}

	//Type returns core::Type:
	//	ComplexType;
	public TypeElements getTypeAccess() {
		return (pType != null) ? pType : (pType = new TypeElements());
	}
	
	public ParserRule getTypeRule() {
		return getTypeAccess().getRule();
	}

	//ComplexType:
	//	Entity | DataView | ValueObject;
	public ComplexTypeElements getComplexTypeAccess() {
		return (pComplexType != null) ? pComplexType : (pComplexType = new ComplexTypeElements());
	}
	
	public ParserRule getComplexTypeRule() {
		return getComplexTypeAccess().getRule();
	}

	//Service:
	//	"service" name=ID ("uses" dependencies+=[Dependant|QualifiedName] ("," dependencies+=[Dependant|QualifiedName])*)? "{"
	//	(operations+=Operation | delegateOperations+=DelegateOperation)* "}";
	public ServiceElements getServiceAccess() {
		return (pService != null) ? pService : (pService = new ServiceElements());
	}
	
	public ParserRule getServiceRule() {
		return getServiceAccess().getRule();
	}

	//Dependant:
	//	Service | Dao | Entity;
	public DependantElements getDependantAccess() {
		return (pDependant != null) ? pDependant : (pDependant = new DependantElements());
	}
	
	public ParserRule getDependantRule() {
		return getDependantAccess().getRule();
	}

	//Property:
	//	"property" type=[core::SimpleType|QualifiedName] name=ID ("=" defaultValue=STRING)?;
	public PropertyElements getPropertyAccess() {
		return (pProperty != null) ? pProperty : (pProperty = new PropertyElements());
	}
	
	public ParserRule getPropertyRule() {
		return getPropertyAccess().getRule();
	}

	//Operation:
	//	"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (parameters+=Parameter (","
	//	parameters+=Parameter)*)? ")" ("=" expression=STRING)?;
	public OperationElements getOperationAccess() {
		return (pOperation != null) ? pOperation : (pOperation = new OperationElements());
	}
	
	public ParserRule getOperationRule() {
		return getOperationAccess().getRule();
	}

	//Parameter:
	//	type=[core::Type|QualifiedName] many?="[]"? name=ID;
	public ParameterElements getParameterAccess() {
		return (pParameter != null) ? pParameter : (pParameter = new ParameterElements());
	}
	
	public ParserRule getParameterRule() {
		return getParameterAccess().getRule();
	}

	//DelegateOperation:
	//	{DelegateOperation} (view=[DataView] many?="[]"?)? repository=[Dao] "." (operation=[DaoOperation] |
	//	crudOperationType=CrudOperationType ("(" viewParameter=[DataView|QualifiedName] ")")?) ("as" name=ID)? ("filter" "="
	//	filter=Expression)?;
	public DelegateOperationElements getDelegateOperationAccess() {
		return (pDelegateOperation != null) ? pDelegateOperation : (pDelegateOperation = new DelegateOperationElements());
	}
	
	public ParserRule getDelegateOperationRule() {
		return getDelegateOperationAccess().getRule();
	}

	//DaoOperation:
	//	QueryOperation | Operation;
	public DaoOperationElements getDaoOperationAccess() {
		return (pDaoOperation != null) ? pDaoOperation : (pDaoOperation = new DaoOperationElements());
	}
	
	public ParserRule getDaoOperationRule() {
		return getDaoOperationAccess().getRule();
	}

	//ValueObject:
	//	"valueobject" name=ID "{" attributes+=Attribute* "}";
	public ValueObjectElements getValueObjectAccess() {
		return (pValueObject != null) ? pValueObject : (pValueObject = new ValueObjectElements());
	}
	
	public ParserRule getValueObjectRule() {
		return getValueObjectAccess().getRule();
	}

	//DataView:
	//	"dataview" name=ID ("extends" superType=[DataView|QualifiedName])? "{" (attributes+=Attribute |
	//	featureReferences+=FeatureReference)* "}";
	public DataViewElements getDataViewAccess() {
		return (pDataView != null) ? pDataView : (pDataView = new DataViewElements());
	}
	
	public ParserRule getDataViewRule() {
		return getDataViewAccess().getRule();
	}

	//FeatureReference:
	//	source=[Entity] ("." (attribute=[Attribute] ("<" view=[DataView|QualifiedName] ">")? ("as" name=ID)? | all?="all") |
	//	all?=".*") properties+=AttributeProperty*;
	public FeatureReferenceElements getFeatureReferenceAccess() {
		return (pFeatureReference != null) ? pFeatureReference : (pFeatureReference = new FeatureReferenceElements());
	}
	
	public ParserRule getFeatureReferenceRule() {
		return getFeatureReferenceAccess().getRule();
	}

	//Mapper:
	//	"mapper" name=ID "maps" left=[ComplexType] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[ComplexType]
	//	"{" propertyMappings+=PropertyMapping* "}";
	public MapperElements getMapperAccess() {
		return (pMapper != null) ? pMapper : (pMapper = new MapperElements());
	}
	
	public ParserRule getMapperRule() {
		return getMapperAccess().getRule();
	}

	//PropertyMapping:
	//	left=[Attribute] (biDirectional?="<->" | toLeft?="<-" | toRight?="->") right=[Attribute];
	public PropertyMappingElements getPropertyMappingAccess() {
		return (pPropertyMapping != null) ? pPropertyMapping : (pPropertyMapping = new PropertyMappingElements());
	}
	
	public ParserRule getPropertyMappingRule() {
		return getPropertyMappingAccess().getRule();
	}

	//Entity:
	//	"entity" name=ID ("extends" superType=[Entity|QualifiedName])? "{" (attributes+=Attribute |
	//	attributeGroups+=AttributeGroup)* conditionsBlock=ConditionsBlock? "}";
	public EntityElements getEntityAccess() {
		return (pEntity != null) ? pEntity : (pEntity = new EntityElements());
	}
	
	public ParserRule getEntityRule() {
		return getEntityAccess().getRule();
	}

	//Attribute:
	//	{Attribute} (identifier?="id" | version?="version" | composition?="composition")? type=DataTypeAndTypeParameter
	//	many?="[]"? name=ID ("=" (incrementerReference=IncrementerReference | defaultValue=STRING))? ("oppositeof"
	//	opposite=[Attribute])? attributProperties+=AttributeProperty* ("orderby" sortOrder=[AttributeGroup])?;
	public AttributeElements getAttributeAccess() {
		return (pAttribute != null) ? pAttribute : (pAttribute = new AttributeElements());
	}
	
	public ParserRule getAttributeRule() {
		return getAttributeAccess().getRule();
	}

	//AttributeFlag:
	//	ExpressionFlag | DerivedFlag | TransientFlag;
	public AttributeFlagElements getAttributeFlagAccess() {
		return (pAttributeFlag != null) ? pAttributeFlag : (pAttributeFlag = new AttributeFlagElements());
	}
	
	public ParserRule getAttributeFlagRule() {
		return getAttributeFlagAccess().getRule();
	}

	//ExpressionFlag:
	//	RequiredFlag | ReadOnlyFlag | AvailableFlag;
	public ExpressionFlagElements getExpressionFlagAccess() {
		return (pExpressionFlag != null) ? pExpressionFlag : (pExpressionFlag = new ExpressionFlagElements());
	}
	
	public ParserRule getExpressionFlagRule() {
		return getExpressionFlagAccess().getRule();
	}

	//RequiredFlag:
	//	"required" "=" expression=EqualityExpr;
	public RequiredFlagElements getRequiredFlagAccess() {
		return (pRequiredFlag != null) ? pRequiredFlag : (pRequiredFlag = new RequiredFlagElements());
	}
	
	public ParserRule getRequiredFlagRule() {
		return getRequiredFlagAccess().getRule();
	}

	//ReadOnlyFlag:
	//	"readonly" "=" expression=EqualityExpr;
	public ReadOnlyFlagElements getReadOnlyFlagAccess() {
		return (pReadOnlyFlag != null) ? pReadOnlyFlag : (pReadOnlyFlag = new ReadOnlyFlagElements());
	}
	
	public ParserRule getReadOnlyFlagRule() {
		return getReadOnlyFlagAccess().getRule();
	}

	//AvailableFlag:
	//	"available" "=" expression=EqualityExpr;
	public AvailableFlagElements getAvailableFlagAccess() {
		return (pAvailableFlag != null) ? pAvailableFlag : (pAvailableFlag = new AvailableFlagElements());
	}
	
	public ParserRule getAvailableFlagRule() {
		return getAvailableFlagAccess().getRule();
	}

	//DerivedFlag:
	//	"derived" "=" expression=BoolLiteral;
	public DerivedFlagElements getDerivedFlagAccess() {
		return (pDerivedFlag != null) ? pDerivedFlag : (pDerivedFlag = new DerivedFlagElements());
	}
	
	public ParserRule getDerivedFlagRule() {
		return getDerivedFlagAccess().getRule();
	}

	//TransientFlag:
	//	"transient" "=" expression=BoolLiteral;
	public TransientFlagElements getTransientFlagAccess() {
		return (pTransientFlag != null) ? pTransientFlag : (pTransientFlag = new TransientFlagElements());
	}
	
	public ParserRule getTransientFlagRule() {
		return getTransientFlagAccess().getRule();
	}

	//AttributeProperty:
	//	AttributeFlag | AttributeValidationProperty | AttributeTextProperty;
	public AttributePropertyElements getAttributePropertyAccess() {
		return (pAttributeProperty != null) ? pAttributeProperty : (pAttributeProperty = new AttributePropertyElements());
	}
	
	public ParserRule getAttributePropertyRule() {
		return getAttributePropertyAccess().getRule();
	}

	//AttributeValidationProperty:
	//	"constraints" "=" constraints+=Constraint ("," constraints+=Constraint)* | "format" "=" format=ValidatorReference;
	public AttributeValidationPropertyElements getAttributeValidationPropertyAccess() {
		return (pAttributeValidationProperty != null) ? pAttributeValidationProperty : (pAttributeValidationProperty = new AttributeValidationPropertyElements());
	}
	
	public ParserRule getAttributeValidationPropertyRule() {
		return getAttributeValidationPropertyAccess().getRule();
	}

	//AttributeTextProperty:
	//	"title" "=" labelText=STRING | "description" "=" tooltipText=STRING | "unit" "=" (unitText=STRING |
	//	unitAttribute=[Attribute]) | "hstore" "=" hstoreColumn=STRING;
	public AttributeTextPropertyElements getAttributeTextPropertyAccess() {
		return (pAttributeTextProperty != null) ? pAttributeTextProperty : (pAttributeTextProperty = new AttributeTextPropertyElements());
	}
	
	public ParserRule getAttributeTextPropertyRule() {
		return getAttributeTextPropertyAccess().getRule();
	}

	//AttributeGroup:
	//	(key?="key" | unique?="unique" | filter?="filter" | sortorder?="sortorder") name=ID "(" attributes+=AttributeSortOrder
	//	("," attributes+=AttributeSortOrder)* ")";
	public AttributeGroupElements getAttributeGroupAccess() {
		return (pAttributeGroup != null) ? pAttributeGroup : (pAttributeGroup = new AttributeGroupElements());
	}
	
	public ParserRule getAttributeGroupRule() {
		return getAttributeGroupAccess().getRule();
	}

	//AttributeSortOrder:
	//	attribute=[Attribute] (asc?="asc" | desc?="desc")?;
	public AttributeSortOrderElements getAttributeSortOrderAccess() {
		return (pAttributeSortOrder != null) ? pAttributeSortOrder : (pAttributeSortOrder = new AttributeSortOrderElements());
	}
	
	public ParserRule getAttributeSortOrderRule() {
		return getAttributeSortOrderAccess().getRule();
	}

	//DaoFeature:
	//	Column | ManyToOne | OneToOne | ManyToMany | OneToMany;
	public DaoFeatureElements getDaoFeatureAccess() {
		return (pDaoFeature != null) ? pDaoFeature : (pDaoFeature = new DaoFeatureElements());
	}
	
	public ParserRule getDaoFeatureRule() {
		return getDaoFeatureAccess().getRule();
	}

	//Dao:
	//	"repository" name=ID "for" entity=[Entity|QualifiedName] "{" ("table" "=" tableName=STRING)? ("discriminator" "="
	//	discriminator=STRING)? ("qualifier" "=" qualifier=STRING)? (operations+=Operation | queryOperation+=QueryOperation)*
	//	(dataBaseConstraints+=DataBaseConstraint | columns+=Column | manyToOneAssociations+=ManyToOne |
	//	oneToOneAssociations+=OneToOne | oneToManyAssociations+=OneToMany | manyToManyAssociations+=ManyToMany)* "}";
	public DaoElements getDaoAccess() {
		return (pDao != null) ? pDao : (pDao = new DaoElements());
	}
	
	public ParserRule getDaoRule() {
		return getDaoAccess().getRule();
	}

	//QueryOperation:
	//	"operation" (type=[core::Type|QualifiedName] many?="[]"?)? name=ID "(" (queryParameters+=QueryParameter (","
	//	queryParameters+=QueryParameter)*)? ")" ":" statement=QlStatement;
	public QueryOperationElements getQueryOperationAccess() {
		return (pQueryOperation != null) ? pQueryOperation : (pQueryOperation = new QueryOperationElements());
	}
	
	public ParserRule getQueryOperationRule() {
		return getQueryOperationAccess().getRule();
	}

	//QueryParameter:
	//	Parameter | attribute=[Attribute];
	public QueryParameterElements getQueryParameterAccess() {
		return (pQueryParameter != null) ? pQueryParameter : (pQueryParameter = new QueryParameterElements());
	}
	
	public ParserRule getQueryParameterRule() {
		return getQueryParameterAccess().getRule();
	}

	//Column:
	//	"column" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=DataTypeAndTypeParameter)?
	//	("sqltype" "=" columnType=[core::Type|QualifiedName])? ("{" columns+=Column+ "}")?;
	public ColumnElements getColumnAccess() {
		return (pColumn != null) ? pColumn : (pColumn = new ColumnElements());
	}
	
	public ParserRule getColumnRule() {
		return getColumnAccess().getRule();
	}

	//ManyToOne:
	//	"many-to-one" attribute=[Attribute] ("<->" columnName=STRING)? ("usertype" "=" userType=[core::Type|QualifiedName])?
	//	("sqltype" "=" sqlType=[core::SqlType])? ("{" columns+=Column+ "}")?;
	public ManyToOneElements getManyToOneAccess() {
		return (pManyToOne != null) ? pManyToOne : (pManyToOne = new ManyToOneElements());
	}
	
	public ParserRule getManyToOneRule() {
		return getManyToOneAccess().getRule();
	}

	//OneToOne:
	//	"one-to-one" attribute=[Attribute];
	public OneToOneElements getOneToOneAccess() {
		return (pOneToOne != null) ? pOneToOne : (pOneToOne = new OneToOneElements());
	}
	
	public ParserRule getOneToOneRule() {
		return getOneToOneAccess().getRule();
	}

	//OneToMany:
	//	"one-to-many" attribute=[Attribute] ("<->" columnName=STRING)? ("{" columns+=Column+ "}")?;
	public OneToManyElements getOneToManyAccess() {
		return (pOneToMany != null) ? pOneToMany : (pOneToMany = new OneToManyElements());
	}
	
	public ParserRule getOneToManyRule() {
		return getOneToManyAccess().getRule();
	}

	//ManyToMany:
	//	"many-to-many" attribute=[Attribute] "<->" tableName=STRING ("." columnName=STRING)?;
	public ManyToManyElements getManyToManyAccess() {
		return (pManyToMany != null) ? pManyToMany : (pManyToMany = new ManyToManyElements());
	}
	
	public ParserRule getManyToManyRule() {
		return getManyToManyAccess().getRule();
	}

	/// **
	// * DataBaseConstraint used for efficient and consistent finder and ddl generation 
	// * Generated artefacts: Service,ServiceImpl,Dao,DaoImpl,Hbm,Ddl
	// * / DataBaseConstraint:
	//	type=DataBaseConstraintType name=ID "(" attributes+=[Attribute] ("," attributes+=[Attribute])* ")";
	public DataBaseConstraintElements getDataBaseConstraintAccess() {
		return (pDataBaseConstraint != null) ? pDataBaseConstraint : (pDataBaseConstraint = new DataBaseConstraintElements());
	}
	
	public ParserRule getDataBaseConstraintRule() {
		return getDataBaseConstraintAccess().getRule();
	}

	//enum CrudOperationType:
	//	CREATE="create" | READ="read" | UPDATE="update" | DELETE="delete" | ALL="crud";
	public CrudOperationTypeElements getCrudOperationTypeAccess() {
		return (unknownRuleCrudOperationType != null) ? unknownRuleCrudOperationType : (unknownRuleCrudOperationType = new CrudOperationTypeElements());
	}
	
	public EnumRule getCrudOperationTypeRule() {
		return getCrudOperationTypeAccess().getRule();
	}

	//enum DataBaseConstraintType:
	//	INDEX="index" | UNIQUE="unique" | NATURAL="natural" | PRIMARY="primary";
	public DataBaseConstraintTypeElements getDataBaseConstraintTypeAccess() {
		return (unknownRuleDataBaseConstraintType != null) ? unknownRuleDataBaseConstraintType : (unknownRuleDataBaseConstraintType = new DataBaseConstraintTypeElements());
	}
	
	public EnumRule getDataBaseConstraintTypeRule() {
		return getDataBaseConstraintTypeAccess().getRule();
	}

	//ReferenceableByXmadslVariable returns core::ReferenceableByXmadslVariable:
	//	Property | StatusFlag | Attribute | IElementWithNoName;
	public ReferenceableByXmadslVariableElements getReferenceableByXmadslVariableAccess() {
		return (pReferenceableByXmadslVariable != null) ? pReferenceableByXmadslVariable : (pReferenceableByXmadslVariable = new ReferenceableByXmadslVariableElements());
	}
	
	public ParserRule getReferenceableByXmadslVariableRule() {
		return getReferenceableByXmadslVariableAccess().getRule();
	}

	//ApplicationSession:
	//	"context" name=ID "{" properties+=Property* functions+=SessionFunction* conditionsBlock=ConditionsBlock? "}";
	public ApplicationSessionElements getApplicationSessionAccess() {
		return (pApplicationSession != null) ? pApplicationSession : (pApplicationSession = new ApplicationSessionElements());
	}
	
	public ParserRule getApplicationSessionRule() {
		return getApplicationSessionAccess().getRule();
	}

	//SessionFunction returns core::Function:
	//	"function" resultType=[core::SimpleType|QualifiedName] name=ID "(" parameterType=[core::SimpleType|QualifiedName]
	//	parameterName=ID ")";
	public SessionFunctionElements getSessionFunctionAccess() {
		return (pSessionFunction != null) ? pSessionFunction : (pSessionFunction = new SessionFunctionElements());
	}
	
	public ParserRule getSessionFunctionRule() {
		return getSessionFunctionAccess().getRule();
	}

	//QlStatement:
	//	InsertStatement | SelectStatement | UpdateStatement | DeleteStatement | CallableStatement;
	public QlStatementElements getQlStatementAccess() {
		return (pQlStatement != null) ? pQlStatement : (pQlStatement = new QlStatementElements());
	}
	
	public ParserRule getQlStatementRule() {
		return getQlStatementAccess().getRule();
	}

	//CallableStatement:
	//	"call" functionCall?="function"? name=QualifiedName "(" (inParameter+=CallInputParameter (","
	//	inParameter+=CallInputParameter)*)? ")" ("return" outParameter+=CallOutputParameter (","
	//	outParameter+=CallOutputParameter)*)?;
	public CallableStatementElements getCallableStatementAccess() {
		return (pCallableStatement != null) ? pCallableStatement : (pCallableStatement = new CallableStatementElements());
	}
	
	public ParserRule getCallableStatementRule() {
		return getCallableStatementAccess().getRule();
	}

	//CallInputParameter:
	//	{CallInputParameter} parameter=[QueryParameter] ("." attribute=[Attribute])? ("as" name=ID)?;
	public CallInputParameterElements getCallInputParameterAccess() {
		return (pCallInputParameter != null) ? pCallInputParameter : (pCallInputParameter = new CallInputParameterElements());
	}
	
	public ParserRule getCallInputParameterRule() {
		return getCallInputParameterAccess().getRule();
	}

	//CallOutputParameter:
	//	{CallOutputParameter} (name=ID "as"?)? attribute=[Attribute]? ("." nestedAttribute=[Attribute])?;
	public CallOutputParameterElements getCallOutputParameterAccess() {
		return (pCallOutputParameter != null) ? pCallOutputParameter : (pCallOutputParameter = new CallOutputParameterElements());
	}
	
	public ParserRule getCallOutputParameterRule() {
		return getCallOutputParameterAccess().getRule();
	}

	//InsertStatement:
	//	"insert" "into" entity=[Entity|QualifiedName] "(" expression+=PrimaryExpression ("," expression+=PrimaryExpression)*
	//	")" selectStatement=SelectStatement;
	public InsertStatementElements getInsertStatementAccess() {
		return (pInsertStatement != null) ? pInsertStatement : (pInsertStatement = new InsertStatementElements());
	}
	
	public ParserRule getInsertStatementRule() {
		return getInsertStatementAccess().getRule();
	}

	//DeleteStatement:
	//	"delete" "from"? entity=[Entity|QualifiedName] "as"? name=ID ("where" where=Expression)?;
	public DeleteStatementElements getDeleteStatementAccess() {
		return (pDeleteStatement != null) ? pDeleteStatement : (pDeleteStatement = new DeleteStatementElements());
	}
	
	public ParserRule getDeleteStatementRule() {
		return getDeleteStatementAccess().getRule();
	}

	//UpdateStatement:
	//	"update" versioned?="versioned"? "from"? entity=[Entity|QualifiedName] "as"? name=ID "set"
	//	assignment+=PropertyAssignment ("," assignment+=PropertyAssignment)* ("where" where=Expression)?;
	public UpdateStatementElements getUpdateStatementAccess() {
		return (pUpdateStatement != null) ? pUpdateStatement : (pUpdateStatement = new UpdateStatementElements());
	}
	
	public ParserRule getUpdateStatementRule() {
		return getUpdateStatementAccess().getRule();
	}

	//PropertyAssignment:
	//	property=PropertyValue "=" expression=ConcatenationExpression;
	public PropertyAssignmentElements getPropertyAssignmentAccess() {
		return (pPropertyAssignment != null) ? pPropertyAssignment : (pPropertyAssignment = new PropertyAssignmentElements());
	}
	
	public ParserRule getPropertyAssignmentRule() {
		return getPropertyAssignmentAccess().getRule();
	}

	//SelectStatement:
	//	("select" (SelectProperties | SelectClass | SelectObject))? ("from" from+=FromRange (join+=Join | ","
	//	from+=FromRange)*)? ("where" where=Expression)? ("group" "by" groupBy+=Expression ("," groupBy+=Expression)* ("having"
	//	having=Expression)?)? ("order" "by" orderBy+=SortOrderElement ("," orderBy+=SortOrderElement)*)?;
	public SelectStatementElements getSelectStatementAccess() {
		return (pSelectStatement != null) ? pSelectStatement : (pSelectStatement = new SelectStatementElements());
	}
	
	public ParserRule getSelectStatementRule() {
		return getSelectStatementAccess().getRule();
	}

	//SortOrderElement:
	//	expression=Expression sortOrder=AscendingOrDescending?;
	public SortOrderElementElements getSortOrderElementAccess() {
		return (pSortOrderElement != null) ? pSortOrderElement : (pSortOrderElement = new SortOrderElementElements());
	}
	
	public ParserRule getSortOrderElementRule() {
		return getSortOrderElementAccess().getRule();
	}

	//SelectProperties:
	//	distinct?="distinct"? properties+=AliasedExpression ("," properties+=AliasedExpression)*;
	public SelectPropertiesElements getSelectPropertiesAccess() {
		return (pSelectProperties != null) ? pSelectProperties : (pSelectProperties = new SelectPropertiesElements());
	}
	
	public ParserRule getSelectPropertiesRule() {
		return getSelectPropertiesAccess().getRule();
	}

	//SelectClass:
	//	"new" class=QualifiedName "(" arguments+=AliasedExpression ("," arguments+=AliasedExpression)* ")";
	public SelectClassElements getSelectClassAccess() {
		return (pSelectClass != null) ? pSelectClass : (pSelectClass = new SelectClassElements());
	}
	
	public ParserRule getSelectClassRule() {
		return getSelectClassAccess().getRule();
	}

	//SelectObject:
	//	"object" "(" name=ID ")";
	public SelectObjectElements getSelectObjectAccess() {
		return (pSelectObject != null) ? pSelectObject : (pSelectObject = new SelectObjectElements());
	}
	
	public ParserRule getSelectObjectRule() {
		return getSelectObjectAccess().getRule();
	}

	//FromRange:
	//	FromClass | InClass | InCollection | InCollectionElements;
	public FromRangeElements getFromRangeAccess() {
		return (pFromRange != null) ? pFromRange : (pFromRange = new FromRangeElements());
	}
	
	public ParserRule getFromRangeRule() {
		return getFromRangeAccess().getRule();
	}

	//FromClass:
	//	entity=[Entity|QualifiedName] "as"? name=ID popertyFetch?=PropertyFetch?;
	public FromClassElements getFromClassAccess() {
		return (pFromClass != null) ? pFromClass : (pFromClass = new FromClassElements());
	}
	
	public ParserRule getFromClassRule() {
		return getFromClassAccess().getRule();
	}

	//InClass:
	//	name=ID "in" "class" class=QualifiedName;
	public InClassElements getInClassAccess() {
		return (pInClass != null) ? pInClass : (pInClass = new InClassElements());
	}
	
	public ParserRule getInClassRule() {
		return getInClassAccess().getRule();
	}

	//InCollection:
	//	"in" "(" path=QualifiedName ")" alias=ID;
	public InCollectionElements getInCollectionAccess() {
		return (pInCollection != null) ? pInCollection : (pInCollection = new InCollectionElements());
	}
	
	public ParserRule getInCollectionRule() {
		return getInCollectionAccess().getRule();
	}

	//InCollectionElements:
	//	name=ID "in" "elements" "(" reference=QualifiedName ")";
	public InCollectionElementsElements getInCollectionElementsAccess() {
		return (pInCollectionElements != null) ? pInCollectionElements : (pInCollectionElements = new InCollectionElementsElements());
	}
	
	public ParserRule getInCollectionElementsRule() {
		return getInCollectionElementsAccess().getRule();
	}

	//Join:
	//	type=JoinType? "join" fetch?="fetch"? entity=[JoinEntity] "." reference=[Attribute] "as"? name=ID
	//	propertyFetch?=PropertyFetch? ("with" expression=Expression)?;
	public JoinElements getJoinAccess() {
		return (pJoin != null) ? pJoin : (pJoin = new JoinElements());
	}
	
	public ParserRule getJoinRule() {
		return getJoinAccess().getRule();
	}

	//JoinEntity:
	//	FromClass | Join;
	public JoinEntityElements getJoinEntityAccess() {
		return (pJoinEntity != null) ? pJoinEntity : (pJoinEntity = new JoinEntityElements());
	}
	
	public ParserRule getJoinEntityRule() {
		return getJoinEntityAccess().getRule();
	}

	//AliasedExpression returns Expression:
	//	Expression ({AliasedExpression.expression=current} "as" name=ID)?;
	public AliasedExpressionElements getAliasedExpressionAccess() {
		return (pAliasedExpression != null) ? pAliasedExpression : (pAliasedExpression = new AliasedExpressionElements());
	}
	
	public ParserRule getAliasedExpressionRule() {
		return getAliasedExpressionAccess().getRule();
	}

	//Expression:
	//	LogicalOrExpression;
	public ExpressionElements getExpressionAccess() {
		return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
	}
	
	public ParserRule getExpressionRule() {
		return getExpressionAccess().getRule();
	}

	//LogicalOrExpression returns Expression:
	//	LogicalAndExpression ({BinaryExpression.left=current} operator="or" right=LogicalAndExpression)*;
	public LogicalOrExpressionElements getLogicalOrExpressionAccess() {
		return (pLogicalOrExpression != null) ? pLogicalOrExpression : (pLogicalOrExpression = new LogicalOrExpressionElements());
	}
	
	public ParserRule getLogicalOrExpressionRule() {
		return getLogicalOrExpressionAccess().getRule();
	}

	//LogicalAndExpression returns Expression:
	//	PrefixExpression ({BinaryExpression.left=current} operator="and" right=PrefixExpression)*;
	public LogicalAndExpressionElements getLogicalAndExpressionAccess() {
		return (pLogicalAndExpression != null) ? pLogicalAndExpression : (pLogicalAndExpression = new LogicalAndExpressionElements());
	}
	
	public ParserRule getLogicalAndExpressionRule() {
		return getLogicalAndExpressionAccess().getRule();
	}

	//PrefixExpression returns Expression:
	//	{NotExpression} "not" expression=PrefixExpression | EqualityExpression;
	public PrefixExpressionElements getPrefixExpressionAccess() {
		return (pPrefixExpression != null) ? pPrefixExpression : (pPrefixExpression = new PrefixExpressionElements());
	}
	
	public ParserRule getPrefixExpressionRule() {
		return getPrefixExpressionAccess().getRule();
	}

	//EqualityExpression returns Expression:
	//	RelationalExpression ({BinaryExpression.left=current} operator=("=" | "is" | IsNot | "!=" | "<>")
	//	right=RelationalExpression)*;
	public EqualityExpressionElements getEqualityExpressionAccess() {
		return (pEqualityExpression != null) ? pEqualityExpression : (pEqualityExpression = new EqualityExpressionElements());
	}
	
	public ParserRule getEqualityExpressionRule() {
		return getEqualityExpressionAccess().getRule();
	}

	//RelationalExpression returns Expression:
	//	ConcatenationExpression (({BinaryExpression.left=current} operator=("<" | ">" | "<=" | ">=")
	//	right=AdditiveExpression)* | {InExpression.expression=current} not?="not"? operator="in" in=(CollectionFunction |
	//	ParenthesizedExpression | SubQuery) | {BetweenExpression.expression=current} not?="not"? operator="between"
	//	left=ConcatenationExpression "and" right=ConcatenationExpression | {LikeExpression.expression=current} not?="not"?
	//	operator="like" like=ConcatenationExpression ("escape" escape=ConcatenationExpression)? |
	//	{MemberOfExpression.expression=current} not?="not"? operator="member" "of"? memberOf=QualifiedName);
	public RelationalExpressionElements getRelationalExpressionAccess() {
		return (pRelationalExpression != null) ? pRelationalExpression : (pRelationalExpression = new RelationalExpressionElements());
	}
	
	public ParserRule getRelationalExpressionRule() {
		return getRelationalExpressionAccess().getRule();
	}

	//ConcatenationExpression returns Expression:
	//	AdditiveExpression ({BinaryExpression.left=current} operator="||" right=AdditiveExpression)*;
	public ConcatenationExpressionElements getConcatenationExpressionAccess() {
		return (pConcatenationExpression != null) ? pConcatenationExpression : (pConcatenationExpression = new ConcatenationExpressionElements());
	}
	
	public ParserRule getConcatenationExpressionRule() {
		return getConcatenationExpressionAccess().getRule();
	}

	//AdditiveExpression returns Expression:
	//	MultiplyExpression ({BinaryExpression.left=current} operator=("+" | "-") right=MultiplyExpression)*;
	public AdditiveExpressionElements getAdditiveExpressionAccess() {
		return (pAdditiveExpression != null) ? pAdditiveExpression : (pAdditiveExpression = new AdditiveExpressionElements());
	}
	
	public ParserRule getAdditiveExpressionRule() {
		return getAdditiveExpressionAccess().getRule();
	}

	//MultiplyExpression returns Expression:
	//	UnaryExpression ({BinaryExpression.left=current} operator=("*" | "/" | "%") right=UnaryExpression)*;
	public MultiplyExpressionElements getMultiplyExpressionAccess() {
		return (pMultiplyExpression != null) ? pMultiplyExpression : (pMultiplyExpression = new MultiplyExpressionElements());
	}
	
	public ParserRule getMultiplyExpressionRule() {
		return getMultiplyExpressionAccess().getRule();
	}

	//UnaryExpression returns Expression:
	//	{UnaryExpression} operator=("-" | "+") expression=UnaryExpression | PrimaryExpression | CaseExpression |
	//	QuantifiedExpression;
	public UnaryExpressionElements getUnaryExpressionAccess() {
		return (pUnaryExpression != null) ? pUnaryExpression : (pUnaryExpression = new UnaryExpressionElements());
	}
	
	public ParserRule getUnaryExpressionRule() {
		return getUnaryExpressionAccess().getRule();
	}

	//PrimaryExpression returns Expression:
	//	PropertyValue | TrimFunction | CastFunction | AggregateFunction | CollectionFunction | FunctionCall |
	//	ParenthesizedExpression | SubQuery | LiteralValue | QueryParameterValue;
	public PrimaryExpressionElements getPrimaryExpressionAccess() {
		return (pPrimaryExpression != null) ? pPrimaryExpression : (pPrimaryExpression = new PrimaryExpressionElements());
	}
	
	public ParserRule getPrimaryExpressionRule() {
		return getPrimaryExpressionAccess().getRule();
	}

	//PropertyValue:
	//	name=ID ("." segments+=ID? ("[" index+=Expression "]")?)* classProperty?="class"?;
	public PropertyValueElements getPropertyValueAccess() {
		return (pPropertyValue != null) ? pPropertyValue : (pPropertyValue = new PropertyValueElements());
	}
	
	public ParserRule getPropertyValueRule() {
		return getPropertyValueAccess().getRule();
	}

	//FunctionCall:
	//	function=ID "(" arguments+=Expression ("," arguments+=Expression)* ")";
	public FunctionCallElements getFunctionCallAccess() {
		return (pFunctionCall != null) ? pFunctionCall : (pFunctionCall = new FunctionCallElements());
	}
	
	public ParserRule getFunctionCallRule() {
		return getFunctionCallAccess().getRule();
	}

	//TrimFunction:
	//	function="trim" "(" mode=("trailing" | "leading" | "both")? (character=StringLiteralValue "from")? from=Expression
	//	")";
	public TrimFunctionElements getTrimFunctionAccess() {
		return (pTrimFunction != null) ? pTrimFunction : (pTrimFunction = new TrimFunctionElements());
	}
	
	public ParserRule getTrimFunctionRule() {
		return getTrimFunctionAccess().getRule();
	}

	//CastFunction:
	//	function="cast" "(" from=Expression "as" name=ID ")" | function="extract" "(" name=ID "from" from=Expression ")";
	public CastFunctionElements getCastFunctionAccess() {
		return (pCastFunction != null) ? pCastFunction : (pCastFunction = new CastFunctionElements());
	}
	
	public ParserRule getCastFunctionRule() {
		return getCastFunctionAccess().getRule();
	}

	//AggregateFunction:
	//	function=("sum" | "avg" | "max" | "min") "(" aggregateExpression=AdditiveExpression ")" | function="count" "("
	//	(all?="*" | (distinct?="distinct" | all?="all")? (from=QualifiedName | collection=CollectionFunction)) ")";
	public AggregateFunctionElements getAggregateFunctionAccess() {
		return (pAggregateFunction != null) ? pAggregateFunction : (pAggregateFunction = new AggregateFunctionElements());
	}
	
	public ParserRule getAggregateFunctionRule() {
		return getAggregateFunctionAccess().getRule();
	}

	//QueryParameterReference:
	//	Parameter | Attribute | IElementWithNoName;
	public QueryParameterReferenceElements getQueryParameterReferenceAccess() {
		return (pQueryParameterReference != null) ? pQueryParameterReference : (pQueryParameterReference = new QueryParameterReferenceElements());
	}
	
	public ParserRule getQueryParameterReferenceRule() {
		return getQueryParameterReferenceAccess().getRule();
	}

	//QueryParameterValue:
	//	":" parameter=[QueryParameterReference] ("." attribute=[Attribute])?;
	public QueryParameterValueElements getQueryParameterValueAccess() {
		return (pQueryParameterValue != null) ? pQueryParameterValue : (pQueryParameterValue = new QueryParameterValueElements());
	}
	
	public ParserRule getQueryParameterValueRule() {
		return getQueryParameterValueAccess().getRule();
	}

	//QuantifiedExpression:
	//	quantifier=("some" | "exists" | "all" | "any") (expression=(CollectionFunction | SubQuery) | name=ID);
	public QuantifiedExpressionElements getQuantifiedExpressionAccess() {
		return (pQuantifiedExpression != null) ? pQuantifiedExpression : (pQuantifiedExpression = new QuantifiedExpressionElements());
	}
	
	public ParserRule getQuantifiedExpressionRule() {
		return getQuantifiedExpressionAccess().getRule();
	}

	//CaseExpression:
	//	"case" whenClause+=WhenClause+ ("else" elseExpression=UnaryExpression)? "end" | "case" expression=UnaryExpression
	//	altWhenClause+=AltWhenClause+ ("else" elseExpression=UnaryExpression)? "end";
	public CaseExpressionElements getCaseExpressionAccess() {
		return (pCaseExpression != null) ? pCaseExpression : (pCaseExpression = new CaseExpressionElements());
	}
	
	public ParserRule getCaseExpressionRule() {
		return getCaseExpressionAccess().getRule();
	}

	//WhenClause:
	//	"when" whenExpression=Expression "then" thenExpression=UnaryExpression;
	public WhenClauseElements getWhenClauseAccess() {
		return (pWhenClause != null) ? pWhenClause : (pWhenClause = new WhenClauseElements());
	}
	
	public ParserRule getWhenClauseRule() {
		return getWhenClauseAccess().getRule();
	}

	//AltWhenClause:
	//	"when" whenExpression=UnaryExpression "then" thenExpression=UnaryExpression;
	public AltWhenClauseElements getAltWhenClauseAccess() {
		return (pAltWhenClause != null) ? pAltWhenClause : (pAltWhenClause = new AltWhenClauseElements());
	}
	
	public ParserRule getAltWhenClauseRule() {
		return getAltWhenClauseAccess().getRule();
	}

	//CollectionFunction:
	//	function=("elements" | "indices") "(" property=PropertyValue ")";
	public CollectionFunctionElements getCollectionFunctionAccess() {
		return (pCollectionFunction != null) ? pCollectionFunction : (pCollectionFunction = new CollectionFunctionElements());
	}
	
	public ParserRule getCollectionFunctionRule() {
		return getCollectionFunctionAccess().getRule();
	}

	//SubQuery:
	//	"(" queries+=SelectStatement ("union" queries+=SelectStatement)* ")";
	public SubQueryElements getSubQueryAccess() {
		return (pSubQuery != null) ? pSubQuery : (pSubQuery = new SubQueryElements());
	}
	
	public ParserRule getSubQueryRule() {
		return getSubQueryAccess().getRule();
	}

	//ParenthesizedExpression:
	//	"(" expressions+=Expression ("," expressions+=Expression)* ")";
	public ParenthesizedExpressionElements getParenthesizedExpressionAccess() {
		return (pParenthesizedExpression != null) ? pParenthesizedExpression : (pParenthesizedExpression = new ParenthesizedExpressionElements());
	}
	
	public ParserRule getParenthesizedExpressionRule() {
		return getParenthesizedExpressionAccess().getRule();
	}

	//LiteralValue:
	//	BooleanLiteralValue | RealLiteralValue | IntegerLiteralValue | NullLiteralValue | EmptyLiteralValue |
	//	StringLiteralValue;
	public LiteralValueElements getLiteralValueAccess() {
		return (pLiteralValue != null) ? pLiteralValue : (pLiteralValue = new LiteralValueElements());
	}
	
	public ParserRule getLiteralValueRule() {
		return getLiteralValueAccess().getRule();
	}

	//StringLiteralValue:
	//	{StringLiteralValue} value=STRING;
	public StringLiteralValueElements getStringLiteralValueAccess() {
		return (pStringLiteralValue != null) ? pStringLiteralValue : (pStringLiteralValue = new StringLiteralValueElements());
	}
	
	public ParserRule getStringLiteralValueRule() {
		return getStringLiteralValueAccess().getRule();
	}

	//IntegerLiteralValue:
	//	{IntegerLiteralValue} value=IntValue;
	public IntegerLiteralValueElements getIntegerLiteralValueAccess() {
		return (pIntegerLiteralValue != null) ? pIntegerLiteralValue : (pIntegerLiteralValue = new IntegerLiteralValueElements());
	}
	
	public ParserRule getIntegerLiteralValueRule() {
		return getIntegerLiteralValueAccess().getRule();
	}

	//RealLiteralValue:
	//	{RealLiteralValue} value=RealValue;
	public RealLiteralValueElements getRealLiteralValueAccess() {
		return (pRealLiteralValue != null) ? pRealLiteralValue : (pRealLiteralValue = new RealLiteralValueElements());
	}
	
	public ParserRule getRealLiteralValueRule() {
		return getRealLiteralValueAccess().getRule();
	}

	//BooleanLiteralValue:
	//	{BooleanLiteralValue} "false" | isTrue?="true";
	public BooleanLiteralValueElements getBooleanLiteralValueAccess() {
		return (pBooleanLiteralValue != null) ? pBooleanLiteralValue : (pBooleanLiteralValue = new BooleanLiteralValueElements());
	}
	
	public ParserRule getBooleanLiteralValueRule() {
		return getBooleanLiteralValueAccess().getRule();
	}

	//NullLiteralValue:
	//	{NullLiteralValue} "null";
	public NullLiteralValueElements getNullLiteralValueAccess() {
		return (pNullLiteralValue != null) ? pNullLiteralValue : (pNullLiteralValue = new NullLiteralValueElements());
	}
	
	public ParserRule getNullLiteralValueRule() {
		return getNullLiteralValueAccess().getRule();
	}

	//EmptyLiteralValue:
	//	{EmptyLiteralValue} "empty";
	public EmptyLiteralValueElements getEmptyLiteralValueAccess() {
		return (pEmptyLiteralValue != null) ? pEmptyLiteralValue : (pEmptyLiteralValue = new EmptyLiteralValueElements());
	}
	
	public ParserRule getEmptyLiteralValueRule() {
		return getEmptyLiteralValueAccess().getRule();
	}

	//RealValue:
	//	REAL;
	public RealValueElements getRealValueAccess() {
		return (pRealValue != null) ? pRealValue : (pRealValue = new RealValueElements());
	}
	
	public ParserRule getRealValueRule() {
		return getRealValueAccess().getRule();
	}

	//IntValue:
	//	INT | HEX;
	public IntValueElements getIntValueAccess() {
		return (pIntValue != null) ? pIntValue : (pIntValue = new IntValueElements());
	}
	
	public ParserRule getIntValueRule() {
		return getIntValueAccess().getRule();
	}

	//IsNot:
	//	"is" "not";
	public IsNotElements getIsNotAccess() {
		return (pIsNot != null) ? pIsNot : (pIsNot = new IsNotElements());
	}
	
	public ParserRule getIsNotRule() {
		return getIsNotAccess().getRule();
	}

	//PropertyFetch:
	//	"fetch" "all" "properties";
	public PropertyFetchElements getPropertyFetchAccess() {
		return (pPropertyFetch != null) ? pPropertyFetch : (pPropertyFetch = new PropertyFetchElements());
	}
	
	public ParserRule getPropertyFetchRule() {
		return getPropertyFetchAccess().getRule();
	}

	//AscendingOrDescending:
	//	"asc" | "desc";
	public AscendingOrDescendingElements getAscendingOrDescendingAccess() {
		return (pAscendingOrDescending != null) ? pAscendingOrDescending : (pAscendingOrDescending = new AscendingOrDescendingElements());
	}
	
	public ParserRule getAscendingOrDescendingRule() {
		return getAscendingOrDescendingAccess().getRule();
	}

	//JoinType:
	//	("left" | "right") "outer"? | "full" | "inner";
	public JoinTypeElements getJoinTypeAccess() {
		return (pJoinType != null) ? pJoinType : (pJoinType = new JoinTypeElements());
	}
	
	public ParserRule getJoinTypeRule() {
		return getJoinTypeAccess().getRule();
	}

	//REAL hidden():
	//	INT? "." (EXP_INT | INT);
	public REALElements getREALAccess() {
		return (pREAL != null) ? pREAL : (pREAL = new REALElements());
	}
	
	public ParserRule getREALRule() {
		return getREALAccess().getRule();
	}

	//// Dummy to avoid name be pulled up
	//IElementWithNoName:
	//	noName=ID;
	public IElementWithNoNameElements getIElementWithNoNameAccess() {
		return (pIElementWithNoName != null) ? pIElementWithNoName : (pIElementWithNoName = new IElementWithNoNameElements());
	}
	
	public ParserRule getIElementWithNoNameRule() {
		return getIElementWithNoNameAccess().getRule();
	}

	//PresentableFeature:
	//	(FeatureReference | Attribute) name=ID?;
	public PresentableFeatureElements getPresentableFeatureAccess() {
		return (pPresentableFeature != null) ? pPresentableFeature : (pPresentableFeature = new PresentableFeatureElements());
	}
	
	public ParserRule getPresentableFeatureRule() {
		return getPresentableFeatureAccess().getRule();
	}

	//terminal EXP_INT:
	//	INT ("e" | "E") ("-" | "+") INT;
	public TerminalRule getEXP_INTRule() {
		return (tEXP_INT != null) ? tEXP_INT : (tEXP_INT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "EXP_INT"));
	} 

	//terminal HEX:
	//	"0" ("x" | "X") ("0".."9" | "a".."f" | "A".."F")+;
	public TerminalRule getHEXRule() {
		return (tHEX != null) ? tHEX : (tHEX = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "HEX"));
	} 

	//terminal REGION_START:
	//	"#region" !("\n" | "\r")* ("\r"? "\n")?;
	public TerminalRule getREGION_STARTRule() {
		return (tREGION_START != null) ? tREGION_START : (tREGION_START = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "REGION_START"));
	} 

	//terminal REGION_END:
	//	"#endregion";
	public TerminalRule getREGION_ENDRule() {
		return (tREGION_END != null) ? tREGION_END : (tREGION_END = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "REGION_END"));
	} 

	//Import:
	//	"import" importURI=STRING | "import" importedNamespace=QualifiedNameWithWildCard;
	public CoreDslGrammarAccess.ImportElements getImportAccess() {
		return gaCoreDsl.getImportAccess();
	}
	
	public ParserRule getImportRule() {
		return getImportAccess().getRule();
	}

	//SimpleType:
	//	custom?="domain"? "type" name=ID ("(" typeParameter+=ParameterDefinition ("," typeParameter+=ParameterDefinition)*
	//	")")? ("validation" validatorReference=ValidatorReference)? ("editor" editor=[Editor|QualifiedName])?
	//	typeDefinition=TypeDefinition | EnumType;
	public CoreDslGrammarAccess.SimpleTypeElements getSimpleTypeAccess() {
		return gaCoreDsl.getSimpleTypeAccess();
	}
	
	public ParserRule getSimpleTypeRule() {
		return getSimpleTypeAccess().getRule();
	}

	//SqlType:
	//	"sqltype" name=ID ("ddl" "=" ddl=STRING)?;
	public CoreDslGrammarAccess.SqlTypeElements getSqlTypeAccess() {
		return gaCoreDsl.getSqlTypeAccess();
	}
	
	public ParserRule getSqlTypeRule() {
		return getSqlTypeAccess().getRule();
	}

	//EnumType:
	//	"enum" name=ID ("validation" validatorReference=ValidatorReference)? ("{" literals+=EnumLiteral* "}" |
	//	typeDefinition=TypeDefinition);
	public CoreDslGrammarAccess.EnumTypeElements getEnumTypeAccess() {
		return gaCoreDsl.getEnumTypeAccess();
	}
	
	public ParserRule getEnumTypeRule() {
		return getEnumTypeAccess().getRule();
	}

	//EnumLiteral:
	//	name=ID ("(" key=STRING ("," shortValue=STRING ("," longValue=STRING)?)? ")")?;
	public CoreDslGrammarAccess.EnumLiteralElements getEnumLiteralAccess() {
		return gaCoreDsl.getEnumLiteralAccess();
	}
	
	public ParserRule getEnumLiteralRule() {
		return getEnumLiteralAccess().getRule();
	}

	//ParameterDefinition:
	//	type=ParameterDefinitionType name=ID ("=" (defaultInteger=INT | defaultString=STRING | defaultBoolean=BooleanValue))?;
	public CoreDslGrammarAccess.ParameterDefinitionElements getParameterDefinitionAccess() {
		return gaCoreDsl.getParameterDefinitionAccess();
	}
	
	public ParserRule getParameterDefinitionRule() {
		return getParameterDefinitionAccess().getRule();
	}

	//enum ParameterDefinitionType:
	//	integer | string | boolean;
	public CoreDslGrammarAccess.ParameterDefinitionTypeElements getParameterDefinitionTypeAccess() {
		return gaCoreDsl.getParameterDefinitionTypeAccess();
	}
	
	public EnumRule getParameterDefinitionTypeRule() {
		return getParameterDefinitionTypeAccess().getRule();
	}

	//ReferenceWithParameter:
	//	parameterValues+=ParameterValue* | DataTypeAndTypeParameter | ValidatorReference;
	public CoreDslGrammarAccess.ReferenceWithParameterElements getReferenceWithParameterAccess() {
		return gaCoreDsl.getReferenceWithParameterAccess();
	}
	
	public ParserRule getReferenceWithParameterRule() {
		return getReferenceWithParameterAccess().getRule();
	}

	//ValidatorReference:
	//	validator=[Validator|QualifiedName] ("(" (parameterValues+=ParameterValue ("," parameterValues+=ParameterValue)*)?
	//	")")?;
	public CoreDslGrammarAccess.ValidatorReferenceElements getValidatorReferenceAccess() {
		return gaCoreDsl.getValidatorReferenceAccess();
	}
	
	public ParserRule getValidatorReferenceRule() {
		return getValidatorReferenceAccess().getRule();
	}

	//Validator:
	//	"validator" ("<" valueModelType=ValueModelType ">")? name=ID ("(" validatorParameter+=ParameterDefinition (","
	//	validatorParameter+=ParameterDefinition)* ")")? ("redefines" superValidator=ValidatorReference)? ("instanceclass"
	//	instanceClass=QualifiedName)?;
	public CoreDslGrammarAccess.ValidatorElements getValidatorAccess() {
		return gaCoreDsl.getValidatorAccess();
	}
	
	public ParserRule getValidatorRule() {
		return getValidatorAccess().getRule();
	}

	//Incrementer:
	//	"incrementer" name=ID ("(" incrementerParameter+=ParameterDefinition ("," incrementerParameter+=ParameterDefinition)*
	//	")")? ("instanceclass" instanceClass=QualifiedName)?;
	public CoreDslGrammarAccess.IncrementerElements getIncrementerAccess() {
		return gaCoreDsl.getIncrementerAccess();
	}
	
	public ParserRule getIncrementerRule() {
		return getIncrementerAccess().getRule();
	}

	//IncrementerReference:
	//	incrementer=[Incrementer|QualifiedName] ("(" incrementerParameter+=ParameterValue? (","
	//	incrementerParameter+=ParameterValue)* ")")?;
	public CoreDslGrammarAccess.IncrementerReferenceElements getIncrementerReferenceAccess() {
		return gaCoreDsl.getIncrementerReferenceAccess();
	}
	
	public ParserRule getIncrementerReferenceRule() {
		return getIncrementerReferenceAccess().getRule();
	}

	//Editor:
	//	"editor" name=ID label=STRING;
	public CoreDslGrammarAccess.EditorElements getEditorAccess() {
		return gaCoreDsl.getEditorAccess();
	}
	
	public ParserRule getEditorRule() {
		return getEditorAccess().getRule();
	}

	//Style:
	//	"style" name=ID;
	public CoreDslGrammarAccess.StyleElements getStyleAccess() {
		return gaCoreDsl.getStyleAccess();
	}
	
	public ParserRule getStyleRule() {
		return getStyleAccess().getRule();
	}

	//TypeDefinition:
	//	"instancetype" instanceType=QualifiedName | "redefines" definition=DataTypeAndTypeParameter;
	public CoreDslGrammarAccess.TypeDefinitionElements getTypeDefinitionAccess() {
		return gaCoreDsl.getTypeDefinitionAccess();
	}
	
	public ParserRule getTypeDefinitionRule() {
		return getTypeDefinitionAccess().getRule();
	}

	//DataTypeAndTypeParameter:
	//	dataType=[Type|QualifiedName] ("(" (parameterValues+=ParameterValue ("," parameterValues+=ParameterValue)*)? ")")?;
	public CoreDslGrammarAccess.DataTypeAndTypeParameterElements getDataTypeAndTypeParameterAccess() {
		return gaCoreDsl.getDataTypeAndTypeParameterAccess();
	}
	
	public ParserRule getDataTypeAndTypeParameterRule() {
		return getDataTypeAndTypeParameterAccess().getRule();
	}

	//ParameterValue:
	//	isNull?="null" | keepParentValue?="..." | IntegerParameterValue | StringParameterValue | BooleanParameterValue |
	//	referencedParameter=[ParameterDefinition];
	public CoreDslGrammarAccess.ParameterValueElements getParameterValueAccess() {
		return gaCoreDsl.getParameterValueAccess();
	}
	
	public ParserRule getParameterValueRule() {
		return getParameterValueAccess().getRule();
	}

	//IntegerParameterValue:
	//	intValue=SINT;
	public CoreDslGrammarAccess.IntegerParameterValueElements getIntegerParameterValueAccess() {
		return gaCoreDsl.getIntegerParameterValueAccess();
	}
	
	public ParserRule getIntegerParameterValueRule() {
		return getIntegerParameterValueAccess().getRule();
	}

	//StringParameterValue:
	//	stringValue=STRING;
	public CoreDslGrammarAccess.StringParameterValueElements getStringParameterValueAccess() {
		return gaCoreDsl.getStringParameterValueAccess();
	}
	
	public ParserRule getStringParameterValueRule() {
		return getStringParameterValueAccess().getRule();
	}

	//BooleanParameterValue:
	//	booleanValue=BooleanValue;
	public CoreDslGrammarAccess.BooleanParameterValueElements getBooleanParameterValueAccess() {
		return gaCoreDsl.getBooleanParameterValueAccess();
	}
	
	public ParserRule getBooleanParameterValueRule() {
		return getBooleanParameterValueAccess().getRule();
	}

	//ConditionsBlock:
	//	{ConditionsBlock} "conditions" "{" statusFlags+=StatusFlag* "}";
	public CoreDslGrammarAccess.ConditionsBlockElements getConditionsBlockAccess() {
		return gaCoreDsl.getConditionsBlockAccess();
	}
	
	public ParserRule getConditionsBlockRule() {
		return getConditionsBlockAccess().getRule();
	}

	//Constraint:
	//	validatorReference=ValidatorReference ("[" condition=EqualityExpr "]")?;
	public CoreDslGrammarAccess.ConstraintElements getConstraintAccess() {
		return gaCoreDsl.getConstraintAccess();
	}
	
	public ParserRule getConstraintRule() {
		return getConstraintAccess().getRule();
	}

	//EqualityExpr:
	//	left=CondORExpr (op=EqualityOp right=CondORExpr)?;
	public CoreDslGrammarAccess.EqualityExprElements getEqualityExprAccess() {
		return gaCoreDsl.getEqualityExprAccess();
	}
	
	public ParserRule getEqualityExprRule() {
		return getEqualityExprAccess().getRule();
	}

	//CondORExpr:
	//	left=CondANDExpr rights+=CondORRights*;
	public CoreDslGrammarAccess.CondORExprElements getCondORExprAccess() {
		return gaCoreDsl.getCondORExprAccess();
	}
	
	public ParserRule getCondORExprRule() {
		return getCondORExprAccess().getRule();
	}

	//CondORRights:
	//	op=OrOp right=CondANDExpr;
	public CoreDslGrammarAccess.CondORRightsElements getCondORRightsAccess() {
		return gaCoreDsl.getCondORRightsAccess();
	}
	
	public ParserRule getCondORRightsRule() {
		return getCondORRightsAccess().getRule();
	}

	//CondANDExpr:
	//	left=AtomicBoolExpr rights+=CondANDRights*;
	public CoreDslGrammarAccess.CondANDExprElements getCondANDExprAccess() {
		return gaCoreDsl.getCondANDExprAccess();
	}
	
	public ParserRule getCondANDExprRule() {
		return getCondANDExprAccess().getRule();
	}

	//CondANDRights:
	//	op=AndOp right=AtomicBoolExpr;
	public CoreDslGrammarAccess.CondANDRightsElements getCondANDRightsAccess() {
		return gaCoreDsl.getCondANDRightsAccess();
	}
	
	public ParserRule getCondANDRightsRule() {
		return getCondANDRightsAccess().getRule();
	}

	//AtomicBoolExpr:
	//	RelationalExpr;
	public CoreDslGrammarAccess.AtomicBoolExprElements getAtomicBoolExprAccess() {
		return gaCoreDsl.getAtomicBoolExprAccess();
	}
	
	public ParserRule getAtomicBoolExprRule() {
		return getAtomicBoolExprAccess().getRule();
	}

	//RelationalExpr:
	//	left=AdditiveExpr (op=RelationalOp right=AdditiveExpr)?;
	public CoreDslGrammarAccess.RelationalExprElements getRelationalExprAccess() {
		return gaCoreDsl.getRelationalExprAccess();
	}
	
	public ParserRule getRelationalExprRule() {
		return getRelationalExprAccess().getRule();
	}

	//AdditiveExpr:
	//	left=MultiplicativeExpr rights+=AdditiveRights*;
	public CoreDslGrammarAccess.AdditiveExprElements getAdditiveExprAccess() {
		return gaCoreDsl.getAdditiveExprAccess();
	}
	
	public ParserRule getAdditiveExprRule() {
		return getAdditiveExprAccess().getRule();
	}

	//AdditiveRights:
	//	op=AdditiveOp right=MultiplicativeExpr;
	public CoreDslGrammarAccess.AdditiveRightsElements getAdditiveRightsAccess() {
		return gaCoreDsl.getAdditiveRightsAccess();
	}
	
	public ParserRule getAdditiveRightsRule() {
		return getAdditiveRightsAccess().getRule();
	}

	//MultiplicativeExpr:
	//	left=AtomicExpr rights+=MultiplicativeRights*;
	public CoreDslGrammarAccess.MultiplicativeExprElements getMultiplicativeExprAccess() {
		return gaCoreDsl.getMultiplicativeExprAccess();
	}
	
	public ParserRule getMultiplicativeExprRule() {
		return getMultiplicativeExprAccess().getRule();
	}

	//MultiplicativeRights:
	//	op=MultiplicativeOp right=AtomicExpr;
	public CoreDslGrammarAccess.MultiplicativeRightsElements getMultiplicativeRightsAccess() {
		return gaCoreDsl.getMultiplicativeRightsAccess();
	}
	
	public ParserRule getMultiplicativeRightsRule() {
		return getMultiplicativeRightsAccess().getRule();
	}

	//AtomicExpr:
	//	Variable | Literal | ParenExpr | Call;
	public CoreDslGrammarAccess.AtomicExprElements getAtomicExprAccess() {
		return gaCoreDsl.getAtomicExprAccess();
	}
	
	public ParserRule getAtomicExprRule() {
		return getAtomicExprAccess().getRule();
	}

	//Variable:
	//	XmadslVariable;
	public CoreDslGrammarAccess.VariableElements getVariableAccess() {
		return gaCoreDsl.getVariableAccess();
	}
	
	public ParserRule getVariableRule() {
		return getVariableAccess().getRule();
	}

	//XmadslVariable:
	//	reference=[ReferenceableByXmadslVariable|QualifiedName] ("." access=VariableAccess)?;
	public CoreDslGrammarAccess.XmadslVariableElements getXmadslVariableAccess() {
		return gaCoreDsl.getXmadslVariableAccess();
	}
	
	public ParserRule getXmadslVariableRule() {
		return getXmadslVariableAccess().getRule();
	}

	//StatusFlag:
	//	name=ID "=" expression=EqualityExpr? ("," "doc:" doc=STRING?)?;
	public CoreDslGrammarAccess.StatusFlagElements getStatusFlagAccess() {
		return gaCoreDsl.getStatusFlagAccess();
	}
	
	public ParserRule getStatusFlagRule() {
		return getStatusFlagAccess().getRule();
	}

	//Call:
	//	function=[Function|QualifiedName] "(" expr=Literal ")";
	public CoreDslGrammarAccess.CallElements getCallAccess() {
		return gaCoreDsl.getCallAccess();
	}
	
	public ParserRule getCallRule() {
		return getCallAccess().getRule();
	}

	//Function:
	//	resultType=[SimpleType|QualifiedName] name=ID "(" parameterType=[SimpleType|QualifiedName] parameterName=ID ")";
	public CoreDslGrammarAccess.FunctionElements getFunctionAccess() {
		return gaCoreDsl.getFunctionAccess();
	}
	
	public ParserRule getFunctionRule() {
		return getFunctionAccess().getRule();
	}

	//ParenExpr:
	//	"(" expr=EqualityExpr ")";
	public CoreDslGrammarAccess.ParenExprElements getParenExprAccess() {
		return gaCoreDsl.getParenExprAccess();
	}
	
	public ParserRule getParenExprRule() {
		return getParenExprAccess().getRule();
	}

	//Literal:
	//	IntLiteral | BoolLiteral | StringLiteral;
	public CoreDslGrammarAccess.LiteralElements getLiteralAccess() {
		return gaCoreDsl.getLiteralAccess();
	}
	
	public ParserRule getLiteralRule() {
		return getLiteralAccess().getRule();
	}

	//IntLiteral:
	//	number=INT;
	public CoreDslGrammarAccess.IntLiteralElements getIntLiteralAccess() {
		return gaCoreDsl.getIntLiteralAccess();
	}
	
	public ParserRule getIntLiteralRule() {
		return getIntLiteralAccess().getRule();
	}

	//StringLiteral:
	//	string=STRING;
	public CoreDslGrammarAccess.StringLiteralElements getStringLiteralAccess() {
		return gaCoreDsl.getStringLiteralAccess();
	}
	
	public ParserRule getStringLiteralRule() {
		return getStringLiteralAccess().getRule();
	}

	//BoolLiteral:
	//	TrueLiteral | FalseLiteral;
	public CoreDslGrammarAccess.BoolLiteralElements getBoolLiteralAccess() {
		return gaCoreDsl.getBoolLiteralAccess();
	}
	
	public ParserRule getBoolLiteralRule() {
		return getBoolLiteralAccess().getRule();
	}

	//TrueLiteral:
	//	"true" {TrueLiteral};
	public CoreDslGrammarAccess.TrueLiteralElements getTrueLiteralAccess() {
		return gaCoreDsl.getTrueLiteralAccess();
	}
	
	public ParserRule getTrueLiteralRule() {
		return getTrueLiteralAccess().getRule();
	}

	//FalseLiteral:
	//	"false" {FalseLiteral};
	public CoreDslGrammarAccess.FalseLiteralElements getFalseLiteralAccess() {
		return gaCoreDsl.getFalseLiteralAccess();
	}
	
	public ParserRule getFalseLiteralRule() {
		return getFalseLiteralAccess().getRule();
	}

	//enum MultiplicativeOp: //Lvl3
	//	TIMES="*" | DIVIDE="/";
	public CoreDslGrammarAccess.MultiplicativeOpElements getMultiplicativeOpAccess() {
		return gaCoreDsl.getMultiplicativeOpAccess();
	}
	
	public EnumRule getMultiplicativeOpRule() {
		return getMultiplicativeOpAccess().getRule();
	}

	//enum AdditiveOp: //Lvl2
	//	PLUS="+" | MINUS="-";
	public CoreDslGrammarAccess.AdditiveOpElements getAdditiveOpAccess() {
		return gaCoreDsl.getAdditiveOpAccess();
	}
	
	public EnumRule getAdditiveOpRule() {
		return getAdditiveOpAccess().getRule();
	}

	//enum RelationalOp:
	//	LT="<" | LE="<=" | GT=">" | GE=">=";
	public CoreDslGrammarAccess.RelationalOpElements getRelationalOpAccess() {
		return gaCoreDsl.getRelationalOpAccess();
	}
	
	public EnumRule getRelationalOpRule() {
		return getRelationalOpAccess().getRule();
	}

	//enum EqualityOp:
	//	EQ="==" | NE="!=";
	public CoreDslGrammarAccess.EqualityOpElements getEqualityOpAccess() {
		return gaCoreDsl.getEqualityOpAccess();
	}
	
	public EnumRule getEqualityOpRule() {
		return getEqualityOpAccess().getRule();
	}

	//enum OrOp:
	//	OR="or";
	public CoreDslGrammarAccess.OrOpElements getOrOpAccess() {
		return gaCoreDsl.getOrOpAccess();
	}
	
	public EnumRule getOrOpRule() {
		return getOrOpAccess().getRule();
	}

	//enum AndOp:
	//	AND="and";
	public CoreDslGrammarAccess.AndOpElements getAndOpAccess() {
		return gaCoreDsl.getAndOpAccess();
	}
	
	public EnumRule getAndOpRule() {
		return getAndOpAccess().getRule();
	}

	//enum VariableAccess:
	//	VALUE="getValue()" | HAS_VALUE="hasValue()" | GET_SELECTED="getSelectedValue()" | IS_SELECTED="isSelected()" |
	//	GET_SELECTION_COUNT="getSelectionCount()" | SIZE="size()" | IS_VALID="isValid()";
	public CoreDslGrammarAccess.VariableAccessElements getVariableAccessAccess() {
		return gaCoreDsl.getVariableAccessAccess();
	}
	
	public EnumRule getVariableAccessRule() {
		return getVariableAccessAccess().getRule();
	}

	//enum BooleanValue:
	//	true | false;
	public CoreDslGrammarAccess.BooleanValueElements getBooleanValueAccess() {
		return gaCoreDsl.getBooleanValueAccess();
	}
	
	public EnumRule getBooleanValueRule() {
		return getBooleanValueAccess().getRule();
	}

	//enum ValueModelType:
	//	string | number | boolean | date | timestamp | enumeration;
	public CoreDslGrammarAccess.ValueModelTypeElements getValueModelTypeAccess() {
		return gaCoreDsl.getValueModelTypeAccess();
	}
	
	public EnumRule getValueModelTypeRule() {
		return getValueModelTypeAccess().getRule();
	}

	//QualifiedNameWithWildCard hidden():
	//	QualifiedName ".*"?;
	public CoreDslGrammarAccess.QualifiedNameWithWildCardElements getQualifiedNameWithWildCardAccess() {
		return gaCoreDsl.getQualifiedNameWithWildCardAccess();
	}
	
	public ParserRule getQualifiedNameWithWildCardRule() {
		return getQualifiedNameWithWildCardAccess().getRule();
	}

	//QualifiedName hidden():
	//	ID ("." ID)*;
	public CoreDslGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
		return gaCoreDsl.getQualifiedNameAccess();
	}
	
	public ParserRule getQualifiedNameRule() {
		return getQualifiedNameAccess().getRule();
	}

	//SINT returns ecore::EInt:
	//	"-"? INT;
	public CoreDslGrammarAccess.SINTElements getSINTAccess() {
		return gaCoreDsl.getSINTAccess();
	}
	
	public ParserRule getSINTRule() {
		return getSINTAccess().getRule();
	}

	//terminal ID:
	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
	public TerminalRule getIDRule() {
		return gaCoreDsl.getIDRule();
	} 

	//terminal INT returns ecore::EInt:
	//	"0".."9"+;
	public TerminalRule getINTRule() {
		return gaCoreDsl.getINTRule();
	} 

	//terminal STRING:
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	public TerminalRule getSTRINGRule() {
		return gaCoreDsl.getSTRINGRule();
	} 

	//terminal ML_COMMENT:
	//	"/ *"->"* /";
	public TerminalRule getML_COMMENTRule() {
		return gaCoreDsl.getML_COMMENTRule();
	} 

	//terminal SL_COMMENT:
	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
	public TerminalRule getSL_COMMENTRule() {
		return gaCoreDsl.getSL_COMMENTRule();
	} 

	//terminal WS:
	//	(" " | "\t" | "\r" | "\n")+;
	public TerminalRule getWSRule() {
		return gaCoreDsl.getWSRule();
	} 

	//terminal ANY_OTHER:
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaCoreDsl.getANY_OTHERRule();
	} 
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy