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

org.contextmapper.tactic.dsl.services.TacticDDDLanguageGrammarAccess Maven / Gradle / Ivy

There is a newer version: 6.12.0
Show newest version
/*
 * generated by Xtext 2.20.0
 */
package org.contextmapper.tactic.dsl.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Alternatives;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.EnumLiteralDeclaration;
import org.eclipse.xtext.EnumRule;
import org.eclipse.xtext.Grammar;
import org.eclipse.xtext.GrammarUtil;
import org.eclipse.xtext.Group;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.TerminalRule;
import org.eclipse.xtext.UnorderedGroup;
import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
import org.eclipse.xtext.service.AbstractElementFinder.AbstractEnumRuleElementFinder;
import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
import org.eclipse.xtext.service.GrammarProvider;

@Singleton
public class TacticDDDLanguageGrammarAccess extends AbstractGrammarElementFinder {
	
	public class TacticDDDModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.TacticDDDModel");
		private final Assignment cAppAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cAppApplicationParserRuleCall_0 = (RuleCall)cAppAssignment.eContents().get(0);
		
		//TacticDDDModel:
		//	app=Application;
		@Override public ParserRule getRule() { return rule; }
		
		//app=Application
		public Assignment getAppAssignment() { return cAppAssignment; }
		
		//Application
		public RuleCall getAppApplicationParserRuleCall_0() { return cAppApplicationParserRuleCall_0; }
	}
	public class ApplicationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Application");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.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 Keyword cApplicationKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
		private final Assignment cNameAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0_1_0 = (RuleCall)cNameAssignment_1_0_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1_0_2 = (Keyword)cGroup_1_0.eContents().get(2);
		private final Keyword cBasePackageKeyword_1_0_3 = (Keyword)cGroup_1_0.eContents().get(3);
		private final Keyword cEqualsSignKeyword_1_0_4 = (Keyword)cGroup_1_0.eContents().get(4);
		private final Assignment cBasePackageAssignment_1_0_5 = (Assignment)cGroup_1_0.eContents().get(5);
		private final RuleCall cBasePackageJavaIdentifierParserRuleCall_1_0_5_0 = (RuleCall)cBasePackageAssignment_1_0_5.eContents().get(0);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Keyword cApplicationPartKeyword_1_1_0 = (Keyword)cGroup_1_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_1_1_0 = (RuleCall)cNameAssignment_1_1_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1_1_2 = (Keyword)cGroup_1_1.eContents().get(2);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cServicesAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final RuleCall cServicesServiceParserRuleCall_2_0_0 = (RuleCall)cServicesAssignment_2_0.eContents().get(0);
		private final Assignment cResourcesAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final RuleCall cResourcesResourceParserRuleCall_2_1_0 = (RuleCall)cResourcesAssignment_2_1.eContents().get(0);
		private final Assignment cConsumersAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
		private final RuleCall cConsumersConsumerParserRuleCall_2_2_0 = (RuleCall)cConsumersAssignment_2_2.eContents().get(0);
		private final Assignment cDomainObjectsAssignment_2_3 = (Assignment)cAlternatives_2.eContents().get(3);
		private final RuleCall cDomainObjectsSimpleDomainObjectParserRuleCall_2_3_0 = (RuleCall)cDomainObjectsAssignment_2_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//Application:
		//	doc=STRING? ("Application" name=ID "{"
		//	"basePackage" "=" basePackage=JavaIdentifier | "ApplicationPart" name=ID "{") (services+=Service | resources+=Resource
		//	| consumers+=Consumer | domainObjects+=SimpleDomainObject)*
		//	"}";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? ("Application" name=ID "{" "basePackage" "=" basePackage=JavaIdentifier | "ApplicationPart" name=ID "{")
		//(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)* "}"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//("Application" name=ID "{" "basePackage" "=" basePackage=JavaIdentifier | "ApplicationPart" name=ID "{")
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//"Application" name=ID "{" "basePackage" "=" basePackage=JavaIdentifier
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//"Application"
		public Keyword getApplicationKeyword_1_0_0() { return cApplicationKeyword_1_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_0_1() { return cNameAssignment_1_0_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_1_0() { return cNameIDTerminalRuleCall_1_0_1_0; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_0_2() { return cLeftCurlyBracketKeyword_1_0_2; }
		
		//"basePackage"
		public Keyword getBasePackageKeyword_1_0_3() { return cBasePackageKeyword_1_0_3; }
		
		//"="
		public Keyword getEqualsSignKeyword_1_0_4() { return cEqualsSignKeyword_1_0_4; }
		
		//basePackage=JavaIdentifier
		public Assignment getBasePackageAssignment_1_0_5() { return cBasePackageAssignment_1_0_5; }
		
		//JavaIdentifier
		public RuleCall getBasePackageJavaIdentifierParserRuleCall_1_0_5_0() { return cBasePackageJavaIdentifierParserRuleCall_1_0_5_0; }
		
		//"ApplicationPart" name=ID "{"
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//"ApplicationPart"
		public Keyword getApplicationPartKeyword_1_1_0() { return cApplicationPartKeyword_1_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_1_1() { return cNameAssignment_1_1_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_1_1_0() { return cNameIDTerminalRuleCall_1_1_1_0; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1_2() { return cLeftCurlyBracketKeyword_1_1_2; }
		
		//(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)*
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//services+=Service
		public Assignment getServicesAssignment_2_0() { return cServicesAssignment_2_0; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_2_0_0() { return cServicesServiceParserRuleCall_2_0_0; }
		
		//resources+=Resource
		public Assignment getResourcesAssignment_2_1() { return cResourcesAssignment_2_1; }
		
		//Resource
		public RuleCall getResourcesResourceParserRuleCall_2_1_0() { return cResourcesResourceParserRuleCall_2_1_0; }
		
		//consumers+=Consumer
		public Assignment getConsumersAssignment_2_2() { return cConsumersAssignment_2_2; }
		
		//Consumer
		public RuleCall getConsumersConsumerParserRuleCall_2_2_0() { return cConsumersConsumerParserRuleCall_2_2_0; }
		
		//domainObjects+=SimpleDomainObject
		public Assignment getDomainObjectsAssignment_2_3() { return cDomainObjectsAssignment_2_3; }
		
		//SimpleDomainObject
		public RuleCall getDomainObjectsSimpleDomainObjectParserRuleCall_2_3_0() { return cDomainObjectsSimpleDomainObjectParserRuleCall_2_3_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
	}
	public class ServiceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Service");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Keyword cServiceKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4_1 = (UnorderedGroup)cGroup_4.eContents().get(1);
		private final Alternatives cAlternatives_4_1_0 = (Alternatives)cUnorderedGroup_4_1.eContents().get(0);
		private final Assignment cGapClassAssignment_4_1_0_0 = (Assignment)cAlternatives_4_1_0.eContents().get(0);
		private final Keyword cGapClassGapKeyword_4_1_0_0_0 = (Keyword)cGapClassAssignment_4_1_0_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_4_1_0_1 = (Assignment)cAlternatives_4_1_0.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_4_1_0_1_0 = (Keyword)cNoGapClassAssignment_4_1_0_1.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cUnorderedGroup_4_1.eContents().get(1);
		private final Keyword cHintKeyword_4_1_1_0 = (Keyword)cGroup_4_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_1_1 = (Keyword)cGroup_4_1_1.eContents().get(1);
		private final Assignment cHintAssignment_4_1_1_2 = (Assignment)cGroup_4_1_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_4_1_1_2_0 = (RuleCall)cHintAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cWebServiceAssignment_4_1_2 = (Assignment)cUnorderedGroup_4_1.eContents().get(2);
		private final Keyword cWebServiceWebserviceKeyword_4_1_2_0 = (Keyword)cWebServiceAssignment_4_1_2.eContents().get(0);
		private final Assignment cSubscribeAssignment_4_1_3 = (Assignment)cUnorderedGroup_4_1.eContents().get(3);
		private final RuleCall cSubscribeSubscribeParserRuleCall_4_1_3_0 = (RuleCall)cSubscribeAssignment_4_1_3.eContents().get(0);
		private final Assignment cDependenciesAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cDependenciesDependencyParserRuleCall_4_2_0 = (RuleCall)cDependenciesAssignment_4_2.eContents().get(0);
		private final Assignment cOperationsAssignment_4_3 = (Assignment)cGroup_4.eContents().get(3);
		private final RuleCall cOperationsServiceOperationParserRuleCall_4_3_0 = (RuleCall)cOperationsAssignment_4_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
		
		//Service:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	"Service" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
		//	webService?="webservice"? & subscribe=Subscribe?) dependencies+=Dependency*
		//	operations+=ServiceOperation*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? "Service" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "="
		//hint=STRING)? & webService?="webservice"? & subscribe=Subscribe?) dependencies+=Dependency*
		//operations+=ServiceOperation* "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//"Service"
		public Keyword getServiceKeyword_2() { return cServiceKeyword_2; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & webService?="webservice"? &
		//subscribe=Subscribe?) dependencies+=Dependency* operations+=ServiceOperation* "}")?
		public Group getGroup_4() { return cGroup_4; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & webService?="webservice"? &
		//subscribe=Subscribe?)
		public UnorderedGroup getUnorderedGroup_4_1() { return cUnorderedGroup_4_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_4_1_0() { return cAlternatives_4_1_0; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_4_1_0_0() { return cGapClassAssignment_4_1_0_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_4_1_0_0_0() { return cGapClassGapKeyword_4_1_0_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_4_1_0_1() { return cNoGapClassAssignment_4_1_0_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_4_1_0_1_0() { return cNoGapClassNogapKeyword_4_1_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }
		
		//"hint"
		public Keyword getHintKeyword_4_1_1_0() { return cHintKeyword_4_1_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_1_1_1() { return cEqualsSignKeyword_4_1_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_4_1_1_2() { return cHintAssignment_4_1_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_4_1_1_2_0() { return cHintSTRINGTerminalRuleCall_4_1_1_2_0; }
		
		//webService?="webservice"?
		public Assignment getWebServiceAssignment_4_1_2() { return cWebServiceAssignment_4_1_2; }
		
		//"webservice"
		public Keyword getWebServiceWebserviceKeyword_4_1_2_0() { return cWebServiceWebserviceKeyword_4_1_2_0; }
		
		//subscribe=Subscribe?
		public Assignment getSubscribeAssignment_4_1_3() { return cSubscribeAssignment_4_1_3; }
		
		//Subscribe
		public RuleCall getSubscribeSubscribeParserRuleCall_4_1_3_0() { return cSubscribeSubscribeParserRuleCall_4_1_3_0; }
		
		//dependencies+=Dependency*
		public Assignment getDependenciesAssignment_4_2() { return cDependenciesAssignment_4_2; }
		
		//Dependency
		public RuleCall getDependenciesDependencyParserRuleCall_4_2_0() { return cDependenciesDependencyParserRuleCall_4_2_0; }
		
		//operations+=ServiceOperation*
		public Assignment getOperationsAssignment_4_3() { return cOperationsAssignment_4_3; }
		
		//ServiceOperation
		public RuleCall getOperationsServiceOperationParserRuleCall_4_3_0() { return cOperationsServiceOperationParserRuleCall_4_3_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_4_4() { return cRightCurlyBracketKeyword_4_4; }
	}
	public class ResourceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Resource");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cResourceKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_3_1 = (UnorderedGroup)cGroup_3.eContents().get(1);
		private final Alternatives cAlternatives_3_1_0 = (Alternatives)cUnorderedGroup_3_1.eContents().get(0);
		private final Assignment cGapClassAssignment_3_1_0_0 = (Assignment)cAlternatives_3_1_0.eContents().get(0);
		private final Keyword cGapClassGapKeyword_3_1_0_0_0 = (Keyword)cGapClassAssignment_3_1_0_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_3_1_0_1 = (Assignment)cAlternatives_3_1_0.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_3_1_0_1_0 = (Keyword)cNoGapClassAssignment_3_1_0_1.eContents().get(0);
		private final Group cGroup_3_1_1 = (Group)cUnorderedGroup_3_1.eContents().get(1);
		private final Keyword cHintKeyword_3_1_1_0 = (Keyword)cGroup_3_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1_1_1 = (Keyword)cGroup_3_1_1.eContents().get(1);
		private final Assignment cHintAssignment_3_1_1_2 = (Assignment)cGroup_3_1_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_3_1_1_2_0 = (RuleCall)cHintAssignment_3_1_1_2.eContents().get(0);
		private final Assignment cScaffoldAssignment_3_1_2 = (Assignment)cUnorderedGroup_3_1.eContents().get(2);
		private final Keyword cScaffoldScaffoldKeyword_3_1_2_0 = (Keyword)cScaffoldAssignment_3_1_2.eContents().get(0);
		private final Group cGroup_3_1_3 = (Group)cUnorderedGroup_3_1.eContents().get(3);
		private final Keyword cPathKeyword_3_1_3_0 = (Keyword)cGroup_3_1_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1_3_1 = (Keyword)cGroup_3_1_3.eContents().get(1);
		private final Assignment cPathAssignment_3_1_3_2 = (Assignment)cGroup_3_1_3.eContents().get(2);
		private final RuleCall cPathSTRINGTerminalRuleCall_3_1_3_2_0 = (RuleCall)cPathAssignment_3_1_3_2.eContents().get(0);
		private final Assignment cDependenciesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDependenciesServiceDependencyParserRuleCall_3_2_0 = (RuleCall)cDependenciesAssignment_3_2.eContents().get(0);
		private final Assignment cOperationsAssignment_3_3 = (Assignment)cGroup_3.eContents().get(3);
		private final RuleCall cOperationsResourceOperationParserRuleCall_3_3_0 = (RuleCall)cOperationsAssignment_3_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		
		//Resource:
		//	doc=STRING?
		//	"Resource" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & scaffold?="scaffold"?
		//	& ("path" "=" path=STRING)?) dependencies+=ServiceDependency*
		//	operations+=ResourceOperation*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "Resource" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
		//scaffold?="scaffold"? & ("path" "=" path=STRING)?) dependencies+=ServiceDependency* operations+=ResourceOperation*
		//"}")?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"Resource"
		public Keyword getResourceKeyword_1() { return cResourceKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & scaffold?="scaffold"? & ("path" "="
		//path=STRING)?) dependencies+=ServiceDependency* operations+=ResourceOperation* "}")?
		public Group getGroup_3() { return cGroup_3; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
		
		//((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & scaffold?="scaffold"? & ("path" "="
		//path=STRING)?)
		public UnorderedGroup getUnorderedGroup_3_1() { return cUnorderedGroup_3_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_3_1_0_0() { return cGapClassAssignment_3_1_0_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_3_1_0_0_0() { return cGapClassGapKeyword_3_1_0_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_3_1_0_1() { return cNoGapClassAssignment_3_1_0_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_3_1_0_1_0() { return cNoGapClassNogapKeyword_3_1_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_3_1_1() { return cGroup_3_1_1; }
		
		//"hint"
		public Keyword getHintKeyword_3_1_1_0() { return cHintKeyword_3_1_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_1_1_1() { return cEqualsSignKeyword_3_1_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_3_1_1_2() { return cHintAssignment_3_1_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_3_1_1_2_0() { return cHintSTRINGTerminalRuleCall_3_1_1_2_0; }
		
		//scaffold?="scaffold"?
		public Assignment getScaffoldAssignment_3_1_2() { return cScaffoldAssignment_3_1_2; }
		
		//"scaffold"
		public Keyword getScaffoldScaffoldKeyword_3_1_2_0() { return cScaffoldScaffoldKeyword_3_1_2_0; }
		
		//("path" "=" path=STRING)?
		public Group getGroup_3_1_3() { return cGroup_3_1_3; }
		
		//"path"
		public Keyword getPathKeyword_3_1_3_0() { return cPathKeyword_3_1_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_1_3_1() { return cEqualsSignKeyword_3_1_3_1; }
		
		//path=STRING
		public Assignment getPathAssignment_3_1_3_2() { return cPathAssignment_3_1_3_2; }
		
		//STRING
		public RuleCall getPathSTRINGTerminalRuleCall_3_1_3_2_0() { return cPathSTRINGTerminalRuleCall_3_1_3_2_0; }
		
		//dependencies+=ServiceDependency*
		public Assignment getDependenciesAssignment_3_2() { return cDependenciesAssignment_3_2; }
		
		//ServiceDependency
		public RuleCall getDependenciesServiceDependencyParserRuleCall_3_2_0() { return cDependenciesServiceDependencyParserRuleCall_3_2_0; }
		
		//operations+=ResourceOperation*
		public Assignment getOperationsAssignment_3_3() { return cOperationsAssignment_3_3; }
		
		//ResourceOperation
		public RuleCall getOperationsResourceOperationParserRuleCall_3_3_0() { return cOperationsResourceOperationParserRuleCall_3_3_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
	}
	public class ConsumerElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Consumer");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cConsumerKeyword_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 cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cHintKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cHintAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_4_2_0 = (RuleCall)cHintAssignment_4_2.eContents().get(0);
		private final Assignment cDependenciesAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cDependenciesDependencyParserRuleCall_5_0 = (RuleCall)cDependenciesAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cUnmarshallToKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cCommercialAtKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cMessageRootAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cMessageRootDomainObjectCrossReference_6_2_0 = (CrossReference)cMessageRootAssignment_6_2.eContents().get(0);
		private final RuleCall cMessageRootDomainObjectIDTerminalRuleCall_6_2_0_1 = (RuleCall)cMessageRootDomainObjectCrossReference_6_2_0.eContents().get(1);
		private final UnorderedGroup cUnorderedGroup_7 = (UnorderedGroup)cGroup.eContents().get(7);
		private final Group cGroup_7_0 = (Group)cUnorderedGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_0_0 = (Alternatives)cGroup_7_0.eContents().get(0);
		private final Keyword cQueueNameKeyword_7_0_0_0 = (Keyword)cAlternatives_7_0_0.eContents().get(0);
		private final Keyword cTopicNameKeyword_7_0_0_1 = (Keyword)cAlternatives_7_0_0.eContents().get(1);
		private final Keyword cEqualsSignKeyword_7_0_1 = (Keyword)cGroup_7_0.eContents().get(1);
		private final Assignment cChannelAssignment_7_0_2 = (Assignment)cGroup_7_0.eContents().get(2);
		private final RuleCall cChannelChannelIdentifierParserRuleCall_7_0_2_0 = (RuleCall)cChannelAssignment_7_0_2.eContents().get(0);
		private final Assignment cSubscribeAssignment_7_1 = (Assignment)cUnorderedGroup_7.eContents().get(1);
		private final RuleCall cSubscribeSubscribeParserRuleCall_7_1_0 = (RuleCall)cSubscribeAssignment_7_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//Consumer:
		//	doc=STRING?
		//	"Consumer" name=ID "{" ("hint" "=" hint=STRING)?
		//	dependencies+=Dependency* ("unmarshall to" "@"? messageRoot=[DomainObject])? ((("queueName" | "topicName") "="
		//	channel=ChannelIdentifier)? & subscribe=Subscribe?)
		//	"}";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "Consumer" name=ID "{" ("hint" "=" hint=STRING)? dependencies+=Dependency* ("unmarshall to" "@"?
		//messageRoot=[DomainObject])? ((("queueName" | "topicName") "=" channel=ChannelIdentifier)? & subscribe=Subscribe?) "}"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"Consumer"
		public Keyword getConsumerKeyword_1() { return cConsumerKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_4() { return cGroup_4; }
		
		//"hint"
		public Keyword getHintKeyword_4_0() { return cHintKeyword_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_1() { return cEqualsSignKeyword_4_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_4_2() { return cHintAssignment_4_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_4_2_0() { return cHintSTRINGTerminalRuleCall_4_2_0; }
		
		//dependencies+=Dependency*
		public Assignment getDependenciesAssignment_5() { return cDependenciesAssignment_5; }
		
		//Dependency
		public RuleCall getDependenciesDependencyParserRuleCall_5_0() { return cDependenciesDependencyParserRuleCall_5_0; }
		
		//("unmarshall to" "@"? messageRoot=[DomainObject])?
		public Group getGroup_6() { return cGroup_6; }
		
		//"unmarshall to"
		public Keyword getUnmarshallToKeyword_6_0() { return cUnmarshallToKeyword_6_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_6_1() { return cCommercialAtKeyword_6_1; }
		
		//messageRoot=[DomainObject]
		public Assignment getMessageRootAssignment_6_2() { return cMessageRootAssignment_6_2; }
		
		//[DomainObject]
		public CrossReference getMessageRootDomainObjectCrossReference_6_2_0() { return cMessageRootDomainObjectCrossReference_6_2_0; }
		
		//ID
		public RuleCall getMessageRootDomainObjectIDTerminalRuleCall_6_2_0_1() { return cMessageRootDomainObjectIDTerminalRuleCall_6_2_0_1; }
		
		//((("queueName" | "topicName") "=" channel=ChannelIdentifier)? & subscribe=Subscribe?)
		public UnorderedGroup getUnorderedGroup_7() { return cUnorderedGroup_7; }
		
		//(("queueName" | "topicName") "=" channel=ChannelIdentifier)?
		public Group getGroup_7_0() { return cGroup_7_0; }
		
		//("queueName" | "topicName")
		public Alternatives getAlternatives_7_0_0() { return cAlternatives_7_0_0; }
		
		//"queueName"
		public Keyword getQueueNameKeyword_7_0_0_0() { return cQueueNameKeyword_7_0_0_0; }
		
		//"topicName"
		public Keyword getTopicNameKeyword_7_0_0_1() { return cTopicNameKeyword_7_0_0_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_0_1() { return cEqualsSignKeyword_7_0_1; }
		
		//channel=ChannelIdentifier
		public Assignment getChannelAssignment_7_0_2() { return cChannelAssignment_7_0_2; }
		
		//ChannelIdentifier
		public RuleCall getChannelChannelIdentifierParserRuleCall_7_0_2_0() { return cChannelChannelIdentifierParserRuleCall_7_0_2_0; }
		
		//subscribe=Subscribe?
		public Assignment getSubscribeAssignment_7_1() { return cSubscribeAssignment_7_1; }
		
		//Subscribe
		public RuleCall getSubscribeSubscribeParserRuleCall_7_1_0() { return cSubscribeSubscribeParserRuleCall_7_1_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
	}
	public class SubscribeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Subscribe");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubscribeKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cToKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cTopicAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cTopicChannelIdentifierParserRuleCall_2_0 = (RuleCall)cTopicAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cEventBusKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cEventBusAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cEventBusIDTerminalRuleCall_3_2_0 = (RuleCall)cEventBusAssignment_3_2.eContents().get(0);
		
		//Subscribe:
		//	"subscribe" "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
		@Override public ParserRule getRule() { return rule; }
		
		//"subscribe" "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?
		public Group getGroup() { return cGroup; }
		
		//"subscribe"
		public Keyword getSubscribeKeyword_0() { return cSubscribeKeyword_0; }
		
		//"to"
		public Keyword getToKeyword_1() { return cToKeyword_1; }
		
		//topic=ChannelIdentifier
		public Assignment getTopicAssignment_2() { return cTopicAssignment_2; }
		
		//ChannelIdentifier
		public RuleCall getTopicChannelIdentifierParserRuleCall_2_0() { return cTopicChannelIdentifierParserRuleCall_2_0; }
		
		//("eventBus" "=" eventBus=ID)?
		public Group getGroup_3() { return cGroup_3; }
		
		//"eventBus"
		public Keyword getEventBusKeyword_3_0() { return cEventBusKeyword_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_1() { return cEqualsSignKeyword_3_1; }
		
		//eventBus=ID
		public Assignment getEventBusAssignment_3_2() { return cEventBusAssignment_3_2; }
		
		//ID
		public RuleCall getEventBusIDTerminalRuleCall_3_2_0() { return cEventBusIDTerminalRuleCall_3_2_0; }
	}
	public class PublishElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Publish");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPublishKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cCommercialAtKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cEventTypeAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final CrossReference cEventTypeEventCrossReference_1_1_0 = (CrossReference)cEventTypeAssignment_1_1.eContents().get(0);
		private final RuleCall cEventTypeEventIDTerminalRuleCall_1_1_0_1 = (RuleCall)cEventTypeEventCrossReference_1_1_0.eContents().get(1);
		private final Keyword cToKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cTopicAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cTopicChannelIdentifierParserRuleCall_3_0 = (RuleCall)cTopicAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cEventBusKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cEventBusAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cEventBusIDTerminalRuleCall_4_2_0 = (RuleCall)cEventBusAssignment_4_2.eContents().get(0);
		
		//Publish:
		//	"publish" ("@"? eventType=[Event])? "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
		@Override public ParserRule getRule() { return rule; }
		
		//"publish" ("@"? eventType=[Event])? "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?
		public Group getGroup() { return cGroup; }
		
		//"publish"
		public Keyword getPublishKeyword_0() { return cPublishKeyword_0; }
		
		//("@"? eventType=[Event])?
		public Group getGroup_1() { return cGroup_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_1_0() { return cCommercialAtKeyword_1_0; }
		
		//eventType=[Event]
		public Assignment getEventTypeAssignment_1_1() { return cEventTypeAssignment_1_1; }
		
		//[Event]
		public CrossReference getEventTypeEventCrossReference_1_1_0() { return cEventTypeEventCrossReference_1_1_0; }
		
		//ID
		public RuleCall getEventTypeEventIDTerminalRuleCall_1_1_0_1() { return cEventTypeEventIDTerminalRuleCall_1_1_0_1; }
		
		//"to"
		public Keyword getToKeyword_2() { return cToKeyword_2; }
		
		//topic=ChannelIdentifier
		public Assignment getTopicAssignment_3() { return cTopicAssignment_3; }
		
		//ChannelIdentifier
		public RuleCall getTopicChannelIdentifierParserRuleCall_3_0() { return cTopicChannelIdentifierParserRuleCall_3_0; }
		
		//("eventBus" "=" eventBus=ID)?
		public Group getGroup_4() { return cGroup_4; }
		
		//"eventBus"
		public Keyword getEventBusKeyword_4_0() { return cEventBusKeyword_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_1() { return cEqualsSignKeyword_4_1; }
		
		//eventBus=ID
		public Assignment getEventBusAssignment_4_2() { return cEventBusAssignment_4_2; }
		
		//ID
		public RuleCall getEventBusIDTerminalRuleCall_4_2_0() { return cEventBusIDTerminalRuleCall_4_2_0; }
	}
	public class EventElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Event");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cDomainEventParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cCommandEventParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//Event:
		//	DomainEvent | CommandEvent;
		@Override public ParserRule getRule() { return rule; }
		
		//DomainEvent | CommandEvent
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//DomainEvent
		public RuleCall getDomainEventParserRuleCall_0() { return cDomainEventParserRuleCall_0; }
		
		//CommandEvent
		public RuleCall getCommandEventParserRuleCall_1() { return cCommandEventParserRuleCall_1; }
	}
	public class DomainObjectTypedElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DomainObjectTypedElement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cServiceOperationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cRepositoryOperationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cDomainObjectOperationParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cParameterParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//DomainObjectTypedElement:
		//	ServiceOperation | RepositoryOperation | DomainObjectOperation | Parameter;
		@Override public ParserRule getRule() { return rule; }
		
		//ServiceOperation | RepositoryOperation | DomainObjectOperation | Parameter
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ServiceOperation
		public RuleCall getServiceOperationParserRuleCall_0() { return cServiceOperationParserRuleCall_0; }
		
		//RepositoryOperation
		public RuleCall getRepositoryOperationParserRuleCall_1() { return cRepositoryOperationParserRuleCall_1; }
		
		//DomainObjectOperation
		public RuleCall getDomainObjectOperationParserRuleCall_2() { return cDomainObjectOperationParserRuleCall_2; }
		
		//Parameter
		public RuleCall getParameterParserRuleCall_3() { return cParameterParserRuleCall_3; }
	}
	public class ServiceOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ServiceOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cVisibilityAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_1_0 = (RuleCall)cVisibilityAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cReturnTypeAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final RuleCall cReturnTypeComplexTypeParserRuleCall_2_0_0 = (RuleCall)cReturnTypeAssignment_2_0.eContents().get(0);
		private final Keyword cVoidKeyword_2_1 = (Keyword)cAlternatives_2.eContents().get(1);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cParametersAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_1_0 = (RuleCall)cParametersAssignment_4_1.eContents().get(0);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cParametersAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_2_1_0 = (RuleCall)cParametersAssignment_4_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cUnorderedGroup_5.eContents().get(0);
		private final Keyword cThrowsKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
		private final Assignment cThrowsAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cThrowsThrowsIdentifierParserRuleCall_5_0_1_0 = (RuleCall)cThrowsAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cUnorderedGroup_5.eContents().get(1);
		private final Keyword cHintKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_1_1 = (Keyword)cGroup_5_1.eContents().get(1);
		private final Assignment cHintAssignment_5_1_2 = (Assignment)cGroup_5_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_5_1_2_0 = (RuleCall)cHintAssignment_5_1_2.eContents().get(0);
		private final Assignment cPublishAssignment_5_2 = (Assignment)cUnorderedGroup_5.eContents().get(2);
		private final RuleCall cPublishPublishParserRuleCall_5_2_0 = (RuleCall)cPublishAssignment_5_2.eContents().get(0);
		private final Assignment cDelegateHolderAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cDelegateHolderServiceOperationDelegateParserRuleCall_6_0 = (RuleCall)cDelegateHolderAssignment_6.eContents().get(0);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//ServiceOperation:
		//	doc=STRING?
		//	visibility=Visibility? (returnType=ComplexType | "void")?
		//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
		//	"=" hint=STRING)? & publish=Publish?) delegateHolder=ServiceOperationDelegate? ";";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? visibility=Visibility? (returnType=ComplexType | "void")? name=ID ("(" parameters+=Parameter? (","
		//parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & publish=Publish?)
		//delegateHolder=ServiceOperationDelegate? ";"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_1_0() { return cVisibilityVisibilityEnumRuleCall_1_0; }
		
		//(returnType=ComplexType | "void")?
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//returnType=ComplexType
		public Assignment getReturnTypeAssignment_2_0() { return cReturnTypeAssignment_2_0; }
		
		//ComplexType
		public RuleCall getReturnTypeComplexTypeParserRuleCall_2_0_0() { return cReturnTypeComplexTypeParserRuleCall_2_0_0; }
		
		//"void"
		public Keyword getVoidKeyword_2_1() { return cVoidKeyword_2_1; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")?
		public Group getGroup_4() { return cGroup_4; }
		
		//"("
		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
		
		//parameters+=Parameter?
		public Assignment getParametersAssignment_4_1() { return cParametersAssignment_4_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_1_0() { return cParametersParameterParserRuleCall_4_1_0; }
		
		//("," parameters+=Parameter)*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//","
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//parameters+=Parameter
		public Assignment getParametersAssignment_4_2_1() { return cParametersAssignment_4_2_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_2_1_0() { return cParametersParameterParserRuleCall_4_2_1_0; }
		
		//")"
		public Keyword getRightParenthesisKeyword_4_3() { return cRightParenthesisKeyword_4_3; }
		
		//(("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & publish=Publish?)
		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
		
		//("throws" throws=ThrowsIdentifier)?
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//"throws"
		public Keyword getThrowsKeyword_5_0_0() { return cThrowsKeyword_5_0_0; }
		
		//throws=ThrowsIdentifier
		public Assignment getThrowsAssignment_5_0_1() { return cThrowsAssignment_5_0_1; }
		
		//ThrowsIdentifier
		public RuleCall getThrowsThrowsIdentifierParserRuleCall_5_0_1_0() { return cThrowsThrowsIdentifierParserRuleCall_5_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//"hint"
		public Keyword getHintKeyword_5_1_0() { return cHintKeyword_5_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_1_1() { return cEqualsSignKeyword_5_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_5_1_2() { return cHintAssignment_5_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_5_1_2_0() { return cHintSTRINGTerminalRuleCall_5_1_2_0; }
		
		//publish=Publish?
		public Assignment getPublishAssignment_5_2() { return cPublishAssignment_5_2; }
		
		//Publish
		public RuleCall getPublishPublishParserRuleCall_5_2_0() { return cPublishPublishParserRuleCall_5_2_0; }
		
		//delegateHolder=ServiceOperationDelegate?
		public Assignment getDelegateHolderAssignment_6() { return cDelegateHolderAssignment_6; }
		
		//ServiceOperationDelegate
		public RuleCall getDelegateHolderServiceOperationDelegateParserRuleCall_6_0() { return cDelegateHolderServiceOperationDelegateParserRuleCall_6_0; }
		
		//";"
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class ServiceOperationDelegateElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ServiceOperationDelegate");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cDELEGATETerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cCommercialAtKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cDelegateAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cDelegateServiceRepositoryOptionCrossReference_2_0 = (CrossReference)cDelegateAssignment_2.eContents().get(0);
		private final RuleCall cDelegateServiceRepositoryOptionIDTerminalRuleCall_2_0_1 = (RuleCall)cDelegateServiceRepositoryOptionCrossReference_2_0.eContents().get(1);
		private final Keyword cFullStopKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cDelegateOperationAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cDelegateOperationServiceRepositoryOperationOptionCrossReference_4_0 = (CrossReference)cDelegateOperationAssignment_4.eContents().get(0);
		private final RuleCall cDelegateOperationServiceRepositoryOperationOptionIDTerminalRuleCall_4_0_1 = (RuleCall)cDelegateOperationServiceRepositoryOperationOptionCrossReference_4_0.eContents().get(1);
		
		//ServiceOperationDelegate:
		//	DELEGATE "@"? delegate=[ServiceRepositoryOption] "." delegateOperation=[ServiceRepositoryOperationOption];
		@Override public ParserRule getRule() { return rule; }
		
		//DELEGATE "@"? delegate=[ServiceRepositoryOption] "." delegateOperation=[ServiceRepositoryOperationOption]
		public Group getGroup() { return cGroup; }
		
		//DELEGATE
		public RuleCall getDELEGATETerminalRuleCall_0() { return cDELEGATETerminalRuleCall_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_1() { return cCommercialAtKeyword_1; }
		
		//delegate=[ServiceRepositoryOption]
		public Assignment getDelegateAssignment_2() { return cDelegateAssignment_2; }
		
		//[ServiceRepositoryOption]
		public CrossReference getDelegateServiceRepositoryOptionCrossReference_2_0() { return cDelegateServiceRepositoryOptionCrossReference_2_0; }
		
		//ID
		public RuleCall getDelegateServiceRepositoryOptionIDTerminalRuleCall_2_0_1() { return cDelegateServiceRepositoryOptionIDTerminalRuleCall_2_0_1; }
		
		//"."
		public Keyword getFullStopKeyword_3() { return cFullStopKeyword_3; }
		
		//delegateOperation=[ServiceRepositoryOperationOption]
		public Assignment getDelegateOperationAssignment_4() { return cDelegateOperationAssignment_4; }
		
		//[ServiceRepositoryOperationOption]
		public CrossReference getDelegateOperationServiceRepositoryOperationOptionCrossReference_4_0() { return cDelegateOperationServiceRepositoryOperationOptionCrossReference_4_0; }
		
		//ID
		public RuleCall getDelegateOperationServiceRepositoryOperationOptionIDTerminalRuleCall_4_0_1() { return cDelegateOperationServiceRepositoryOperationOptionIDTerminalRuleCall_4_0_1; }
	}
	public class ServiceRepositoryOptionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ServiceRepositoryOption");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cRepositoryParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cServiceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//ServiceRepositoryOption:
		//	Repository | Service;
		@Override public ParserRule getRule() { return rule; }
		
		//Repository | Service
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Repository
		public RuleCall getRepositoryParserRuleCall_0() { return cRepositoryParserRuleCall_0; }
		
		//Service
		public RuleCall getServiceParserRuleCall_1() { return cServiceParserRuleCall_1; }
	}
	public class ServiceRepositoryOperationOptionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ServiceRepositoryOperationOption");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cRepositoryOperationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cServiceOperationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//ServiceRepositoryOperationOption:
		//	RepositoryOperation | ServiceOperation;
		@Override public ParserRule getRule() { return rule; }
		
		//RepositoryOperation | ServiceOperation
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//RepositoryOperation
		public RuleCall getRepositoryOperationParserRuleCall_0() { return cRepositoryOperationParserRuleCall_0; }
		
		//ServiceOperation
		public RuleCall getServiceOperationParserRuleCall_1() { return cServiceOperationParserRuleCall_1; }
	}
	public class ResourceOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ResourceOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cVisibilityAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_1_0 = (RuleCall)cVisibilityAssignment_1.eContents().get(0);
		private final Assignment cReturnTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cReturnTypeComplexTypeParserRuleCall_2_0 = (RuleCall)cReturnTypeAssignment_2.eContents().get(0);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cParametersAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_1_0 = (RuleCall)cParametersAssignment_4_1.eContents().get(0);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cParametersAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_2_1_0 = (RuleCall)cParametersAssignment_4_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cUnorderedGroup_5.eContents().get(0);
		private final Keyword cThrowsKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
		private final Assignment cThrowsAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cThrowsThrowsIdentifierParserRuleCall_5_0_1_0 = (RuleCall)cThrowsAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cUnorderedGroup_5.eContents().get(1);
		private final Keyword cHintKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_1_1 = (Keyword)cGroup_5_1.eContents().get(1);
		private final Assignment cHintAssignment_5_1_2 = (Assignment)cGroup_5_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_5_1_2_0 = (RuleCall)cHintAssignment_5_1_2.eContents().get(0);
		private final Assignment cHttpMethodAssignment_5_2 = (Assignment)cUnorderedGroup_5.eContents().get(2);
		private final RuleCall cHttpMethodHttpMethodEnumRuleCall_5_2_0 = (RuleCall)cHttpMethodAssignment_5_2.eContents().get(0);
		private final Group cGroup_5_3 = (Group)cUnorderedGroup_5.eContents().get(3);
		private final Keyword cPathKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_3_1 = (Keyword)cGroup_5_3.eContents().get(1);
		private final Assignment cPathAssignment_5_3_2 = (Assignment)cGroup_5_3.eContents().get(2);
		private final RuleCall cPathSTRINGTerminalRuleCall_5_3_2_0 = (RuleCall)cPathAssignment_5_3_2.eContents().get(0);
		private final Group cGroup_5_4 = (Group)cUnorderedGroup_5.eContents().get(4);
		private final Keyword cReturnKeyword_5_4_0 = (Keyword)cGroup_5_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_4_1 = (Keyword)cGroup_5_4.eContents().get(1);
		private final Assignment cReturnStringAssignment_5_4_2 = (Assignment)cGroup_5_4.eContents().get(2);
		private final RuleCall cReturnStringSTRINGTerminalRuleCall_5_4_2_0 = (RuleCall)cReturnStringAssignment_5_4_2.eContents().get(0);
		private final Assignment cDelegateHolderAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cDelegateHolderResourceOperationDelegateParserRuleCall_6_0 = (RuleCall)cDelegateHolderAssignment_6.eContents().get(0);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//ResourceOperation:
		//	doc=STRING?
		//	visibility=Visibility?
		//	returnType=ComplexType?
		//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
		//	"=" hint=STRING)? & httpMethod=HttpMethod? & ("path" "=" path=STRING)? & ("return" "=" returnString=STRING)?)
		//	delegateHolder=ResourceOperationDelegate? ";";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? visibility=Visibility? returnType=ComplexType? name=ID ("(" parameters+=Parameter? (","
		//parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & httpMethod=HttpMethod?
		//& ("path" "=" path=STRING)? & ("return" "=" returnString=STRING)?) delegateHolder=ResourceOperationDelegate? ";"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_1_0() { return cVisibilityVisibilityEnumRuleCall_1_0; }
		
		//returnType=ComplexType?
		public Assignment getReturnTypeAssignment_2() { return cReturnTypeAssignment_2; }
		
		//ComplexType
		public RuleCall getReturnTypeComplexTypeParserRuleCall_2_0() { return cReturnTypeComplexTypeParserRuleCall_2_0; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")?
		public Group getGroup_4() { return cGroup_4; }
		
		//"("
		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
		
		//parameters+=Parameter?
		public Assignment getParametersAssignment_4_1() { return cParametersAssignment_4_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_1_0() { return cParametersParameterParserRuleCall_4_1_0; }
		
		//("," parameters+=Parameter)*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//","
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//parameters+=Parameter
		public Assignment getParametersAssignment_4_2_1() { return cParametersAssignment_4_2_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_2_1_0() { return cParametersParameterParserRuleCall_4_2_1_0; }
		
		//")"
		public Keyword getRightParenthesisKeyword_4_3() { return cRightParenthesisKeyword_4_3; }
		
		//(("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & httpMethod=HttpMethod? & ("path" "=" path=STRING)? &
		//("return" "=" returnString=STRING)?)
		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
		
		//("throws" throws=ThrowsIdentifier)?
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//"throws"
		public Keyword getThrowsKeyword_5_0_0() { return cThrowsKeyword_5_0_0; }
		
		//throws=ThrowsIdentifier
		public Assignment getThrowsAssignment_5_0_1() { return cThrowsAssignment_5_0_1; }
		
		//ThrowsIdentifier
		public RuleCall getThrowsThrowsIdentifierParserRuleCall_5_0_1_0() { return cThrowsThrowsIdentifierParserRuleCall_5_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//"hint"
		public Keyword getHintKeyword_5_1_0() { return cHintKeyword_5_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_1_1() { return cEqualsSignKeyword_5_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_5_1_2() { return cHintAssignment_5_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_5_1_2_0() { return cHintSTRINGTerminalRuleCall_5_1_2_0; }
		
		//httpMethod=HttpMethod?
		public Assignment getHttpMethodAssignment_5_2() { return cHttpMethodAssignment_5_2; }
		
		//HttpMethod
		public RuleCall getHttpMethodHttpMethodEnumRuleCall_5_2_0() { return cHttpMethodHttpMethodEnumRuleCall_5_2_0; }
		
		//("path" "=" path=STRING)?
		public Group getGroup_5_3() { return cGroup_5_3; }
		
		//"path"
		public Keyword getPathKeyword_5_3_0() { return cPathKeyword_5_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_3_1() { return cEqualsSignKeyword_5_3_1; }
		
		//path=STRING
		public Assignment getPathAssignment_5_3_2() { return cPathAssignment_5_3_2; }
		
		//STRING
		public RuleCall getPathSTRINGTerminalRuleCall_5_3_2_0() { return cPathSTRINGTerminalRuleCall_5_3_2_0; }
		
		//("return" "=" returnString=STRING)?
		public Group getGroup_5_4() { return cGroup_5_4; }
		
		//"return"
		public Keyword getReturnKeyword_5_4_0() { return cReturnKeyword_5_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_4_1() { return cEqualsSignKeyword_5_4_1; }
		
		//returnString=STRING
		public Assignment getReturnStringAssignment_5_4_2() { return cReturnStringAssignment_5_4_2; }
		
		//STRING
		public RuleCall getReturnStringSTRINGTerminalRuleCall_5_4_2_0() { return cReturnStringSTRINGTerminalRuleCall_5_4_2_0; }
		
		//delegateHolder=ResourceOperationDelegate?
		public Assignment getDelegateHolderAssignment_6() { return cDelegateHolderAssignment_6; }
		
		//ResourceOperationDelegate
		public RuleCall getDelegateHolderResourceOperationDelegateParserRuleCall_6_0() { return cDelegateHolderResourceOperationDelegateParserRuleCall_6_0; }
		
		//";"
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class ResourceOperationDelegateElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ResourceOperationDelegate");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cDELEGATETerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cCommercialAtKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cDelegateAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cDelegateServiceCrossReference_2_0 = (CrossReference)cDelegateAssignment_2.eContents().get(0);
		private final RuleCall cDelegateServiceIDTerminalRuleCall_2_0_1 = (RuleCall)cDelegateServiceCrossReference_2_0.eContents().get(1);
		private final Keyword cFullStopKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cDelegateOperationAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cDelegateOperationServiceOperationCrossReference_4_0 = (CrossReference)cDelegateOperationAssignment_4.eContents().get(0);
		private final RuleCall cDelegateOperationServiceOperationIDTerminalRuleCall_4_0_1 = (RuleCall)cDelegateOperationServiceOperationCrossReference_4_0.eContents().get(1);
		
		//ResourceOperationDelegate:
		//	DELEGATE "@"? delegate=[Service] "." delegateOperation=[ServiceOperation];
		@Override public ParserRule getRule() { return rule; }
		
		//DELEGATE "@"? delegate=[Service] "." delegateOperation=[ServiceOperation]
		public Group getGroup() { return cGroup; }
		
		//DELEGATE
		public RuleCall getDELEGATETerminalRuleCall_0() { return cDELEGATETerminalRuleCall_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_1() { return cCommercialAtKeyword_1; }
		
		//delegate=[Service]
		public Assignment getDelegateAssignment_2() { return cDelegateAssignment_2; }
		
		//[Service]
		public CrossReference getDelegateServiceCrossReference_2_0() { return cDelegateServiceCrossReference_2_0; }
		
		//ID
		public RuleCall getDelegateServiceIDTerminalRuleCall_2_0_1() { return cDelegateServiceIDTerminalRuleCall_2_0_1; }
		
		//"."
		public Keyword getFullStopKeyword_3() { return cFullStopKeyword_3; }
		
		//delegateOperation=[ServiceOperation]
		public Assignment getDelegateOperationAssignment_4() { return cDelegateOperationAssignment_4; }
		
		//[ServiceOperation]
		public CrossReference getDelegateOperationServiceOperationCrossReference_4_0() { return cDelegateOperationServiceOperationCrossReference_4_0; }
		
		//ID
		public RuleCall getDelegateOperationServiceOperationIDTerminalRuleCall_4_0_1() { return cDelegateOperationServiceOperationIDTerminalRuleCall_4_0_1; }
	}
	public class RepositoryOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.RepositoryOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cVisibilityAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_1_0 = (RuleCall)cVisibilityAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cReturnTypeAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final RuleCall cReturnTypeComplexTypeParserRuleCall_2_0_0 = (RuleCall)cReturnTypeAssignment_2_0.eContents().get(0);
		private final Keyword cVoidKeyword_2_1 = (Keyword)cAlternatives_2.eContents().get(1);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cParametersAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_1_0 = (RuleCall)cParametersAssignment_4_1.eContents().get(0);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cParametersAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_4_2_1_0 = (RuleCall)cParametersAssignment_4_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cUnorderedGroup_5.eContents().get(0);
		private final Keyword cThrowsKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
		private final Assignment cThrowsAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cThrowsThrowsIdentifierParserRuleCall_5_0_1_0 = (RuleCall)cThrowsAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cUnorderedGroup_5.eContents().get(1);
		private final Keyword cHintKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_1_1 = (Keyword)cGroup_5_1.eContents().get(1);
		private final Assignment cHintAssignment_5_1_2 = (Assignment)cGroup_5_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_5_1_2_0 = (RuleCall)cHintAssignment_5_1_2.eContents().get(0);
		private final Assignment cCacheAssignment_5_2 = (Assignment)cUnorderedGroup_5.eContents().get(2);
		private final Keyword cCacheCacheKeyword_5_2_0 = (Keyword)cCacheAssignment_5_2.eContents().get(0);
		private final Alternatives cAlternatives_5_3 = (Alternatives)cUnorderedGroup_5.eContents().get(3);
		private final Assignment cGapOperationAssignment_5_3_0 = (Assignment)cAlternatives_5_3.eContents().get(0);
		private final Keyword cGapOperationGapKeyword_5_3_0_0 = (Keyword)cGapOperationAssignment_5_3_0.eContents().get(0);
		private final Assignment cNoGapOperationAssignment_5_3_1 = (Assignment)cAlternatives_5_3.eContents().get(1);
		private final Keyword cNoGapOperationNogapKeyword_5_3_1_0 = (Keyword)cNoGapOperationAssignment_5_3_1.eContents().get(0);
		private final Group cGroup_5_4 = (Group)cUnorderedGroup_5.eContents().get(4);
		private final Keyword cQueryKeyword_5_4_0 = (Keyword)cGroup_5_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_4_1 = (Keyword)cGroup_5_4.eContents().get(1);
		private final Assignment cQueryAssignment_5_4_2 = (Assignment)cGroup_5_4.eContents().get(2);
		private final RuleCall cQuerySTRINGTerminalRuleCall_5_4_2_0 = (RuleCall)cQueryAssignment_5_4_2.eContents().get(0);
		private final Group cGroup_5_5 = (Group)cUnorderedGroup_5.eContents().get(5);
		private final Keyword cConditionKeyword_5_5_0 = (Keyword)cGroup_5_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_5_1 = (Keyword)cGroup_5_5.eContents().get(1);
		private final Assignment cConditionAssignment_5_5_2 = (Assignment)cGroup_5_5.eContents().get(2);
		private final RuleCall cConditionSTRINGTerminalRuleCall_5_5_2_0 = (RuleCall)cConditionAssignment_5_5_2.eContents().get(0);
		private final Group cGroup_5_6 = (Group)cUnorderedGroup_5.eContents().get(6);
		private final Keyword cSelectKeyword_5_6_0 = (Keyword)cGroup_5_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_6_1 = (Keyword)cGroup_5_6.eContents().get(1);
		private final Assignment cSelectAssignment_5_6_2 = (Assignment)cGroup_5_6.eContents().get(2);
		private final RuleCall cSelectSTRINGTerminalRuleCall_5_6_2_0 = (RuleCall)cSelectAssignment_5_6_2.eContents().get(0);
		private final Group cGroup_5_7 = (Group)cUnorderedGroup_5.eContents().get(7);
		private final Keyword cGroupByKeyword_5_7_0 = (Keyword)cGroup_5_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_7_1 = (Keyword)cGroup_5_7.eContents().get(1);
		private final Assignment cGroupByAssignment_5_7_2 = (Assignment)cGroup_5_7.eContents().get(2);
		private final RuleCall cGroupBySTRINGTerminalRuleCall_5_7_2_0 = (RuleCall)cGroupByAssignment_5_7_2.eContents().get(0);
		private final Group cGroup_5_8 = (Group)cUnorderedGroup_5.eContents().get(8);
		private final Keyword cOrderByKeyword_5_8_0 = (Keyword)cGroup_5_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_8_1 = (Keyword)cGroup_5_8.eContents().get(1);
		private final Assignment cOrderByAssignment_5_8_2 = (Assignment)cGroup_5_8.eContents().get(2);
		private final RuleCall cOrderBySTRINGTerminalRuleCall_5_8_2_0 = (RuleCall)cOrderByAssignment_5_8_2.eContents().get(0);
		private final Assignment cConstructAssignment_5_9 = (Assignment)cUnorderedGroup_5.eContents().get(9);
		private final Keyword cConstructConstructKeyword_5_9_0 = (Keyword)cConstructAssignment_5_9.eContents().get(0);
		private final Assignment cBuildAssignment_5_10 = (Assignment)cUnorderedGroup_5.eContents().get(10);
		private final Keyword cBuildBuildKeyword_5_10_0 = (Keyword)cBuildAssignment_5_10.eContents().get(0);
		private final Assignment cMapAssignment_5_11 = (Assignment)cUnorderedGroup_5.eContents().get(11);
		private final Keyword cMapMapKeyword_5_11_0 = (Keyword)cMapAssignment_5_11.eContents().get(0);
		private final Assignment cPublishAssignment_5_12 = (Assignment)cUnorderedGroup_5.eContents().get(12);
		private final RuleCall cPublishPublishParserRuleCall_5_12_0 = (RuleCall)cPublishAssignment_5_12.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Assignment cDelegateToAccessObjectAssignment_6_0 = (Assignment)cGroup_6.eContents().get(0);
		private final RuleCall cDelegateToAccessObjectDELEGATETerminalRuleCall_6_0_0 = (RuleCall)cDelegateToAccessObjectAssignment_6_0.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Keyword cAccessObjectKeyword_6_1_0 = (Keyword)cAlternatives_6_1.eContents().get(0);
		private final Assignment cAccessObjectNameAssignment_6_1_1 = (Assignment)cAlternatives_6_1.eContents().get(1);
		private final RuleCall cAccessObjectNameIDTerminalRuleCall_6_1_1_0 = (RuleCall)cAccessObjectNameAssignment_6_1_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//RepositoryOperation:
		//	doc=STRING?
		//	visibility=Visibility? (returnType=ComplexType | "void")?
		//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
		//	"=" hint=STRING)? & cache?="cache"? & (gapOperation?="gap" | noGapOperation?="nogap")? & ("query" "=" query=STRING)? &
		//	("condition" "=" condition=STRING)? & ("select" "=" select=STRING)? & ("groupBy" "=" groupBy=STRING)? & ("orderBy" "="
		//	orderBy=STRING)? & construct?="construct"? & build?="build"? & map?="map"? & publish=Publish?)
		//	(delegateToAccessObject?=DELEGATE ("AccessObject" | accessObjectName=ID))? ";";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? visibility=Visibility? (returnType=ComplexType | "void")? name=ID ("(" parameters+=Parameter? (","
		//parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & cache?="cache"? &
		//(gapOperation?="gap" | noGapOperation?="nogap")? & ("query" "=" query=STRING)? & ("condition" "=" condition=STRING)? &
		//("select" "=" select=STRING)? & ("groupBy" "=" groupBy=STRING)? & ("orderBy" "=" orderBy=STRING)? &
		//construct?="construct"? & build?="build"? & map?="map"? & publish=Publish?) (delegateToAccessObject?=DELEGATE
		//("AccessObject" | accessObjectName=ID))? ";"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_1_0() { return cVisibilityVisibilityEnumRuleCall_1_0; }
		
		//(returnType=ComplexType | "void")?
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//returnType=ComplexType
		public Assignment getReturnTypeAssignment_2_0() { return cReturnTypeAssignment_2_0; }
		
		//ComplexType
		public RuleCall getReturnTypeComplexTypeParserRuleCall_2_0_0() { return cReturnTypeComplexTypeParserRuleCall_2_0_0; }
		
		//"void"
		public Keyword getVoidKeyword_2_1() { return cVoidKeyword_2_1; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")?
		public Group getGroup_4() { return cGroup_4; }
		
		//"("
		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
		
		//parameters+=Parameter?
		public Assignment getParametersAssignment_4_1() { return cParametersAssignment_4_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_1_0() { return cParametersParameterParserRuleCall_4_1_0; }
		
		//("," parameters+=Parameter)*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//","
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//parameters+=Parameter
		public Assignment getParametersAssignment_4_2_1() { return cParametersAssignment_4_2_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_4_2_1_0() { return cParametersParameterParserRuleCall_4_2_1_0; }
		
		//")"
		public Keyword getRightParenthesisKeyword_4_3() { return cRightParenthesisKeyword_4_3; }
		
		//(("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)? & cache?="cache"? & (gapOperation?="gap" |
		//noGapOperation?="nogap")? & ("query" "=" query=STRING)? & ("condition" "=" condition=STRING)? & ("select" "="
		//select=STRING)? & ("groupBy" "=" groupBy=STRING)? & ("orderBy" "=" orderBy=STRING)? & construct?="construct"? &
		//build?="build"? & map?="map"? & publish=Publish?)
		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
		
		//("throws" throws=ThrowsIdentifier)?
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//"throws"
		public Keyword getThrowsKeyword_5_0_0() { return cThrowsKeyword_5_0_0; }
		
		//throws=ThrowsIdentifier
		public Assignment getThrowsAssignment_5_0_1() { return cThrowsAssignment_5_0_1; }
		
		//ThrowsIdentifier
		public RuleCall getThrowsThrowsIdentifierParserRuleCall_5_0_1_0() { return cThrowsThrowsIdentifierParserRuleCall_5_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//"hint"
		public Keyword getHintKeyword_5_1_0() { return cHintKeyword_5_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_1_1() { return cEqualsSignKeyword_5_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_5_1_2() { return cHintAssignment_5_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_5_1_2_0() { return cHintSTRINGTerminalRuleCall_5_1_2_0; }
		
		//cache?="cache"?
		public Assignment getCacheAssignment_5_2() { return cCacheAssignment_5_2; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_5_2_0() { return cCacheCacheKeyword_5_2_0; }
		
		//(gapOperation?="gap" | noGapOperation?="nogap")?
		public Alternatives getAlternatives_5_3() { return cAlternatives_5_3; }
		
		//gapOperation?="gap"
		public Assignment getGapOperationAssignment_5_3_0() { return cGapOperationAssignment_5_3_0; }
		
		//"gap"
		public Keyword getGapOperationGapKeyword_5_3_0_0() { return cGapOperationGapKeyword_5_3_0_0; }
		
		//noGapOperation?="nogap"
		public Assignment getNoGapOperationAssignment_5_3_1() { return cNoGapOperationAssignment_5_3_1; }
		
		//"nogap"
		public Keyword getNoGapOperationNogapKeyword_5_3_1_0() { return cNoGapOperationNogapKeyword_5_3_1_0; }
		
		//("query" "=" query=STRING)?
		public Group getGroup_5_4() { return cGroup_5_4; }
		
		//"query"
		public Keyword getQueryKeyword_5_4_0() { return cQueryKeyword_5_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_4_1() { return cEqualsSignKeyword_5_4_1; }
		
		//query=STRING
		public Assignment getQueryAssignment_5_4_2() { return cQueryAssignment_5_4_2; }
		
		//STRING
		public RuleCall getQuerySTRINGTerminalRuleCall_5_4_2_0() { return cQuerySTRINGTerminalRuleCall_5_4_2_0; }
		
		//("condition" "=" condition=STRING)?
		public Group getGroup_5_5() { return cGroup_5_5; }
		
		//"condition"
		public Keyword getConditionKeyword_5_5_0() { return cConditionKeyword_5_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_5_1() { return cEqualsSignKeyword_5_5_1; }
		
		//condition=STRING
		public Assignment getConditionAssignment_5_5_2() { return cConditionAssignment_5_5_2; }
		
		//STRING
		public RuleCall getConditionSTRINGTerminalRuleCall_5_5_2_0() { return cConditionSTRINGTerminalRuleCall_5_5_2_0; }
		
		//("select" "=" select=STRING)?
		public Group getGroup_5_6() { return cGroup_5_6; }
		
		//"select"
		public Keyword getSelectKeyword_5_6_0() { return cSelectKeyword_5_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_6_1() { return cEqualsSignKeyword_5_6_1; }
		
		//select=STRING
		public Assignment getSelectAssignment_5_6_2() { return cSelectAssignment_5_6_2; }
		
		//STRING
		public RuleCall getSelectSTRINGTerminalRuleCall_5_6_2_0() { return cSelectSTRINGTerminalRuleCall_5_6_2_0; }
		
		//("groupBy" "=" groupBy=STRING)?
		public Group getGroup_5_7() { return cGroup_5_7; }
		
		//"groupBy"
		public Keyword getGroupByKeyword_5_7_0() { return cGroupByKeyword_5_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_7_1() { return cEqualsSignKeyword_5_7_1; }
		
		//groupBy=STRING
		public Assignment getGroupByAssignment_5_7_2() { return cGroupByAssignment_5_7_2; }
		
		//STRING
		public RuleCall getGroupBySTRINGTerminalRuleCall_5_7_2_0() { return cGroupBySTRINGTerminalRuleCall_5_7_2_0; }
		
		//("orderBy" "=" orderBy=STRING)?
		public Group getGroup_5_8() { return cGroup_5_8; }
		
		//"orderBy"
		public Keyword getOrderByKeyword_5_8_0() { return cOrderByKeyword_5_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_8_1() { return cEqualsSignKeyword_5_8_1; }
		
		//orderBy=STRING
		public Assignment getOrderByAssignment_5_8_2() { return cOrderByAssignment_5_8_2; }
		
		//STRING
		public RuleCall getOrderBySTRINGTerminalRuleCall_5_8_2_0() { return cOrderBySTRINGTerminalRuleCall_5_8_2_0; }
		
		//construct?="construct"?
		public Assignment getConstructAssignment_5_9() { return cConstructAssignment_5_9; }
		
		//"construct"
		public Keyword getConstructConstructKeyword_5_9_0() { return cConstructConstructKeyword_5_9_0; }
		
		//build?="build"?
		public Assignment getBuildAssignment_5_10() { return cBuildAssignment_5_10; }
		
		//"build"
		public Keyword getBuildBuildKeyword_5_10_0() { return cBuildBuildKeyword_5_10_0; }
		
		//map?="map"?
		public Assignment getMapAssignment_5_11() { return cMapAssignment_5_11; }
		
		//"map"
		public Keyword getMapMapKeyword_5_11_0() { return cMapMapKeyword_5_11_0; }
		
		//publish=Publish?
		public Assignment getPublishAssignment_5_12() { return cPublishAssignment_5_12; }
		
		//Publish
		public RuleCall getPublishPublishParserRuleCall_5_12_0() { return cPublishPublishParserRuleCall_5_12_0; }
		
		//(delegateToAccessObject?=DELEGATE ("AccessObject" | accessObjectName=ID))?
		public Group getGroup_6() { return cGroup_6; }
		
		//delegateToAccessObject?=DELEGATE
		public Assignment getDelegateToAccessObjectAssignment_6_0() { return cDelegateToAccessObjectAssignment_6_0; }
		
		//DELEGATE
		public RuleCall getDelegateToAccessObjectDELEGATETerminalRuleCall_6_0_0() { return cDelegateToAccessObjectDELEGATETerminalRuleCall_6_0_0; }
		
		//("AccessObject" | accessObjectName=ID)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//"AccessObject"
		public Keyword getAccessObjectKeyword_6_1_0() { return cAccessObjectKeyword_6_1_0; }
		
		//accessObjectName=ID
		public Assignment getAccessObjectNameAssignment_6_1_1() { return cAccessObjectNameAssignment_6_1_1; }
		
		//ID
		public RuleCall getAccessObjectNameIDTerminalRuleCall_6_1_1_0() { return cAccessObjectNameIDTerminalRuleCall_6_1_1_0; }
		
		//";"
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class ParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Parameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cParameterTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cParameterTypeComplexTypeParserRuleCall_1_0 = (RuleCall)cParameterTypeAssignment_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:
		//	doc=STRING?
		//	parameterType=ComplexType name=ID;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? parameterType=ComplexType name=ID
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//parameterType=ComplexType
		public Assignment getParameterTypeAssignment_1() { return cParameterTypeAssignment_1; }
		
		//ComplexType
		public RuleCall getParameterTypeComplexTypeParserRuleCall_1_0() { return cParameterTypeComplexTypeParserRuleCall_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
	}
	public class ComplexTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ComplexType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Assignment cTypeAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
		private final RuleCall cTypeTypeParserRuleCall_0_0 = (RuleCall)cTypeAssignment_0.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cTypeAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final RuleCall cTypeTypeParserRuleCall_1_0_0 = (RuleCall)cTypeAssignment_1_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Keyword cCommercialAtKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Assignment cDomainObjectTypeAssignment_1_3 = (Assignment)cGroup_1.eContents().get(3);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_1_3_0 = (CrossReference)cDomainObjectTypeAssignment_1_3.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_1_3_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_1_3_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Keyword cCommercialAtKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_2_1_0 = (CrossReference)cDomainObjectTypeAssignment_2_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_2_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_2_1_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cAlternatives.eContents().get(3);
		private final Assignment cCollectionTypeAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cCollectionTypeCollectionTypeEnumRuleCall_3_0_0 = (RuleCall)cCollectionTypeAssignment_3_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Alternatives cAlternatives_3_2 = (Alternatives)cGroup_3.eContents().get(2);
		private final Group cGroup_3_2_0 = (Group)cAlternatives_3_2.eContents().get(0);
		private final Keyword cCommercialAtKeyword_3_2_0_0 = (Keyword)cGroup_3_2_0.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_3_2_0_1 = (Assignment)cGroup_3_2_0.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_0_1_0 = (CrossReference)cDomainObjectTypeAssignment_3_2_0_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_0_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_0_1_0.eContents().get(1);
		private final Assignment cTypeAssignment_3_2_1 = (Assignment)cAlternatives_3_2.eContents().get(1);
		private final RuleCall cTypeTypeParserRuleCall_3_2_1_0 = (RuleCall)cTypeAssignment_3_2_1.eContents().get(0);
		private final Group cGroup_3_2_2 = (Group)cAlternatives_3_2.eContents().get(2);
		private final Assignment cTypeAssignment_3_2_2_0 = (Assignment)cGroup_3_2_2.eContents().get(0);
		private final RuleCall cTypeTypeParserRuleCall_3_2_2_0_0 = (RuleCall)cTypeAssignment_3_2_2_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_3_2_2_1 = (Keyword)cGroup_3_2_2.eContents().get(1);
		private final Keyword cCommercialAtKeyword_3_2_2_2 = (Keyword)cGroup_3_2_2.eContents().get(2);
		private final Assignment cDomainObjectTypeAssignment_3_2_2_3 = (Assignment)cGroup_3_2_2.eContents().get(3);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_2_3_0 = (CrossReference)cDomainObjectTypeAssignment_3_2_2_3.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_2_3_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_2_3_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_3_2_2_4 = (Keyword)cGroup_3_2_2.eContents().get(4);
		private final Keyword cGreaterThanSignKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
		private final Group cGroup_4 = (Group)cAlternatives.eContents().get(4);
		private final Assignment cMapCollectionTypeAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cMapCollectionTypeMAP_COLLECTION_TYPETerminalRuleCall_4_0_0 = (RuleCall)cMapCollectionTypeAssignment_4_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Alternatives cAlternatives_4_2 = (Alternatives)cGroup_4.eContents().get(2);
		private final Assignment cMapKeyTypeAssignment_4_2_0 = (Assignment)cAlternatives_4_2.eContents().get(0);
		private final RuleCall cMapKeyTypeTypeParserRuleCall_4_2_0_0 = (RuleCall)cMapKeyTypeAssignment_4_2_0.eContents().get(0);
		private final Group cGroup_4_2_1 = (Group)cAlternatives_4_2.eContents().get(1);
		private final Keyword cCommercialAtKeyword_4_2_1_0 = (Keyword)cGroup_4_2_1.eContents().get(0);
		private final Assignment cMapKeyDomainObjectTypeAssignment_4_2_1_1 = (Assignment)cGroup_4_2_1.eContents().get(1);
		private final CrossReference cMapKeyDomainObjectTypeSimpleDomainObjectCrossReference_4_2_1_1_0 = (CrossReference)cMapKeyDomainObjectTypeAssignment_4_2_1_1.eContents().get(0);
		private final RuleCall cMapKeyDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_2_1_1_0_1 = (RuleCall)cMapKeyDomainObjectTypeSimpleDomainObjectCrossReference_4_2_1_1_0.eContents().get(1);
		private final Keyword cCommaKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final Alternatives cAlternatives_4_4 = (Alternatives)cGroup_4.eContents().get(4);
		private final Group cGroup_4_4_0 = (Group)cAlternatives_4_4.eContents().get(0);
		private final Keyword cCommercialAtKeyword_4_4_0_0 = (Keyword)cGroup_4_4_0.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_4_4_0_1 = (Assignment)cGroup_4_4_0.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_0_1_0 = (CrossReference)cDomainObjectTypeAssignment_4_4_0_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_0_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_0_1_0.eContents().get(1);
		private final Assignment cTypeAssignment_4_4_1 = (Assignment)cAlternatives_4_4.eContents().get(1);
		private final RuleCall cTypeTypeParserRuleCall_4_4_1_0 = (RuleCall)cTypeAssignment_4_4_1.eContents().get(0);
		private final Group cGroup_4_4_2 = (Group)cAlternatives_4_4.eContents().get(2);
		private final Assignment cTypeAssignment_4_4_2_0 = (Assignment)cGroup_4_4_2.eContents().get(0);
		private final RuleCall cTypeTypeParserRuleCall_4_4_2_0_0 = (RuleCall)cTypeAssignment_4_4_2_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_4_4_2_1 = (Keyword)cGroup_4_4_2.eContents().get(1);
		private final Keyword cCommercialAtKeyword_4_4_2_2 = (Keyword)cGroup_4_4_2.eContents().get(2);
		private final Assignment cDomainObjectTypeAssignment_4_4_2_3 = (Assignment)cGroup_4_4_2.eContents().get(3);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_2_3_0 = (CrossReference)cDomainObjectTypeAssignment_4_4_2_3.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_2_3_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_2_3_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_4_4_2_4 = (Keyword)cGroup_4_4_2.eContents().get(4);
		private final Keyword cGreaterThanSignKeyword_4_5 = (Keyword)cGroup_4.eContents().get(5);
		
		//ComplexType:
		//	type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">" | "@" domainObjectType=[SimpleDomainObject] |
		//	collectionType=CollectionType "<" ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@"
		//	domainObjectType=[SimpleDomainObject] ">") ">" | mapCollectionType=MAP_COLLECTION_TYPE "<" (mapKeyType=Type | "@"
		//	mapKeyDomainObjectType=[SimpleDomainObject]) "," ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type
		//	"<" "@" domainObjectType=[SimpleDomainObject] ">") ">";
		@Override public ParserRule getRule() { return rule; }
		
		//type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">" | "@" domainObjectType=[SimpleDomainObject] |
		//collectionType=CollectionType "<" ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@"
		//domainObjectType=[SimpleDomainObject] ">") ">" | mapCollectionType=MAP_COLLECTION_TYPE "<" (mapKeyType=Type | "@"
		//mapKeyDomainObjectType=[SimpleDomainObject]) "," ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<"
		//"@" domainObjectType=[SimpleDomainObject] ">") ">"
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//type=Type
		public Assignment getTypeAssignment_0() { return cTypeAssignment_0; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_0_0() { return cTypeTypeParserRuleCall_0_0; }
		
		//type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">"
		public Group getGroup_1() { return cGroup_1; }
		
		//type=Type
		public Assignment getTypeAssignment_1_0() { return cTypeAssignment_1_0; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_1_0_0() { return cTypeTypeParserRuleCall_1_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_1_1() { return cLessThanSignKeyword_1_1; }
		
		//"@"
		public Keyword getCommercialAtKeyword_1_2() { return cCommercialAtKeyword_1_2; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_1_3() { return cDomainObjectTypeAssignment_1_3; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_1_3_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_1_3_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_1_3_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_1_3_0_1; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_1_4() { return cGreaterThanSignKeyword_1_4; }
		
		//"@" domainObjectType=[SimpleDomainObject]
		public Group getGroup_2() { return cGroup_2; }
		
		//"@"
		public Keyword getCommercialAtKeyword_2_0() { return cCommercialAtKeyword_2_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_2_1() { return cDomainObjectTypeAssignment_2_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_2_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_2_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_2_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_2_1_0_1; }
		
		//collectionType=CollectionType "<" ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@"
		//domainObjectType=[SimpleDomainObject] ">") ">"
		public Group getGroup_3() { return cGroup_3; }
		
		//collectionType=CollectionType
		public Assignment getCollectionTypeAssignment_3_0() { return cCollectionTypeAssignment_3_0; }
		
		//CollectionType
		public RuleCall getCollectionTypeCollectionTypeEnumRuleCall_3_0_0() { return cCollectionTypeCollectionTypeEnumRuleCall_3_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_3_1() { return cLessThanSignKeyword_3_1; }
		
		//("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">")
		public Alternatives getAlternatives_3_2() { return cAlternatives_3_2; }
		
		//"@" domainObjectType=[SimpleDomainObject]
		public Group getGroup_3_2_0() { return cGroup_3_2_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_3_2_0_0() { return cCommercialAtKeyword_3_2_0_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_3_2_0_1() { return cDomainObjectTypeAssignment_3_2_0_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_3_2_0_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_0_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_0_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_0_1_0_1; }
		
		//type=Type
		public Assignment getTypeAssignment_3_2_1() { return cTypeAssignment_3_2_1; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_3_2_1_0() { return cTypeTypeParserRuleCall_3_2_1_0; }
		
		//type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">"
		public Group getGroup_3_2_2() { return cGroup_3_2_2; }
		
		//type=Type
		public Assignment getTypeAssignment_3_2_2_0() { return cTypeAssignment_3_2_2_0; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_3_2_2_0_0() { return cTypeTypeParserRuleCall_3_2_2_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_3_2_2_1() { return cLessThanSignKeyword_3_2_2_1; }
		
		//"@"
		public Keyword getCommercialAtKeyword_3_2_2_2() { return cCommercialAtKeyword_3_2_2_2; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_3_2_2_3() { return cDomainObjectTypeAssignment_3_2_2_3; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_3_2_2_3_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_3_2_2_3_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_2_3_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_2_2_3_0_1; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_3_2_2_4() { return cGreaterThanSignKeyword_3_2_2_4; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_3_3() { return cGreaterThanSignKeyword_3_3; }
		
		//mapCollectionType=MAP_COLLECTION_TYPE "<" (mapKeyType=Type | "@" mapKeyDomainObjectType=[SimpleDomainObject]) "," ("@"
		//domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">") ">"
		public Group getGroup_4() { return cGroup_4; }
		
		//mapCollectionType=MAP_COLLECTION_TYPE
		public Assignment getMapCollectionTypeAssignment_4_0() { return cMapCollectionTypeAssignment_4_0; }
		
		//MAP_COLLECTION_TYPE
		public RuleCall getMapCollectionTypeMAP_COLLECTION_TYPETerminalRuleCall_4_0_0() { return cMapCollectionTypeMAP_COLLECTION_TYPETerminalRuleCall_4_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_4_1() { return cLessThanSignKeyword_4_1; }
		
		//(mapKeyType=Type | "@" mapKeyDomainObjectType=[SimpleDomainObject])
		public Alternatives getAlternatives_4_2() { return cAlternatives_4_2; }
		
		//mapKeyType=Type
		public Assignment getMapKeyTypeAssignment_4_2_0() { return cMapKeyTypeAssignment_4_2_0; }
		
		//Type
		public RuleCall getMapKeyTypeTypeParserRuleCall_4_2_0_0() { return cMapKeyTypeTypeParserRuleCall_4_2_0_0; }
		
		//"@" mapKeyDomainObjectType=[SimpleDomainObject]
		public Group getGroup_4_2_1() { return cGroup_4_2_1; }
		
		//"@"
		public Keyword getCommercialAtKeyword_4_2_1_0() { return cCommercialAtKeyword_4_2_1_0; }
		
		//mapKeyDomainObjectType=[SimpleDomainObject]
		public Assignment getMapKeyDomainObjectTypeAssignment_4_2_1_1() { return cMapKeyDomainObjectTypeAssignment_4_2_1_1; }
		
		//[SimpleDomainObject]
		public CrossReference getMapKeyDomainObjectTypeSimpleDomainObjectCrossReference_4_2_1_1_0() { return cMapKeyDomainObjectTypeSimpleDomainObjectCrossReference_4_2_1_1_0; }
		
		//ID
		public RuleCall getMapKeyDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_2_1_1_0_1() { return cMapKeyDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_2_1_1_0_1; }
		
		//","
		public Keyword getCommaKeyword_4_3() { return cCommaKeyword_4_3; }
		
		//("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">")
		public Alternatives getAlternatives_4_4() { return cAlternatives_4_4; }
		
		//"@" domainObjectType=[SimpleDomainObject]
		public Group getGroup_4_4_0() { return cGroup_4_4_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_4_4_0_0() { return cCommercialAtKeyword_4_4_0_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_4_4_0_1() { return cDomainObjectTypeAssignment_4_4_0_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_4_4_0_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_0_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_0_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_0_1_0_1; }
		
		//type=Type
		public Assignment getTypeAssignment_4_4_1() { return cTypeAssignment_4_4_1; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_4_4_1_0() { return cTypeTypeParserRuleCall_4_4_1_0; }
		
		//type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">"
		public Group getGroup_4_4_2() { return cGroup_4_4_2; }
		
		//type=Type
		public Assignment getTypeAssignment_4_4_2_0() { return cTypeAssignment_4_4_2_0; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_4_4_2_0_0() { return cTypeTypeParserRuleCall_4_4_2_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_4_4_2_1() { return cLessThanSignKeyword_4_4_2_1; }
		
		//"@"
		public Keyword getCommercialAtKeyword_4_4_2_2() { return cCommercialAtKeyword_4_4_2_2; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_4_4_2_3() { return cDomainObjectTypeAssignment_4_4_2_3; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_4_4_2_3_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_4_4_2_3_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_2_3_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_4_2_3_0_1; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_4_4_2_4() { return cGreaterThanSignKeyword_4_4_2_4; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_4_5() { return cGreaterThanSignKeyword_4_5; }
	}
	public class SimpleDomainObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.SimpleDomainObject");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cBasicTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cEnumParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cDomainObjectParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cDataTransferObjectParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cTraitParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//SimpleDomainObject:
		//	BasicType | Enum | DomainObject | DataTransferObject | Trait;
		@Override public ParserRule getRule() { return rule; }
		
		//BasicType | Enum | DomainObject | DataTransferObject | Trait
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//BasicType
		public RuleCall getBasicTypeParserRuleCall_0() { return cBasicTypeParserRuleCall_0; }
		
		//Enum
		public RuleCall getEnumParserRuleCall_1() { return cEnumParserRuleCall_1; }
		
		//DomainObject
		public RuleCall getDomainObjectParserRuleCall_2() { return cDomainObjectParserRuleCall_2; }
		
		//DataTransferObject
		public RuleCall getDataTransferObjectParserRuleCall_3() { return cDataTransferObjectParserRuleCall_3; }
		
		//Trait
		public RuleCall getTraitParserRuleCall_4() { return cTraitParserRuleCall_4; }
	}
	public class DomainObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DomainObject");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cEntityParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cValueObjectParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//DomainObject:
		//	Entity | ValueObject | Event;
		@Override public ParserRule getRule() { return rule; }
		
		//Entity | ValueObject | Event
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Entity
		public RuleCall getEntityParserRuleCall_0() { return cEntityParserRuleCall_0; }
		
		//ValueObject
		public RuleCall getValueObjectParserRuleCall_1() { return cValueObjectParserRuleCall_1; }
		
		//Event
		public RuleCall getEventParserRuleCall_2() { return cEventParserRuleCall_2; }
	}
	public class EntityElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Entity");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Keyword cEntityKeyword_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 cExtendsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Keyword cCommercialAtKeyword_5_1_0_0 = (Keyword)cGroup_5_1_0.eContents().get(0);
		private final Assignment cExtendsAssignment_5_1_0_1 = (Assignment)cGroup_5_1_0.eContents().get(1);
		private final CrossReference cExtendsEntityCrossReference_5_1_0_1_0 = (CrossReference)cExtendsAssignment_5_1_0_1.eContents().get(0);
		private final RuleCall cExtendsEntityIDTerminalRuleCall_5_1_0_1_0_1 = (RuleCall)cExtendsEntityCrossReference_5_1_0_1_0.eContents().get(1);
		private final Assignment cExtendsNameAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0 = (RuleCall)cExtendsNameAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cWithKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cCommercialAtKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cTraitsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cTraitsTraitCrossReference_6_2_0 = (CrossReference)cTraitsAssignment_6_2.eContents().get(0);
		private final RuleCall cTraitsTraitIDTerminalRuleCall_6_2_0_1 = (RuleCall)cTraitsTraitCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cGroup_7.eContents().get(1);
		private final Keyword cPackageKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1_1 = (Keyword)cGroup_7_1.eContents().get(1);
		private final Assignment cPackageAssignment_7_1_2 = (Assignment)cGroup_7_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_7_1_2_0 = (RuleCall)cPackageAssignment_7_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_7_2 = (UnorderedGroup)cGroup_7.eContents().get(2);
		private final Alternatives cAlternatives_7_2_0 = (Alternatives)cUnorderedGroup_7_2.eContents().get(0);
		private final Group cGroup_7_2_0_0 = (Group)cAlternatives_7_2_0.eContents().get(0);
		private final Assignment cNotOptimisticLockingAssignment_7_2_0_0_0 = (Assignment)cGroup_7_2_0_0.eContents().get(0);
		private final RuleCall cNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0 = (RuleCall)cNotOptimisticLockingAssignment_7_2_0_0_0.eContents().get(0);
		private final Keyword cOptimisticLockingKeyword_7_2_0_0_1 = (Keyword)cGroup_7_2_0_0.eContents().get(1);
		private final Keyword cOptimisticLockingKeyword_7_2_0_1 = (Keyword)cAlternatives_7_2_0.eContents().get(1);
		private final Alternatives cAlternatives_7_2_1 = (Alternatives)cUnorderedGroup_7_2.eContents().get(1);
		private final Group cGroup_7_2_1_0 = (Group)cAlternatives_7_2_1.eContents().get(0);
		private final Assignment cNotAuditableAssignment_7_2_1_0_0 = (Assignment)cGroup_7_2_1_0.eContents().get(0);
		private final RuleCall cNotAuditableNOTTerminalRuleCall_7_2_1_0_0_0 = (RuleCall)cNotAuditableAssignment_7_2_1_0_0.eContents().get(0);
		private final Keyword cAuditableKeyword_7_2_1_0_1 = (Keyword)cGroup_7_2_1_0.eContents().get(1);
		private final Keyword cAuditableKeyword_7_2_1_1 = (Keyword)cAlternatives_7_2_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_2 = (Alternatives)cUnorderedGroup_7_2.eContents().get(2);
		private final Assignment cCacheAssignment_7_2_2_0 = (Assignment)cAlternatives_7_2_2.eContents().get(0);
		private final Keyword cCacheCacheKeyword_7_2_2_0_0 = (Keyword)cCacheAssignment_7_2_2_0.eContents().get(0);
		private final Group cGroup_7_2_2_1 = (Group)cAlternatives_7_2_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_2_2_1_0 = (RuleCall)cGroup_7_2_2_1.eContents().get(0);
		private final Keyword cCacheKeyword_7_2_2_1_1 = (Keyword)cGroup_7_2_2_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_3 = (Alternatives)cUnorderedGroup_7_2.eContents().get(3);
		private final Assignment cGapClassAssignment_7_2_3_0 = (Assignment)cAlternatives_7_2_3.eContents().get(0);
		private final Keyword cGapClassGapKeyword_7_2_3_0_0 = (Keyword)cGapClassAssignment_7_2_3_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_7_2_3_1 = (Assignment)cAlternatives_7_2_3.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_7_2_3_1_0 = (Keyword)cNoGapClassAssignment_7_2_3_1.eContents().get(0);
		private final Assignment cScaffoldAssignment_7_2_4 = (Assignment)cUnorderedGroup_7_2.eContents().get(4);
		private final Keyword cScaffoldScaffoldKeyword_7_2_4_0 = (Keyword)cScaffoldAssignment_7_2_4.eContents().get(0);
		private final Group cGroup_7_2_5 = (Group)cUnorderedGroup_7_2.eContents().get(5);
		private final Keyword cHintKeyword_7_2_5_0 = (Keyword)cGroup_7_2_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_5_1 = (Keyword)cGroup_7_2_5.eContents().get(1);
		private final Assignment cHintAssignment_7_2_5_2 = (Assignment)cGroup_7_2_5.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_2_5_2_0 = (RuleCall)cHintAssignment_7_2_5_2.eContents().get(0);
		private final Group cGroup_7_2_6 = (Group)cUnorderedGroup_7_2.eContents().get(6);
		private final Keyword cDatabaseTableKeyword_7_2_6_0 = (Keyword)cGroup_7_2_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_6_1 = (Keyword)cGroup_7_2_6.eContents().get(1);
		private final Assignment cDatabaseTableAssignment_7_2_6_2 = (Assignment)cGroup_7_2_6.eContents().get(2);
		private final RuleCall cDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0 = (RuleCall)cDatabaseTableAssignment_7_2_6_2.eContents().get(0);
		private final Group cGroup_7_2_7 = (Group)cUnorderedGroup_7_2.eContents().get(7);
		private final Keyword cDiscriminatorValueKeyword_7_2_7_0 = (Keyword)cGroup_7_2_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_7_1 = (Keyword)cGroup_7_2_7.eContents().get(1);
		private final Assignment cDiscriminatorValueAssignment_7_2_7_2 = (Assignment)cGroup_7_2_7.eContents().get(2);
		private final RuleCall cDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0 = (RuleCall)cDiscriminatorValueAssignment_7_2_7_2.eContents().get(0);
		private final Group cGroup_7_2_8 = (Group)cUnorderedGroup_7_2.eContents().get(8);
		private final Keyword cDiscriminatorColumnKeyword_7_2_8_0 = (Keyword)cGroup_7_2_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_8_1 = (Keyword)cGroup_7_2_8.eContents().get(1);
		private final Assignment cDiscriminatorColumnAssignment_7_2_8_2 = (Assignment)cGroup_7_2_8.eContents().get(2);
		private final RuleCall cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0 = (RuleCall)cDiscriminatorColumnAssignment_7_2_8_2.eContents().get(0);
		private final Group cGroup_7_2_9 = (Group)cUnorderedGroup_7_2.eContents().get(9);
		private final Keyword cDiscriminatorTypeKeyword_7_2_9_0 = (Keyword)cGroup_7_2_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_9_1 = (Keyword)cGroup_7_2_9.eContents().get(1);
		private final Assignment cDiscriminatorTypeAssignment_7_2_9_2 = (Assignment)cGroup_7_2_9.eContents().get(2);
		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0 = (RuleCall)cDiscriminatorTypeAssignment_7_2_9_2.eContents().get(0);
		private final Group cGroup_7_2_10 = (Group)cUnorderedGroup_7_2.eContents().get(10);
		private final Keyword cDiscriminatorLengthKeyword_7_2_10_0 = (Keyword)cGroup_7_2_10.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_10_1 = (Keyword)cGroup_7_2_10.eContents().get(1);
		private final Assignment cDiscriminatorLengthAssignment_7_2_10_2 = (Assignment)cGroup_7_2_10.eContents().get(2);
		private final RuleCall cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0 = (RuleCall)cDiscriminatorLengthAssignment_7_2_10_2.eContents().get(0);
		private final Group cGroup_7_2_11 = (Group)cUnorderedGroup_7_2.eContents().get(11);
		private final Keyword cInheritanceTypeKeyword_7_2_11_0 = (Keyword)cGroup_7_2_11.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_11_1 = (Keyword)cGroup_7_2_11.eContents().get(1);
		private final Assignment cInheritanceTypeAssignment_7_2_11_2 = (Assignment)cGroup_7_2_11.eContents().get(2);
		private final RuleCall cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0 = (RuleCall)cInheritanceTypeAssignment_7_2_11_2.eContents().get(0);
		private final Group cGroup_7_2_12 = (Group)cUnorderedGroup_7_2.eContents().get(12);
		private final Keyword cValidateKeyword_7_2_12_0 = (Keyword)cGroup_7_2_12.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_12_1 = (Keyword)cGroup_7_2_12.eContents().get(1);
		private final Assignment cValidateAssignment_7_2_12_2 = (Assignment)cGroup_7_2_12.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_7_2_12_2_0 = (RuleCall)cValidateAssignment_7_2_12_2.eContents().get(0);
		private final Assignment cAggregateRootAssignment_7_2_13 = (Assignment)cUnorderedGroup_7_2.eContents().get(13);
		private final Keyword cAggregateRootAggregateRootKeyword_7_2_13_0 = (Keyword)cAggregateRootAssignment_7_2_13.eContents().get(0);
		private final Group cGroup_7_2_14 = (Group)cUnorderedGroup_7_2.eContents().get(14);
		private final Keyword cBelongsToKeyword_7_2_14_0 = (Keyword)cGroup_7_2_14.eContents().get(0);
		private final Group cGroup_7_2_14_1 = (Group)cGroup_7_2_14.eContents().get(1);
		private final Keyword cCommercialAtKeyword_7_2_14_1_0 = (Keyword)cGroup_7_2_14_1.eContents().get(0);
		private final Assignment cBelongsToAssignment_7_2_14_1_1 = (Assignment)cGroup_7_2_14_1.eContents().get(1);
		private final CrossReference cBelongsToDomainObjectCrossReference_7_2_14_1_1_0 = (CrossReference)cBelongsToAssignment_7_2_14_1_1.eContents().get(0);
		private final RuleCall cBelongsToDomainObjectIDTerminalRuleCall_7_2_14_1_1_0_1 = (RuleCall)cBelongsToDomainObjectCrossReference_7_2_14_1_1_0.eContents().get(1);
		private final Alternatives cAlternatives_7_3 = (Alternatives)cGroup_7.eContents().get(3);
		private final Assignment cAttributesAssignment_7_3_0 = (Assignment)cAlternatives_7_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_7_3_0_0 = (RuleCall)cAttributesAssignment_7_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_7_3_1 = (Assignment)cAlternatives_7_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_7_3_1_0 = (RuleCall)cReferencesAssignment_7_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_7_3_2 = (Assignment)cAlternatives_7_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_7_3_2_0 = (RuleCall)cOperationsAssignment_7_3_2.eContents().get(0);
		private final Assignment cRepositoryAssignment_7_4 = (Assignment)cGroup_7.eContents().get(4);
		private final RuleCall cRepositoryRepositoryParserRuleCall_7_4_0 = (RuleCall)cRepositoryAssignment_7_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_5 = (Keyword)cGroup_7.eContents().get(5);
		
		//Entity:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	abstract?="abstract"? "Entity" name=ID ("extends" ("@" extends=[Entity] | extendsName=JavaIdentifier))? ("with" "@"?
		//	traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT "optimisticLocking" |
		//	"optimisticLocking")? & (notAuditable?=NOT "auditable" | "auditable")? & (cache?="cache" | NOT "cache")? &
		//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
		//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
		//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
		//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//	validate=STRING)? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//	repository=Repository?
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? abstract?="abstract"? "Entity" name=ID ("extends" ("@" extends=[Entity] |
		//extendsName=JavaIdentifier))? ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)?
		//((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? & (notAuditable?=NOT "auditable" |
		//"auditable")? & (cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? &
		//("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "="
		//discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & aggregateRoot?="aggregateRoot"? &
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference |
		//operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//"Entity"
		public Keyword getEntityKeyword_3() { return cEntityKeyword_3; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//("extends" ("@" extends=[Entity] | extendsName=JavaIdentifier))?
		public Group getGroup_5() { return cGroup_5; }
		
		//"extends"
		public Keyword getExtendsKeyword_5_0() { return cExtendsKeyword_5_0; }
		
		//("@" extends=[Entity] | extendsName=JavaIdentifier)
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//"@" extends=[Entity]
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_5_1_0_0() { return cCommercialAtKeyword_5_1_0_0; }
		
		//extends=[Entity]
		public Assignment getExtendsAssignment_5_1_0_1() { return cExtendsAssignment_5_1_0_1; }
		
		//[Entity]
		public CrossReference getExtendsEntityCrossReference_5_1_0_1_0() { return cExtendsEntityCrossReference_5_1_0_1_0; }
		
		//ID
		public RuleCall getExtendsEntityIDTerminalRuleCall_5_1_0_1_0_1() { return cExtendsEntityIDTerminalRuleCall_5_1_0_1_0_1; }
		
		//extendsName=JavaIdentifier
		public Assignment getExtendsNameAssignment_5_1_1() { return cExtendsNameAssignment_5_1_1; }
		
		//JavaIdentifier
		public RuleCall getExtendsNameJavaIdentifierParserRuleCall_5_1_1_0() { return cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0; }
		
		//("with" "@"? traits+=[Trait])*
		public Group getGroup_6() { return cGroup_6; }
		
		//"with"
		public Keyword getWithKeyword_6_0() { return cWithKeyword_6_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_6_1() { return cCommercialAtKeyword_6_1; }
		
		//traits+=[Trait]
		public Assignment getTraitsAssignment_6_2() { return cTraitsAssignment_6_2; }
		
		//[Trait]
		public CrossReference getTraitsTraitCrossReference_6_2_0() { return cTraitsTraitCrossReference_6_2_0; }
		
		//ID
		public RuleCall getTraitsTraitIDTerminalRuleCall_6_2_0_1() { return cTraitsTraitIDTerminalRuleCall_6_2_0_1; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? &
		//(notAuditable?=NOT "auditable" | "auditable")? & (cache?="cache" | NOT "cache")? & (gapClass?="gap" |
		//noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)?
		//& ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? &
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength" "="
		//discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//validate=STRING)? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup_7() { return cGroup_7; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//"package"
		public Keyword getPackageKeyword_7_1_0() { return cPackageKeyword_7_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_1_1() { return cEqualsSignKeyword_7_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_7_1_2() { return cPackageAssignment_7_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_7_1_2_0() { return cPackageJavaIdentifierParserRuleCall_7_1_2_0; }
		
		//((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? & (notAuditable?=NOT "auditable" | "auditable")?
		//& (cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & aggregateRoot?="aggregateRoot"? &
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		public UnorderedGroup getUnorderedGroup_7_2() { return cUnorderedGroup_7_2; }
		
		//(notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")?
		public Alternatives getAlternatives_7_2_0() { return cAlternatives_7_2_0; }
		
		//notOptimisticLocking?=NOT "optimisticLocking"
		public Group getGroup_7_2_0_0() { return cGroup_7_2_0_0; }
		
		//notOptimisticLocking?=NOT
		public Assignment getNotOptimisticLockingAssignment_7_2_0_0_0() { return cNotOptimisticLockingAssignment_7_2_0_0_0; }
		
		//NOT
		public RuleCall getNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0() { return cNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0; }
		
		//"optimisticLocking"
		public Keyword getOptimisticLockingKeyword_7_2_0_0_1() { return cOptimisticLockingKeyword_7_2_0_0_1; }
		
		//"optimisticLocking"
		public Keyword getOptimisticLockingKeyword_7_2_0_1() { return cOptimisticLockingKeyword_7_2_0_1; }
		
		//(notAuditable?=NOT "auditable" | "auditable")?
		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
		
		//notAuditable?=NOT "auditable"
		public Group getGroup_7_2_1_0() { return cGroup_7_2_1_0; }
		
		//notAuditable?=NOT
		public Assignment getNotAuditableAssignment_7_2_1_0_0() { return cNotAuditableAssignment_7_2_1_0_0; }
		
		//NOT
		public RuleCall getNotAuditableNOTTerminalRuleCall_7_2_1_0_0_0() { return cNotAuditableNOTTerminalRuleCall_7_2_1_0_0_0; }
		
		//"auditable"
		public Keyword getAuditableKeyword_7_2_1_0_1() { return cAuditableKeyword_7_2_1_0_1; }
		
		//"auditable"
		public Keyword getAuditableKeyword_7_2_1_1() { return cAuditableKeyword_7_2_1_1; }
		
		//(cache?="cache" | NOT "cache")?
		public Alternatives getAlternatives_7_2_2() { return cAlternatives_7_2_2; }
		
		//cache?="cache"
		public Assignment getCacheAssignment_7_2_2_0() { return cCacheAssignment_7_2_2_0; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_7_2_2_0_0() { return cCacheCacheKeyword_7_2_2_0_0; }
		
		//NOT "cache"
		public Group getGroup_7_2_2_1() { return cGroup_7_2_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_2_2_1_0() { return cNOTTerminalRuleCall_7_2_2_1_0; }
		
		//"cache"
		public Keyword getCacheKeyword_7_2_2_1_1() { return cCacheKeyword_7_2_2_1_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_7_2_3() { return cAlternatives_7_2_3; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_7_2_3_0() { return cGapClassAssignment_7_2_3_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_7_2_3_0_0() { return cGapClassGapKeyword_7_2_3_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_7_2_3_1() { return cNoGapClassAssignment_7_2_3_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_7_2_3_1_0() { return cNoGapClassNogapKeyword_7_2_3_1_0; }
		
		//scaffold?="scaffold"?
		public Assignment getScaffoldAssignment_7_2_4() { return cScaffoldAssignment_7_2_4; }
		
		//"scaffold"
		public Keyword getScaffoldScaffoldKeyword_7_2_4_0() { return cScaffoldScaffoldKeyword_7_2_4_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_2_5() { return cGroup_7_2_5; }
		
		//"hint"
		public Keyword getHintKeyword_7_2_5_0() { return cHintKeyword_7_2_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_5_1() { return cEqualsSignKeyword_7_2_5_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_2_5_2() { return cHintAssignment_7_2_5_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_2_5_2_0() { return cHintSTRINGTerminalRuleCall_7_2_5_2_0; }
		
		//("databaseTable" "=" databaseTable=STRING)?
		public Group getGroup_7_2_6() { return cGroup_7_2_6; }
		
		//"databaseTable"
		public Keyword getDatabaseTableKeyword_7_2_6_0() { return cDatabaseTableKeyword_7_2_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_6_1() { return cEqualsSignKeyword_7_2_6_1; }
		
		//databaseTable=STRING
		public Assignment getDatabaseTableAssignment_7_2_6_2() { return cDatabaseTableAssignment_7_2_6_2; }
		
		//STRING
		public RuleCall getDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0() { return cDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0; }
		
		//("discriminatorValue" "=" discriminatorValue=STRING)?
		public Group getGroup_7_2_7() { return cGroup_7_2_7; }
		
		//"discriminatorValue"
		public Keyword getDiscriminatorValueKeyword_7_2_7_0() { return cDiscriminatorValueKeyword_7_2_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_7_1() { return cEqualsSignKeyword_7_2_7_1; }
		
		//discriminatorValue=STRING
		public Assignment getDiscriminatorValueAssignment_7_2_7_2() { return cDiscriminatorValueAssignment_7_2_7_2; }
		
		//STRING
		public RuleCall getDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0() { return cDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0; }
		
		//("discriminatorColumn" "=" discriminatorColumn=STRING)?
		public Group getGroup_7_2_8() { return cGroup_7_2_8; }
		
		//"discriminatorColumn"
		public Keyword getDiscriminatorColumnKeyword_7_2_8_0() { return cDiscriminatorColumnKeyword_7_2_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_8_1() { return cEqualsSignKeyword_7_2_8_1; }
		
		//discriminatorColumn=STRING
		public Assignment getDiscriminatorColumnAssignment_7_2_8_2() { return cDiscriminatorColumnAssignment_7_2_8_2; }
		
		//STRING
		public RuleCall getDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0() { return cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0; }
		
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)?
		public Group getGroup_7_2_9() { return cGroup_7_2_9; }
		
		//"discriminatorType"
		public Keyword getDiscriminatorTypeKeyword_7_2_9_0() { return cDiscriminatorTypeKeyword_7_2_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_9_1() { return cEqualsSignKeyword_7_2_9_1; }
		
		//discriminatorType=DiscriminatorType
		public Assignment getDiscriminatorTypeAssignment_7_2_9_2() { return cDiscriminatorTypeAssignment_7_2_9_2; }
		
		//DiscriminatorType
		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0; }
		
		//("discriminatorLength" "=" discriminatorLength=STRING)?
		public Group getGroup_7_2_10() { return cGroup_7_2_10; }
		
		//"discriminatorLength"
		public Keyword getDiscriminatorLengthKeyword_7_2_10_0() { return cDiscriminatorLengthKeyword_7_2_10_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_10_1() { return cEqualsSignKeyword_7_2_10_1; }
		
		//discriminatorLength=STRING
		public Assignment getDiscriminatorLengthAssignment_7_2_10_2() { return cDiscriminatorLengthAssignment_7_2_10_2; }
		
		//STRING
		public RuleCall getDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0() { return cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0; }
		
		//("inheritanceType" "=" inheritanceType=InheritanceType)?
		public Group getGroup_7_2_11() { return cGroup_7_2_11; }
		
		//"inheritanceType"
		public Keyword getInheritanceTypeKeyword_7_2_11_0() { return cInheritanceTypeKeyword_7_2_11_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_11_1() { return cEqualsSignKeyword_7_2_11_1; }
		
		//inheritanceType=InheritanceType
		public Assignment getInheritanceTypeAssignment_7_2_11_2() { return cInheritanceTypeAssignment_7_2_11_2; }
		
		//InheritanceType
		public RuleCall getInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0() { return cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_7_2_12() { return cGroup_7_2_12; }
		
		//"validate"
		public Keyword getValidateKeyword_7_2_12_0() { return cValidateKeyword_7_2_12_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_12_1() { return cEqualsSignKeyword_7_2_12_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_7_2_12_2() { return cValidateAssignment_7_2_12_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_7_2_12_2_0() { return cValidateSTRINGTerminalRuleCall_7_2_12_2_0; }
		
		//aggregateRoot?="aggregateRoot"?
		public Assignment getAggregateRootAssignment_7_2_13() { return cAggregateRootAssignment_7_2_13; }
		
		//"aggregateRoot"
		public Keyword getAggregateRootAggregateRootKeyword_7_2_13_0() { return cAggregateRootAggregateRootKeyword_7_2_13_0; }
		
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?
		public Group getGroup_7_2_14() { return cGroup_7_2_14; }
		
		//"belongsTo"
		public Keyword getBelongsToKeyword_7_2_14_0() { return cBelongsToKeyword_7_2_14_0; }
		
		//("@"? belongsTo=[DomainObject])
		public Group getGroup_7_2_14_1() { return cGroup_7_2_14_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_7_2_14_1_0() { return cCommercialAtKeyword_7_2_14_1_0; }
		
		//belongsTo=[DomainObject]
		public Assignment getBelongsToAssignment_7_2_14_1_1() { return cBelongsToAssignment_7_2_14_1_1; }
		
		//[DomainObject]
		public CrossReference getBelongsToDomainObjectCrossReference_7_2_14_1_1_0() { return cBelongsToDomainObjectCrossReference_7_2_14_1_1_0; }
		
		//ID
		public RuleCall getBelongsToDomainObjectIDTerminalRuleCall_7_2_14_1_1_0_1() { return cBelongsToDomainObjectIDTerminalRuleCall_7_2_14_1_1_0_1; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_7_3() { return cAlternatives_7_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_7_3_0() { return cAttributesAssignment_7_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_7_3_0_0() { return cAttributesAttributeParserRuleCall_7_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_7_3_1() { return cReferencesAssignment_7_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_7_3_1_0() { return cReferencesReferenceParserRuleCall_7_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_7_3_2() { return cOperationsAssignment_7_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_7_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_7_3_2_0; }
		
		//repository=Repository?
		public Assignment getRepositoryAssignment_7_4() { return cRepositoryAssignment_7_4; }
		
		//Repository
		public RuleCall getRepositoryRepositoryParserRuleCall_7_4_0() { return cRepositoryRepositoryParserRuleCall_7_4_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_7_5() { return cRightCurlyBracketKeyword_7_5; }
	}
	public class ValueObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ValueObject");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Keyword cValueObjectKeyword_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 cExtendsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Keyword cCommercialAtKeyword_5_1_0_0 = (Keyword)cGroup_5_1_0.eContents().get(0);
		private final Assignment cExtendsAssignment_5_1_0_1 = (Assignment)cGroup_5_1_0.eContents().get(1);
		private final CrossReference cExtendsValueObjectCrossReference_5_1_0_1_0 = (CrossReference)cExtendsAssignment_5_1_0_1.eContents().get(0);
		private final RuleCall cExtendsValueObjectIDTerminalRuleCall_5_1_0_1_0_1 = (RuleCall)cExtendsValueObjectCrossReference_5_1_0_1_0.eContents().get(1);
		private final Assignment cExtendsNameAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0 = (RuleCall)cExtendsNameAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cWithKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cCommercialAtKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cTraitsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cTraitsTraitCrossReference_6_2_0 = (CrossReference)cTraitsAssignment_6_2.eContents().get(0);
		private final RuleCall cTraitsTraitIDTerminalRuleCall_6_2_0_1 = (RuleCall)cTraitsTraitCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cGroup_7.eContents().get(1);
		private final Keyword cPackageKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1_1 = (Keyword)cGroup_7_1.eContents().get(1);
		private final Assignment cPackageAssignment_7_1_2 = (Assignment)cGroup_7_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_7_1_2_0 = (RuleCall)cPackageAssignment_7_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_7_2 = (UnorderedGroup)cGroup_7.eContents().get(2);
		private final Alternatives cAlternatives_7_2_0 = (Alternatives)cUnorderedGroup_7_2.eContents().get(0);
		private final Group cGroup_7_2_0_0 = (Group)cAlternatives_7_2_0.eContents().get(0);
		private final Assignment cNotOptimisticLockingAssignment_7_2_0_0_0 = (Assignment)cGroup_7_2_0_0.eContents().get(0);
		private final RuleCall cNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0 = (RuleCall)cNotOptimisticLockingAssignment_7_2_0_0_0.eContents().get(0);
		private final Keyword cOptimisticLockingKeyword_7_2_0_0_1 = (Keyword)cGroup_7_2_0_0.eContents().get(1);
		private final Keyword cOptimisticLockingKeyword_7_2_0_1 = (Keyword)cAlternatives_7_2_0.eContents().get(1);
		private final Alternatives cAlternatives_7_2_1 = (Alternatives)cUnorderedGroup_7_2.eContents().get(1);
		private final Group cGroup_7_2_1_0 = (Group)cAlternatives_7_2_1.eContents().get(0);
		private final Assignment cNotImmutableAssignment_7_2_1_0_0 = (Assignment)cGroup_7_2_1_0.eContents().get(0);
		private final RuleCall cNotImmutableNOTTerminalRuleCall_7_2_1_0_0_0 = (RuleCall)cNotImmutableAssignment_7_2_1_0_0.eContents().get(0);
		private final Keyword cImmutableKeyword_7_2_1_0_1 = (Keyword)cGroup_7_2_1_0.eContents().get(1);
		private final Keyword cImmutableKeyword_7_2_1_1 = (Keyword)cAlternatives_7_2_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_2 = (Alternatives)cUnorderedGroup_7_2.eContents().get(2);
		private final Assignment cCacheAssignment_7_2_2_0 = (Assignment)cAlternatives_7_2_2.eContents().get(0);
		private final Keyword cCacheCacheKeyword_7_2_2_0_0 = (Keyword)cCacheAssignment_7_2_2_0.eContents().get(0);
		private final Group cGroup_7_2_2_1 = (Group)cAlternatives_7_2_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_2_2_1_0 = (RuleCall)cGroup_7_2_2_1.eContents().get(0);
		private final Keyword cCacheKeyword_7_2_2_1_1 = (Keyword)cGroup_7_2_2_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_3 = (Alternatives)cUnorderedGroup_7_2.eContents().get(3);
		private final Assignment cGapClassAssignment_7_2_3_0 = (Assignment)cAlternatives_7_2_3.eContents().get(0);
		private final Keyword cGapClassGapKeyword_7_2_3_0_0 = (Keyword)cGapClassAssignment_7_2_3_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_7_2_3_1 = (Assignment)cAlternatives_7_2_3.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_7_2_3_1_0 = (Keyword)cNoGapClassAssignment_7_2_3_1.eContents().get(0);
		private final Assignment cScaffoldAssignment_7_2_4 = (Assignment)cUnorderedGroup_7_2.eContents().get(4);
		private final Keyword cScaffoldScaffoldKeyword_7_2_4_0 = (Keyword)cScaffoldAssignment_7_2_4.eContents().get(0);
		private final Group cGroup_7_2_5 = (Group)cUnorderedGroup_7_2.eContents().get(5);
		private final Keyword cHintKeyword_7_2_5_0 = (Keyword)cGroup_7_2_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_5_1 = (Keyword)cGroup_7_2_5.eContents().get(1);
		private final Assignment cHintAssignment_7_2_5_2 = (Assignment)cGroup_7_2_5.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_2_5_2_0 = (RuleCall)cHintAssignment_7_2_5_2.eContents().get(0);
		private final Group cGroup_7_2_6 = (Group)cUnorderedGroup_7_2.eContents().get(6);
		private final Keyword cDatabaseTableKeyword_7_2_6_0 = (Keyword)cGroup_7_2_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_6_1 = (Keyword)cGroup_7_2_6.eContents().get(1);
		private final Assignment cDatabaseTableAssignment_7_2_6_2 = (Assignment)cGroup_7_2_6.eContents().get(2);
		private final RuleCall cDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0 = (RuleCall)cDatabaseTableAssignment_7_2_6_2.eContents().get(0);
		private final Group cGroup_7_2_7 = (Group)cUnorderedGroup_7_2.eContents().get(7);
		private final Keyword cDiscriminatorValueKeyword_7_2_7_0 = (Keyword)cGroup_7_2_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_7_1 = (Keyword)cGroup_7_2_7.eContents().get(1);
		private final Assignment cDiscriminatorValueAssignment_7_2_7_2 = (Assignment)cGroup_7_2_7.eContents().get(2);
		private final RuleCall cDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0 = (RuleCall)cDiscriminatorValueAssignment_7_2_7_2.eContents().get(0);
		private final Group cGroup_7_2_8 = (Group)cUnorderedGroup_7_2.eContents().get(8);
		private final Keyword cDiscriminatorColumnKeyword_7_2_8_0 = (Keyword)cGroup_7_2_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_8_1 = (Keyword)cGroup_7_2_8.eContents().get(1);
		private final Assignment cDiscriminatorColumnAssignment_7_2_8_2 = (Assignment)cGroup_7_2_8.eContents().get(2);
		private final RuleCall cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0 = (RuleCall)cDiscriminatorColumnAssignment_7_2_8_2.eContents().get(0);
		private final Group cGroup_7_2_9 = (Group)cUnorderedGroup_7_2.eContents().get(9);
		private final Keyword cDiscriminatorTypeKeyword_7_2_9_0 = (Keyword)cGroup_7_2_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_9_1 = (Keyword)cGroup_7_2_9.eContents().get(1);
		private final Assignment cDiscriminatorTypeAssignment_7_2_9_2 = (Assignment)cGroup_7_2_9.eContents().get(2);
		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0 = (RuleCall)cDiscriminatorTypeAssignment_7_2_9_2.eContents().get(0);
		private final Group cGroup_7_2_10 = (Group)cUnorderedGroup_7_2.eContents().get(10);
		private final Keyword cDiscriminatorLengthKeyword_7_2_10_0 = (Keyword)cGroup_7_2_10.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_10_1 = (Keyword)cGroup_7_2_10.eContents().get(1);
		private final Assignment cDiscriminatorLengthAssignment_7_2_10_2 = (Assignment)cGroup_7_2_10.eContents().get(2);
		private final RuleCall cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0 = (RuleCall)cDiscriminatorLengthAssignment_7_2_10_2.eContents().get(0);
		private final Group cGroup_7_2_11 = (Group)cUnorderedGroup_7_2.eContents().get(11);
		private final Keyword cInheritanceTypeKeyword_7_2_11_0 = (Keyword)cGroup_7_2_11.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_11_1 = (Keyword)cGroup_7_2_11.eContents().get(1);
		private final Assignment cInheritanceTypeAssignment_7_2_11_2 = (Assignment)cGroup_7_2_11.eContents().get(2);
		private final RuleCall cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0 = (RuleCall)cInheritanceTypeAssignment_7_2_11_2.eContents().get(0);
		private final Group cGroup_7_2_12 = (Group)cUnorderedGroup_7_2.eContents().get(12);
		private final Keyword cValidateKeyword_7_2_12_0 = (Keyword)cGroup_7_2_12.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_12_1 = (Keyword)cGroup_7_2_12.eContents().get(1);
		private final Assignment cValidateAssignment_7_2_12_2 = (Assignment)cGroup_7_2_12.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_7_2_12_2_0 = (RuleCall)cValidateAssignment_7_2_12_2.eContents().get(0);
		private final Alternatives cAlternatives_7_2_13 = (Alternatives)cUnorderedGroup_7_2.eContents().get(13);
		private final Assignment cPersistentAssignment_7_2_13_0 = (Assignment)cAlternatives_7_2_13.eContents().get(0);
		private final Keyword cPersistentPersistentKeyword_7_2_13_0_0 = (Keyword)cPersistentAssignment_7_2_13_0.eContents().get(0);
		private final Group cGroup_7_2_13_1 = (Group)cAlternatives_7_2_13.eContents().get(1);
		private final Assignment cNotPersistentAssignment_7_2_13_1_0 = (Assignment)cGroup_7_2_13_1.eContents().get(0);
		private final RuleCall cNotPersistentNOTTerminalRuleCall_7_2_13_1_0_0 = (RuleCall)cNotPersistentAssignment_7_2_13_1_0.eContents().get(0);
		private final Keyword cPersistentKeyword_7_2_13_1_1 = (Keyword)cGroup_7_2_13_1.eContents().get(1);
		private final Assignment cAggregateRootAssignment_7_2_14 = (Assignment)cUnorderedGroup_7_2.eContents().get(14);
		private final Keyword cAggregateRootAggregateRootKeyword_7_2_14_0 = (Keyword)cAggregateRootAssignment_7_2_14.eContents().get(0);
		private final Group cGroup_7_2_15 = (Group)cUnorderedGroup_7_2.eContents().get(15);
		private final Keyword cBelongsToKeyword_7_2_15_0 = (Keyword)cGroup_7_2_15.eContents().get(0);
		private final Group cGroup_7_2_15_1 = (Group)cGroup_7_2_15.eContents().get(1);
		private final Keyword cCommercialAtKeyword_7_2_15_1_0 = (Keyword)cGroup_7_2_15_1.eContents().get(0);
		private final Assignment cBelongsToAssignment_7_2_15_1_1 = (Assignment)cGroup_7_2_15_1.eContents().get(1);
		private final CrossReference cBelongsToDomainObjectCrossReference_7_2_15_1_1_0 = (CrossReference)cBelongsToAssignment_7_2_15_1_1.eContents().get(0);
		private final RuleCall cBelongsToDomainObjectIDTerminalRuleCall_7_2_15_1_1_0_1 = (RuleCall)cBelongsToDomainObjectCrossReference_7_2_15_1_1_0.eContents().get(1);
		private final Alternatives cAlternatives_7_3 = (Alternatives)cGroup_7.eContents().get(3);
		private final Assignment cAttributesAssignment_7_3_0 = (Assignment)cAlternatives_7_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_7_3_0_0 = (RuleCall)cAttributesAssignment_7_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_7_3_1 = (Assignment)cAlternatives_7_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_7_3_1_0 = (RuleCall)cReferencesAssignment_7_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_7_3_2 = (Assignment)cAlternatives_7_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_7_3_2_0 = (RuleCall)cOperationsAssignment_7_3_2.eContents().get(0);
		private final Assignment cRepositoryAssignment_7_4 = (Assignment)cGroup_7.eContents().get(4);
		private final RuleCall cRepositoryRepositoryParserRuleCall_7_4_0 = (RuleCall)cRepositoryAssignment_7_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_5 = (Keyword)cGroup_7.eContents().get(5);
		
		//ValueObject:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	abstract?="abstract"? "ValueObject" name=ID ("extends" ("@" extends=[ValueObject] | extendsName=JavaIdentifier))?
		//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT
		//	"optimisticLocking" | "optimisticLocking")? & (notImmutable?=NOT "immutable" | "immutable")? & (cache?="cache" | NOT
		//	"cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? &
		//	("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//	("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//	discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//	"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & (persistent?="persistent" |
		//	notPersistent?=NOT "persistent")? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//	repository=Repository?
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? abstract?="abstract"? "ValueObject" name=ID ("extends" ("@" extends=[ValueObject] |
		//extendsName=JavaIdentifier))? ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)?
		//((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? & (notImmutable?=NOT "immutable" |
		//"immutable")? & (cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? &
		//("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "="
		//discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & (persistent?="persistent" |
		//notPersistent?=NOT "persistent")? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//"ValueObject"
		public Keyword getValueObjectKeyword_3() { return cValueObjectKeyword_3; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//("extends" ("@" extends=[ValueObject] | extendsName=JavaIdentifier))?
		public Group getGroup_5() { return cGroup_5; }
		
		//"extends"
		public Keyword getExtendsKeyword_5_0() { return cExtendsKeyword_5_0; }
		
		//("@" extends=[ValueObject] | extendsName=JavaIdentifier)
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//"@" extends=[ValueObject]
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_5_1_0_0() { return cCommercialAtKeyword_5_1_0_0; }
		
		//extends=[ValueObject]
		public Assignment getExtendsAssignment_5_1_0_1() { return cExtendsAssignment_5_1_0_1; }
		
		//[ValueObject]
		public CrossReference getExtendsValueObjectCrossReference_5_1_0_1_0() { return cExtendsValueObjectCrossReference_5_1_0_1_0; }
		
		//ID
		public RuleCall getExtendsValueObjectIDTerminalRuleCall_5_1_0_1_0_1() { return cExtendsValueObjectIDTerminalRuleCall_5_1_0_1_0_1; }
		
		//extendsName=JavaIdentifier
		public Assignment getExtendsNameAssignment_5_1_1() { return cExtendsNameAssignment_5_1_1; }
		
		//JavaIdentifier
		public RuleCall getExtendsNameJavaIdentifierParserRuleCall_5_1_1_0() { return cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0; }
		
		//("with" "@"? traits+=[Trait])*
		public Group getGroup_6() { return cGroup_6; }
		
		//"with"
		public Keyword getWithKeyword_6_0() { return cWithKeyword_6_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_6_1() { return cCommercialAtKeyword_6_1; }
		
		//traits+=[Trait]
		public Assignment getTraitsAssignment_6_2() { return cTraitsAssignment_6_2; }
		
		//[Trait]
		public CrossReference getTraitsTraitCrossReference_6_2_0() { return cTraitsTraitCrossReference_6_2_0; }
		
		//ID
		public RuleCall getTraitsTraitIDTerminalRuleCall_6_2_0_1() { return cTraitsTraitIDTerminalRuleCall_6_2_0_1; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? &
		//(notImmutable?=NOT "immutable" | "immutable")? & (cache?="cache" | NOT "cache")? & (gapClass?="gap" |
		//noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)?
		//& ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? &
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength" "="
		//discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//validate=STRING)? & (persistent?="persistent" | notPersistent?=NOT "persistent")? & aggregateRoot?="aggregateRoot"? &
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference |
		//operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup_7() { return cGroup_7; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//"package"
		public Keyword getPackageKeyword_7_1_0() { return cPackageKeyword_7_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_1_1() { return cEqualsSignKeyword_7_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_7_1_2() { return cPackageAssignment_7_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_7_1_2_0() { return cPackageJavaIdentifierParserRuleCall_7_1_2_0; }
		
		//((notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")? & (notImmutable?=NOT "immutable" | "immutable")?
		//& (cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & (persistent?="persistent" |
		//notPersistent?=NOT "persistent")? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		public UnorderedGroup getUnorderedGroup_7_2() { return cUnorderedGroup_7_2; }
		
		//(notOptimisticLocking?=NOT "optimisticLocking" | "optimisticLocking")?
		public Alternatives getAlternatives_7_2_0() { return cAlternatives_7_2_0; }
		
		//notOptimisticLocking?=NOT "optimisticLocking"
		public Group getGroup_7_2_0_0() { return cGroup_7_2_0_0; }
		
		//notOptimisticLocking?=NOT
		public Assignment getNotOptimisticLockingAssignment_7_2_0_0_0() { return cNotOptimisticLockingAssignment_7_2_0_0_0; }
		
		//NOT
		public RuleCall getNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0() { return cNotOptimisticLockingNOTTerminalRuleCall_7_2_0_0_0_0; }
		
		//"optimisticLocking"
		public Keyword getOptimisticLockingKeyword_7_2_0_0_1() { return cOptimisticLockingKeyword_7_2_0_0_1; }
		
		//"optimisticLocking"
		public Keyword getOptimisticLockingKeyword_7_2_0_1() { return cOptimisticLockingKeyword_7_2_0_1; }
		
		//(notImmutable?=NOT "immutable" | "immutable")?
		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
		
		//notImmutable?=NOT "immutable"
		public Group getGroup_7_2_1_0() { return cGroup_7_2_1_0; }
		
		//notImmutable?=NOT
		public Assignment getNotImmutableAssignment_7_2_1_0_0() { return cNotImmutableAssignment_7_2_1_0_0; }
		
		//NOT
		public RuleCall getNotImmutableNOTTerminalRuleCall_7_2_1_0_0_0() { return cNotImmutableNOTTerminalRuleCall_7_2_1_0_0_0; }
		
		//"immutable"
		public Keyword getImmutableKeyword_7_2_1_0_1() { return cImmutableKeyword_7_2_1_0_1; }
		
		//"immutable"
		public Keyword getImmutableKeyword_7_2_1_1() { return cImmutableKeyword_7_2_1_1; }
		
		//(cache?="cache" | NOT "cache")?
		public Alternatives getAlternatives_7_2_2() { return cAlternatives_7_2_2; }
		
		//cache?="cache"
		public Assignment getCacheAssignment_7_2_2_0() { return cCacheAssignment_7_2_2_0; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_7_2_2_0_0() { return cCacheCacheKeyword_7_2_2_0_0; }
		
		//NOT "cache"
		public Group getGroup_7_2_2_1() { return cGroup_7_2_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_2_2_1_0() { return cNOTTerminalRuleCall_7_2_2_1_0; }
		
		//"cache"
		public Keyword getCacheKeyword_7_2_2_1_1() { return cCacheKeyword_7_2_2_1_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_7_2_3() { return cAlternatives_7_2_3; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_7_2_3_0() { return cGapClassAssignment_7_2_3_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_7_2_3_0_0() { return cGapClassGapKeyword_7_2_3_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_7_2_3_1() { return cNoGapClassAssignment_7_2_3_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_7_2_3_1_0() { return cNoGapClassNogapKeyword_7_2_3_1_0; }
		
		//scaffold?="scaffold"?
		public Assignment getScaffoldAssignment_7_2_4() { return cScaffoldAssignment_7_2_4; }
		
		//"scaffold"
		public Keyword getScaffoldScaffoldKeyword_7_2_4_0() { return cScaffoldScaffoldKeyword_7_2_4_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_2_5() { return cGroup_7_2_5; }
		
		//"hint"
		public Keyword getHintKeyword_7_2_5_0() { return cHintKeyword_7_2_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_5_1() { return cEqualsSignKeyword_7_2_5_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_2_5_2() { return cHintAssignment_7_2_5_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_2_5_2_0() { return cHintSTRINGTerminalRuleCall_7_2_5_2_0; }
		
		//("databaseTable" "=" databaseTable=STRING)?
		public Group getGroup_7_2_6() { return cGroup_7_2_6; }
		
		//"databaseTable"
		public Keyword getDatabaseTableKeyword_7_2_6_0() { return cDatabaseTableKeyword_7_2_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_6_1() { return cEqualsSignKeyword_7_2_6_1; }
		
		//databaseTable=STRING
		public Assignment getDatabaseTableAssignment_7_2_6_2() { return cDatabaseTableAssignment_7_2_6_2; }
		
		//STRING
		public RuleCall getDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0() { return cDatabaseTableSTRINGTerminalRuleCall_7_2_6_2_0; }
		
		//("discriminatorValue" "=" discriminatorValue=STRING)?
		public Group getGroup_7_2_7() { return cGroup_7_2_7; }
		
		//"discriminatorValue"
		public Keyword getDiscriminatorValueKeyword_7_2_7_0() { return cDiscriminatorValueKeyword_7_2_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_7_1() { return cEqualsSignKeyword_7_2_7_1; }
		
		//discriminatorValue=STRING
		public Assignment getDiscriminatorValueAssignment_7_2_7_2() { return cDiscriminatorValueAssignment_7_2_7_2; }
		
		//STRING
		public RuleCall getDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0() { return cDiscriminatorValueSTRINGTerminalRuleCall_7_2_7_2_0; }
		
		//("discriminatorColumn" "=" discriminatorColumn=STRING)?
		public Group getGroup_7_2_8() { return cGroup_7_2_8; }
		
		//"discriminatorColumn"
		public Keyword getDiscriminatorColumnKeyword_7_2_8_0() { return cDiscriminatorColumnKeyword_7_2_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_8_1() { return cEqualsSignKeyword_7_2_8_1; }
		
		//discriminatorColumn=STRING
		public Assignment getDiscriminatorColumnAssignment_7_2_8_2() { return cDiscriminatorColumnAssignment_7_2_8_2; }
		
		//STRING
		public RuleCall getDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0() { return cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_8_2_0; }
		
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)?
		public Group getGroup_7_2_9() { return cGroup_7_2_9; }
		
		//"discriminatorType"
		public Keyword getDiscriminatorTypeKeyword_7_2_9_0() { return cDiscriminatorTypeKeyword_7_2_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_9_1() { return cEqualsSignKeyword_7_2_9_1; }
		
		//discriminatorType=DiscriminatorType
		public Assignment getDiscriminatorTypeAssignment_7_2_9_2() { return cDiscriminatorTypeAssignment_7_2_9_2; }
		
		//DiscriminatorType
		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_9_2_0; }
		
		//("discriminatorLength" "=" discriminatorLength=STRING)?
		public Group getGroup_7_2_10() { return cGroup_7_2_10; }
		
		//"discriminatorLength"
		public Keyword getDiscriminatorLengthKeyword_7_2_10_0() { return cDiscriminatorLengthKeyword_7_2_10_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_10_1() { return cEqualsSignKeyword_7_2_10_1; }
		
		//discriminatorLength=STRING
		public Assignment getDiscriminatorLengthAssignment_7_2_10_2() { return cDiscriminatorLengthAssignment_7_2_10_2; }
		
		//STRING
		public RuleCall getDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0() { return cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_10_2_0; }
		
		//("inheritanceType" "=" inheritanceType=InheritanceType)?
		public Group getGroup_7_2_11() { return cGroup_7_2_11; }
		
		//"inheritanceType"
		public Keyword getInheritanceTypeKeyword_7_2_11_0() { return cInheritanceTypeKeyword_7_2_11_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_11_1() { return cEqualsSignKeyword_7_2_11_1; }
		
		//inheritanceType=InheritanceType
		public Assignment getInheritanceTypeAssignment_7_2_11_2() { return cInheritanceTypeAssignment_7_2_11_2; }
		
		//InheritanceType
		public RuleCall getInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0() { return cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_11_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_7_2_12() { return cGroup_7_2_12; }
		
		//"validate"
		public Keyword getValidateKeyword_7_2_12_0() { return cValidateKeyword_7_2_12_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_12_1() { return cEqualsSignKeyword_7_2_12_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_7_2_12_2() { return cValidateAssignment_7_2_12_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_7_2_12_2_0() { return cValidateSTRINGTerminalRuleCall_7_2_12_2_0; }
		
		//(persistent?="persistent" | notPersistent?=NOT "persistent")?
		public Alternatives getAlternatives_7_2_13() { return cAlternatives_7_2_13; }
		
		//persistent?="persistent"
		public Assignment getPersistentAssignment_7_2_13_0() { return cPersistentAssignment_7_2_13_0; }
		
		//"persistent"
		public Keyword getPersistentPersistentKeyword_7_2_13_0_0() { return cPersistentPersistentKeyword_7_2_13_0_0; }
		
		//notPersistent?=NOT "persistent"
		public Group getGroup_7_2_13_1() { return cGroup_7_2_13_1; }
		
		//notPersistent?=NOT
		public Assignment getNotPersistentAssignment_7_2_13_1_0() { return cNotPersistentAssignment_7_2_13_1_0; }
		
		//NOT
		public RuleCall getNotPersistentNOTTerminalRuleCall_7_2_13_1_0_0() { return cNotPersistentNOTTerminalRuleCall_7_2_13_1_0_0; }
		
		//"persistent"
		public Keyword getPersistentKeyword_7_2_13_1_1() { return cPersistentKeyword_7_2_13_1_1; }
		
		//aggregateRoot?="aggregateRoot"?
		public Assignment getAggregateRootAssignment_7_2_14() { return cAggregateRootAssignment_7_2_14; }
		
		//"aggregateRoot"
		public Keyword getAggregateRootAggregateRootKeyword_7_2_14_0() { return cAggregateRootAggregateRootKeyword_7_2_14_0; }
		
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?
		public Group getGroup_7_2_15() { return cGroup_7_2_15; }
		
		//"belongsTo"
		public Keyword getBelongsToKeyword_7_2_15_0() { return cBelongsToKeyword_7_2_15_0; }
		
		//("@"? belongsTo=[DomainObject])
		public Group getGroup_7_2_15_1() { return cGroup_7_2_15_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_7_2_15_1_0() { return cCommercialAtKeyword_7_2_15_1_0; }
		
		//belongsTo=[DomainObject]
		public Assignment getBelongsToAssignment_7_2_15_1_1() { return cBelongsToAssignment_7_2_15_1_1; }
		
		//[DomainObject]
		public CrossReference getBelongsToDomainObjectCrossReference_7_2_15_1_1_0() { return cBelongsToDomainObjectCrossReference_7_2_15_1_1_0; }
		
		//ID
		public RuleCall getBelongsToDomainObjectIDTerminalRuleCall_7_2_15_1_1_0_1() { return cBelongsToDomainObjectIDTerminalRuleCall_7_2_15_1_1_0_1; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_7_3() { return cAlternatives_7_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_7_3_0() { return cAttributesAssignment_7_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_7_3_0_0() { return cAttributesAttributeParserRuleCall_7_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_7_3_1() { return cReferencesAssignment_7_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_7_3_1_0() { return cReferencesReferenceParserRuleCall_7_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_7_3_2() { return cOperationsAssignment_7_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_7_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_7_3_2_0; }
		
		//repository=Repository?
		public Assignment getRepositoryAssignment_7_4() { return cRepositoryAssignment_7_4; }
		
		//Repository
		public RuleCall getRepositoryRepositoryParserRuleCall_7_4_0() { return cRepositoryRepositoryParserRuleCall_7_4_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_7_5() { return cRightCurlyBracketKeyword_7_5; }
	}
	public class DomainEventElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DomainEvent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Keyword cDomainEventKeyword_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 cExtendsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Keyword cCommercialAtKeyword_5_1_0_0 = (Keyword)cGroup_5_1_0.eContents().get(0);
		private final Assignment cExtendsAssignment_5_1_0_1 = (Assignment)cGroup_5_1_0.eContents().get(1);
		private final CrossReference cExtendsDomainEventCrossReference_5_1_0_1_0 = (CrossReference)cExtendsAssignment_5_1_0_1.eContents().get(0);
		private final RuleCall cExtendsDomainEventIDTerminalRuleCall_5_1_0_1_0_1 = (RuleCall)cExtendsDomainEventCrossReference_5_1_0_1_0.eContents().get(1);
		private final Assignment cExtendsNameAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0 = (RuleCall)cExtendsNameAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cWithKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cCommercialAtKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cTraitsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cTraitsTraitCrossReference_6_2_0 = (CrossReference)cTraitsAssignment_6_2.eContents().get(0);
		private final RuleCall cTraitsTraitIDTerminalRuleCall_6_2_0_1 = (RuleCall)cTraitsTraitCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cGroup_7.eContents().get(1);
		private final Keyword cPackageKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1_1 = (Keyword)cGroup_7_1.eContents().get(1);
		private final Assignment cPackageAssignment_7_1_2 = (Assignment)cGroup_7_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_7_1_2_0 = (RuleCall)cPackageAssignment_7_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_7_2 = (UnorderedGroup)cGroup_7.eContents().get(2);
		private final Alternatives cAlternatives_7_2_0 = (Alternatives)cUnorderedGroup_7_2.eContents().get(0);
		private final Assignment cCacheAssignment_7_2_0_0 = (Assignment)cAlternatives_7_2_0.eContents().get(0);
		private final Keyword cCacheCacheKeyword_7_2_0_0_0 = (Keyword)cCacheAssignment_7_2_0_0.eContents().get(0);
		private final Group cGroup_7_2_0_1 = (Group)cAlternatives_7_2_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_2_0_1_0 = (RuleCall)cGroup_7_2_0_1.eContents().get(0);
		private final Keyword cCacheKeyword_7_2_0_1_1 = (Keyword)cGroup_7_2_0_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_1 = (Alternatives)cUnorderedGroup_7_2.eContents().get(1);
		private final Assignment cGapClassAssignment_7_2_1_0 = (Assignment)cAlternatives_7_2_1.eContents().get(0);
		private final Keyword cGapClassGapKeyword_7_2_1_0_0 = (Keyword)cGapClassAssignment_7_2_1_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_7_2_1_1 = (Assignment)cAlternatives_7_2_1.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_7_2_1_1_0 = (Keyword)cNoGapClassAssignment_7_2_1_1.eContents().get(0);
		private final Assignment cScaffoldAssignment_7_2_2 = (Assignment)cUnorderedGroup_7_2.eContents().get(2);
		private final Keyword cScaffoldScaffoldKeyword_7_2_2_0 = (Keyword)cScaffoldAssignment_7_2_2.eContents().get(0);
		private final Group cGroup_7_2_3 = (Group)cUnorderedGroup_7_2.eContents().get(3);
		private final Keyword cHintKeyword_7_2_3_0 = (Keyword)cGroup_7_2_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_3_1 = (Keyword)cGroup_7_2_3.eContents().get(1);
		private final Assignment cHintAssignment_7_2_3_2 = (Assignment)cGroup_7_2_3.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_2_3_2_0 = (RuleCall)cHintAssignment_7_2_3_2.eContents().get(0);
		private final Group cGroup_7_2_4 = (Group)cUnorderedGroup_7_2.eContents().get(4);
		private final Keyword cDatabaseTableKeyword_7_2_4_0 = (Keyword)cGroup_7_2_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_4_1 = (Keyword)cGroup_7_2_4.eContents().get(1);
		private final Assignment cDatabaseTableAssignment_7_2_4_2 = (Assignment)cGroup_7_2_4.eContents().get(2);
		private final RuleCall cDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0 = (RuleCall)cDatabaseTableAssignment_7_2_4_2.eContents().get(0);
		private final Group cGroup_7_2_5 = (Group)cUnorderedGroup_7_2.eContents().get(5);
		private final Keyword cDiscriminatorValueKeyword_7_2_5_0 = (Keyword)cGroup_7_2_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_5_1 = (Keyword)cGroup_7_2_5.eContents().get(1);
		private final Assignment cDiscriminatorValueAssignment_7_2_5_2 = (Assignment)cGroup_7_2_5.eContents().get(2);
		private final RuleCall cDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0 = (RuleCall)cDiscriminatorValueAssignment_7_2_5_2.eContents().get(0);
		private final Group cGroup_7_2_6 = (Group)cUnorderedGroup_7_2.eContents().get(6);
		private final Keyword cDiscriminatorColumnKeyword_7_2_6_0 = (Keyword)cGroup_7_2_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_6_1 = (Keyword)cGroup_7_2_6.eContents().get(1);
		private final Assignment cDiscriminatorColumnAssignment_7_2_6_2 = (Assignment)cGroup_7_2_6.eContents().get(2);
		private final RuleCall cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0 = (RuleCall)cDiscriminatorColumnAssignment_7_2_6_2.eContents().get(0);
		private final Group cGroup_7_2_7 = (Group)cUnorderedGroup_7_2.eContents().get(7);
		private final Keyword cDiscriminatorTypeKeyword_7_2_7_0 = (Keyword)cGroup_7_2_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_7_1 = (Keyword)cGroup_7_2_7.eContents().get(1);
		private final Assignment cDiscriminatorTypeAssignment_7_2_7_2 = (Assignment)cGroup_7_2_7.eContents().get(2);
		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0 = (RuleCall)cDiscriminatorTypeAssignment_7_2_7_2.eContents().get(0);
		private final Group cGroup_7_2_8 = (Group)cUnorderedGroup_7_2.eContents().get(8);
		private final Keyword cDiscriminatorLengthKeyword_7_2_8_0 = (Keyword)cGroup_7_2_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_8_1 = (Keyword)cGroup_7_2_8.eContents().get(1);
		private final Assignment cDiscriminatorLengthAssignment_7_2_8_2 = (Assignment)cGroup_7_2_8.eContents().get(2);
		private final RuleCall cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0 = (RuleCall)cDiscriminatorLengthAssignment_7_2_8_2.eContents().get(0);
		private final Group cGroup_7_2_9 = (Group)cUnorderedGroup_7_2.eContents().get(9);
		private final Keyword cInheritanceTypeKeyword_7_2_9_0 = (Keyword)cGroup_7_2_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_9_1 = (Keyword)cGroup_7_2_9.eContents().get(1);
		private final Assignment cInheritanceTypeAssignment_7_2_9_2 = (Assignment)cGroup_7_2_9.eContents().get(2);
		private final RuleCall cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0 = (RuleCall)cInheritanceTypeAssignment_7_2_9_2.eContents().get(0);
		private final Group cGroup_7_2_10 = (Group)cUnorderedGroup_7_2.eContents().get(10);
		private final Keyword cValidateKeyword_7_2_10_0 = (Keyword)cGroup_7_2_10.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_10_1 = (Keyword)cGroup_7_2_10.eContents().get(1);
		private final Assignment cValidateAssignment_7_2_10_2 = (Assignment)cGroup_7_2_10.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_7_2_10_2_0 = (RuleCall)cValidateAssignment_7_2_10_2.eContents().get(0);
		private final Assignment cPersistentAssignment_7_2_11 = (Assignment)cUnorderedGroup_7_2.eContents().get(11);
		private final Keyword cPersistentPersistentKeyword_7_2_11_0 = (Keyword)cPersistentAssignment_7_2_11.eContents().get(0);
		private final Assignment cAggregateRootAssignment_7_2_12 = (Assignment)cUnorderedGroup_7_2.eContents().get(12);
		private final Keyword cAggregateRootAggregateRootKeyword_7_2_12_0 = (Keyword)cAggregateRootAssignment_7_2_12.eContents().get(0);
		private final Group cGroup_7_2_13 = (Group)cUnorderedGroup_7_2.eContents().get(13);
		private final Keyword cBelongsToKeyword_7_2_13_0 = (Keyword)cGroup_7_2_13.eContents().get(0);
		private final Group cGroup_7_2_13_1 = (Group)cGroup_7_2_13.eContents().get(1);
		private final Keyword cCommercialAtKeyword_7_2_13_1_0 = (Keyword)cGroup_7_2_13_1.eContents().get(0);
		private final Assignment cBelongsToAssignment_7_2_13_1_1 = (Assignment)cGroup_7_2_13_1.eContents().get(1);
		private final CrossReference cBelongsToDomainObjectCrossReference_7_2_13_1_1_0 = (CrossReference)cBelongsToAssignment_7_2_13_1_1.eContents().get(0);
		private final RuleCall cBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1 = (RuleCall)cBelongsToDomainObjectCrossReference_7_2_13_1_1_0.eContents().get(1);
		private final Alternatives cAlternatives_7_3 = (Alternatives)cGroup_7.eContents().get(3);
		private final Assignment cAttributesAssignment_7_3_0 = (Assignment)cAlternatives_7_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_7_3_0_0 = (RuleCall)cAttributesAssignment_7_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_7_3_1 = (Assignment)cAlternatives_7_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_7_3_1_0 = (RuleCall)cReferencesAssignment_7_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_7_3_2 = (Assignment)cAlternatives_7_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_7_3_2_0 = (RuleCall)cOperationsAssignment_7_3_2.eContents().get(0);
		private final Assignment cRepositoryAssignment_7_4 = (Assignment)cGroup_7.eContents().get(4);
		private final RuleCall cRepositoryRepositoryParserRuleCall_7_4_0 = (RuleCall)cRepositoryAssignment_7_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_5 = (Keyword)cGroup_7.eContents().get(5);
		
		//DomainEvent:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	abstract?="abstract"? "DomainEvent" name=ID ("extends" ("@" extends=[DomainEvent] | extendsName=JavaIdentifier))?
		//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? &
		//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
		//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
		//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
		//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//	validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
		//	belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//	repository=Repository?
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? abstract?="abstract"? "DomainEvent" name=ID ("extends" ("@" extends=[DomainEvent] |
		//extendsName=JavaIdentifier))? ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)?
		//((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & persistent?="persistent"? &
		//aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?) (attributes+=Attribute |
		//references+=Reference | operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//"DomainEvent"
		public Keyword getDomainEventKeyword_3() { return cDomainEventKeyword_3; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//("extends" ("@" extends=[DomainEvent] | extendsName=JavaIdentifier))?
		public Group getGroup_5() { return cGroup_5; }
		
		//"extends"
		public Keyword getExtendsKeyword_5_0() { return cExtendsKeyword_5_0; }
		
		//("@" extends=[DomainEvent] | extendsName=JavaIdentifier)
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//"@" extends=[DomainEvent]
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_5_1_0_0() { return cCommercialAtKeyword_5_1_0_0; }
		
		//extends=[DomainEvent]
		public Assignment getExtendsAssignment_5_1_0_1() { return cExtendsAssignment_5_1_0_1; }
		
		//[DomainEvent]
		public CrossReference getExtendsDomainEventCrossReference_5_1_0_1_0() { return cExtendsDomainEventCrossReference_5_1_0_1_0; }
		
		//ID
		public RuleCall getExtendsDomainEventIDTerminalRuleCall_5_1_0_1_0_1() { return cExtendsDomainEventIDTerminalRuleCall_5_1_0_1_0_1; }
		
		//extendsName=JavaIdentifier
		public Assignment getExtendsNameAssignment_5_1_1() { return cExtendsNameAssignment_5_1_1; }
		
		//JavaIdentifier
		public RuleCall getExtendsNameJavaIdentifierParserRuleCall_5_1_1_0() { return cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0; }
		
		//("with" "@"? traits+=[Trait])*
		public Group getGroup_6() { return cGroup_6; }
		
		//"with"
		public Keyword getWithKeyword_6_0() { return cWithKeyword_6_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_6_1() { return cCommercialAtKeyword_6_1; }
		
		//traits+=[Trait]
		public Assignment getTraitsAssignment_6_2() { return cTraitsAssignment_6_2; }
		
		//[Trait]
		public CrossReference getTraitsTraitCrossReference_6_2_0() { return cTraitsTraitCrossReference_6_2_0; }
		
		//ID
		public RuleCall getTraitsTraitIDTerminalRuleCall_6_2_0_1() { return cTraitsTraitIDTerminalRuleCall_6_2_0_1; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")?
		//& scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? &
		//("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? &
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength" "="
		//discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
		//belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//repository=Repository? "}")?
		public Group getGroup_7() { return cGroup_7; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//"package"
		public Keyword getPackageKeyword_7_1_0() { return cPackageKeyword_7_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_1_1() { return cEqualsSignKeyword_7_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_7_1_2() { return cPackageAssignment_7_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_7_1_2_0() { return cPackageJavaIdentifierParserRuleCall_7_1_2_0; }
		
		//((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & persistent?="persistent"? &
		//aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		public UnorderedGroup getUnorderedGroup_7_2() { return cUnorderedGroup_7_2; }
		
		//(cache?="cache" | NOT "cache")?
		public Alternatives getAlternatives_7_2_0() { return cAlternatives_7_2_0; }
		
		//cache?="cache"
		public Assignment getCacheAssignment_7_2_0_0() { return cCacheAssignment_7_2_0_0; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_7_2_0_0_0() { return cCacheCacheKeyword_7_2_0_0_0; }
		
		//NOT "cache"
		public Group getGroup_7_2_0_1() { return cGroup_7_2_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_2_0_1_0() { return cNOTTerminalRuleCall_7_2_0_1_0; }
		
		//"cache"
		public Keyword getCacheKeyword_7_2_0_1_1() { return cCacheKeyword_7_2_0_1_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_7_2_1_0() { return cGapClassAssignment_7_2_1_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_7_2_1_0_0() { return cGapClassGapKeyword_7_2_1_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_7_2_1_1() { return cNoGapClassAssignment_7_2_1_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_7_2_1_1_0() { return cNoGapClassNogapKeyword_7_2_1_1_0; }
		
		//scaffold?="scaffold"?
		public Assignment getScaffoldAssignment_7_2_2() { return cScaffoldAssignment_7_2_2; }
		
		//"scaffold"
		public Keyword getScaffoldScaffoldKeyword_7_2_2_0() { return cScaffoldScaffoldKeyword_7_2_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_2_3() { return cGroup_7_2_3; }
		
		//"hint"
		public Keyword getHintKeyword_7_2_3_0() { return cHintKeyword_7_2_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_3_1() { return cEqualsSignKeyword_7_2_3_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_2_3_2() { return cHintAssignment_7_2_3_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_2_3_2_0() { return cHintSTRINGTerminalRuleCall_7_2_3_2_0; }
		
		//("databaseTable" "=" databaseTable=STRING)?
		public Group getGroup_7_2_4() { return cGroup_7_2_4; }
		
		//"databaseTable"
		public Keyword getDatabaseTableKeyword_7_2_4_0() { return cDatabaseTableKeyword_7_2_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_4_1() { return cEqualsSignKeyword_7_2_4_1; }
		
		//databaseTable=STRING
		public Assignment getDatabaseTableAssignment_7_2_4_2() { return cDatabaseTableAssignment_7_2_4_2; }
		
		//STRING
		public RuleCall getDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0() { return cDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0; }
		
		//("discriminatorValue" "=" discriminatorValue=STRING)?
		public Group getGroup_7_2_5() { return cGroup_7_2_5; }
		
		//"discriminatorValue"
		public Keyword getDiscriminatorValueKeyword_7_2_5_0() { return cDiscriminatorValueKeyword_7_2_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_5_1() { return cEqualsSignKeyword_7_2_5_1; }
		
		//discriminatorValue=STRING
		public Assignment getDiscriminatorValueAssignment_7_2_5_2() { return cDiscriminatorValueAssignment_7_2_5_2; }
		
		//STRING
		public RuleCall getDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0() { return cDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0; }
		
		//("discriminatorColumn" "=" discriminatorColumn=STRING)?
		public Group getGroup_7_2_6() { return cGroup_7_2_6; }
		
		//"discriminatorColumn"
		public Keyword getDiscriminatorColumnKeyword_7_2_6_0() { return cDiscriminatorColumnKeyword_7_2_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_6_1() { return cEqualsSignKeyword_7_2_6_1; }
		
		//discriminatorColumn=STRING
		public Assignment getDiscriminatorColumnAssignment_7_2_6_2() { return cDiscriminatorColumnAssignment_7_2_6_2; }
		
		//STRING
		public RuleCall getDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0() { return cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0; }
		
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)?
		public Group getGroup_7_2_7() { return cGroup_7_2_7; }
		
		//"discriminatorType"
		public Keyword getDiscriminatorTypeKeyword_7_2_7_0() { return cDiscriminatorTypeKeyword_7_2_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_7_1() { return cEqualsSignKeyword_7_2_7_1; }
		
		//discriminatorType=DiscriminatorType
		public Assignment getDiscriminatorTypeAssignment_7_2_7_2() { return cDiscriminatorTypeAssignment_7_2_7_2; }
		
		//DiscriminatorType
		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0; }
		
		//("discriminatorLength" "=" discriminatorLength=STRING)?
		public Group getGroup_7_2_8() { return cGroup_7_2_8; }
		
		//"discriminatorLength"
		public Keyword getDiscriminatorLengthKeyword_7_2_8_0() { return cDiscriminatorLengthKeyword_7_2_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_8_1() { return cEqualsSignKeyword_7_2_8_1; }
		
		//discriminatorLength=STRING
		public Assignment getDiscriminatorLengthAssignment_7_2_8_2() { return cDiscriminatorLengthAssignment_7_2_8_2; }
		
		//STRING
		public RuleCall getDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0() { return cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0; }
		
		//("inheritanceType" "=" inheritanceType=InheritanceType)?
		public Group getGroup_7_2_9() { return cGroup_7_2_9; }
		
		//"inheritanceType"
		public Keyword getInheritanceTypeKeyword_7_2_9_0() { return cInheritanceTypeKeyword_7_2_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_9_1() { return cEqualsSignKeyword_7_2_9_1; }
		
		//inheritanceType=InheritanceType
		public Assignment getInheritanceTypeAssignment_7_2_9_2() { return cInheritanceTypeAssignment_7_2_9_2; }
		
		//InheritanceType
		public RuleCall getInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0() { return cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_7_2_10() { return cGroup_7_2_10; }
		
		//"validate"
		public Keyword getValidateKeyword_7_2_10_0() { return cValidateKeyword_7_2_10_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_10_1() { return cEqualsSignKeyword_7_2_10_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_7_2_10_2() { return cValidateAssignment_7_2_10_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_7_2_10_2_0() { return cValidateSTRINGTerminalRuleCall_7_2_10_2_0; }
		
		//persistent?="persistent"?
		public Assignment getPersistentAssignment_7_2_11() { return cPersistentAssignment_7_2_11; }
		
		//"persistent"
		public Keyword getPersistentPersistentKeyword_7_2_11_0() { return cPersistentPersistentKeyword_7_2_11_0; }
		
		//aggregateRoot?="aggregateRoot"?
		public Assignment getAggregateRootAssignment_7_2_12() { return cAggregateRootAssignment_7_2_12; }
		
		//"aggregateRoot"
		public Keyword getAggregateRootAggregateRootKeyword_7_2_12_0() { return cAggregateRootAggregateRootKeyword_7_2_12_0; }
		
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?
		public Group getGroup_7_2_13() { return cGroup_7_2_13; }
		
		//"belongsTo"
		public Keyword getBelongsToKeyword_7_2_13_0() { return cBelongsToKeyword_7_2_13_0; }
		
		//("@"? belongsTo=[DomainObject])
		public Group getGroup_7_2_13_1() { return cGroup_7_2_13_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_7_2_13_1_0() { return cCommercialAtKeyword_7_2_13_1_0; }
		
		//belongsTo=[DomainObject]
		public Assignment getBelongsToAssignment_7_2_13_1_1() { return cBelongsToAssignment_7_2_13_1_1; }
		
		//[DomainObject]
		public CrossReference getBelongsToDomainObjectCrossReference_7_2_13_1_1_0() { return cBelongsToDomainObjectCrossReference_7_2_13_1_1_0; }
		
		//ID
		public RuleCall getBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1() { return cBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_7_3() { return cAlternatives_7_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_7_3_0() { return cAttributesAssignment_7_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_7_3_0_0() { return cAttributesAttributeParserRuleCall_7_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_7_3_1() { return cReferencesAssignment_7_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_7_3_1_0() { return cReferencesReferenceParserRuleCall_7_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_7_3_2() { return cOperationsAssignment_7_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_7_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_7_3_2_0; }
		
		//repository=Repository?
		public Assignment getRepositoryAssignment_7_4() { return cRepositoryAssignment_7_4; }
		
		//Repository
		public RuleCall getRepositoryRepositoryParserRuleCall_7_4_0() { return cRepositoryRepositoryParserRuleCall_7_4_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_7_5() { return cRightCurlyBracketKeyword_7_5; }
	}
	public class CommandEventElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.CommandEvent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Keyword cCommandEventKeyword_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 cExtendsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Keyword cCommercialAtKeyword_5_1_0_0 = (Keyword)cGroup_5_1_0.eContents().get(0);
		private final Assignment cExtendsAssignment_5_1_0_1 = (Assignment)cGroup_5_1_0.eContents().get(1);
		private final CrossReference cExtendsCommandEventCrossReference_5_1_0_1_0 = (CrossReference)cExtendsAssignment_5_1_0_1.eContents().get(0);
		private final RuleCall cExtendsCommandEventIDTerminalRuleCall_5_1_0_1_0_1 = (RuleCall)cExtendsCommandEventCrossReference_5_1_0_1_0.eContents().get(1);
		private final Assignment cExtendsNameAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0 = (RuleCall)cExtendsNameAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cWithKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cCommercialAtKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cTraitsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cTraitsTraitCrossReference_6_2_0 = (CrossReference)cTraitsAssignment_6_2.eContents().get(0);
		private final RuleCall cTraitsTraitIDTerminalRuleCall_6_2_0_1 = (RuleCall)cTraitsTraitCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cGroup_7.eContents().get(1);
		private final Keyword cPackageKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1_1 = (Keyword)cGroup_7_1.eContents().get(1);
		private final Assignment cPackageAssignment_7_1_2 = (Assignment)cGroup_7_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_7_1_2_0 = (RuleCall)cPackageAssignment_7_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_7_2 = (UnorderedGroup)cGroup_7.eContents().get(2);
		private final Alternatives cAlternatives_7_2_0 = (Alternatives)cUnorderedGroup_7_2.eContents().get(0);
		private final Assignment cCacheAssignment_7_2_0_0 = (Assignment)cAlternatives_7_2_0.eContents().get(0);
		private final Keyword cCacheCacheKeyword_7_2_0_0_0 = (Keyword)cCacheAssignment_7_2_0_0.eContents().get(0);
		private final Group cGroup_7_2_0_1 = (Group)cAlternatives_7_2_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_2_0_1_0 = (RuleCall)cGroup_7_2_0_1.eContents().get(0);
		private final Keyword cCacheKeyword_7_2_0_1_1 = (Keyword)cGroup_7_2_0_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2_1 = (Alternatives)cUnorderedGroup_7_2.eContents().get(1);
		private final Assignment cGapClassAssignment_7_2_1_0 = (Assignment)cAlternatives_7_2_1.eContents().get(0);
		private final Keyword cGapClassGapKeyword_7_2_1_0_0 = (Keyword)cGapClassAssignment_7_2_1_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_7_2_1_1 = (Assignment)cAlternatives_7_2_1.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_7_2_1_1_0 = (Keyword)cNoGapClassAssignment_7_2_1_1.eContents().get(0);
		private final Assignment cScaffoldAssignment_7_2_2 = (Assignment)cUnorderedGroup_7_2.eContents().get(2);
		private final Keyword cScaffoldScaffoldKeyword_7_2_2_0 = (Keyword)cScaffoldAssignment_7_2_2.eContents().get(0);
		private final Group cGroup_7_2_3 = (Group)cUnorderedGroup_7_2.eContents().get(3);
		private final Keyword cHintKeyword_7_2_3_0 = (Keyword)cGroup_7_2_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_3_1 = (Keyword)cGroup_7_2_3.eContents().get(1);
		private final Assignment cHintAssignment_7_2_3_2 = (Assignment)cGroup_7_2_3.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_2_3_2_0 = (RuleCall)cHintAssignment_7_2_3_2.eContents().get(0);
		private final Group cGroup_7_2_4 = (Group)cUnorderedGroup_7_2.eContents().get(4);
		private final Keyword cDatabaseTableKeyword_7_2_4_0 = (Keyword)cGroup_7_2_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_4_1 = (Keyword)cGroup_7_2_4.eContents().get(1);
		private final Assignment cDatabaseTableAssignment_7_2_4_2 = (Assignment)cGroup_7_2_4.eContents().get(2);
		private final RuleCall cDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0 = (RuleCall)cDatabaseTableAssignment_7_2_4_2.eContents().get(0);
		private final Group cGroup_7_2_5 = (Group)cUnorderedGroup_7_2.eContents().get(5);
		private final Keyword cDiscriminatorValueKeyword_7_2_5_0 = (Keyword)cGroup_7_2_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_5_1 = (Keyword)cGroup_7_2_5.eContents().get(1);
		private final Assignment cDiscriminatorValueAssignment_7_2_5_2 = (Assignment)cGroup_7_2_5.eContents().get(2);
		private final RuleCall cDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0 = (RuleCall)cDiscriminatorValueAssignment_7_2_5_2.eContents().get(0);
		private final Group cGroup_7_2_6 = (Group)cUnorderedGroup_7_2.eContents().get(6);
		private final Keyword cDiscriminatorColumnKeyword_7_2_6_0 = (Keyword)cGroup_7_2_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_6_1 = (Keyword)cGroup_7_2_6.eContents().get(1);
		private final Assignment cDiscriminatorColumnAssignment_7_2_6_2 = (Assignment)cGroup_7_2_6.eContents().get(2);
		private final RuleCall cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0 = (RuleCall)cDiscriminatorColumnAssignment_7_2_6_2.eContents().get(0);
		private final Group cGroup_7_2_7 = (Group)cUnorderedGroup_7_2.eContents().get(7);
		private final Keyword cDiscriminatorTypeKeyword_7_2_7_0 = (Keyword)cGroup_7_2_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_7_1 = (Keyword)cGroup_7_2_7.eContents().get(1);
		private final Assignment cDiscriminatorTypeAssignment_7_2_7_2 = (Assignment)cGroup_7_2_7.eContents().get(2);
		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0 = (RuleCall)cDiscriminatorTypeAssignment_7_2_7_2.eContents().get(0);
		private final Group cGroup_7_2_8 = (Group)cUnorderedGroup_7_2.eContents().get(8);
		private final Keyword cDiscriminatorLengthKeyword_7_2_8_0 = (Keyword)cGroup_7_2_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_8_1 = (Keyword)cGroup_7_2_8.eContents().get(1);
		private final Assignment cDiscriminatorLengthAssignment_7_2_8_2 = (Assignment)cGroup_7_2_8.eContents().get(2);
		private final RuleCall cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0 = (RuleCall)cDiscriminatorLengthAssignment_7_2_8_2.eContents().get(0);
		private final Group cGroup_7_2_9 = (Group)cUnorderedGroup_7_2.eContents().get(9);
		private final Keyword cInheritanceTypeKeyword_7_2_9_0 = (Keyword)cGroup_7_2_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_9_1 = (Keyword)cGroup_7_2_9.eContents().get(1);
		private final Assignment cInheritanceTypeAssignment_7_2_9_2 = (Assignment)cGroup_7_2_9.eContents().get(2);
		private final RuleCall cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0 = (RuleCall)cInheritanceTypeAssignment_7_2_9_2.eContents().get(0);
		private final Group cGroup_7_2_10 = (Group)cUnorderedGroup_7_2.eContents().get(10);
		private final Keyword cValidateKeyword_7_2_10_0 = (Keyword)cGroup_7_2_10.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_2_10_1 = (Keyword)cGroup_7_2_10.eContents().get(1);
		private final Assignment cValidateAssignment_7_2_10_2 = (Assignment)cGroup_7_2_10.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_7_2_10_2_0 = (RuleCall)cValidateAssignment_7_2_10_2.eContents().get(0);
		private final Assignment cPersistentAssignment_7_2_11 = (Assignment)cUnorderedGroup_7_2.eContents().get(11);
		private final Keyword cPersistentPersistentKeyword_7_2_11_0 = (Keyword)cPersistentAssignment_7_2_11.eContents().get(0);
		private final Assignment cAggregateRootAssignment_7_2_12 = (Assignment)cUnorderedGroup_7_2.eContents().get(12);
		private final Keyword cAggregateRootAggregateRootKeyword_7_2_12_0 = (Keyword)cAggregateRootAssignment_7_2_12.eContents().get(0);
		private final Group cGroup_7_2_13 = (Group)cUnorderedGroup_7_2.eContents().get(13);
		private final Keyword cBelongsToKeyword_7_2_13_0 = (Keyword)cGroup_7_2_13.eContents().get(0);
		private final Group cGroup_7_2_13_1 = (Group)cGroup_7_2_13.eContents().get(1);
		private final Keyword cCommercialAtKeyword_7_2_13_1_0 = (Keyword)cGroup_7_2_13_1.eContents().get(0);
		private final Assignment cBelongsToAssignment_7_2_13_1_1 = (Assignment)cGroup_7_2_13_1.eContents().get(1);
		private final CrossReference cBelongsToDomainObjectCrossReference_7_2_13_1_1_0 = (CrossReference)cBelongsToAssignment_7_2_13_1_1.eContents().get(0);
		private final RuleCall cBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1 = (RuleCall)cBelongsToDomainObjectCrossReference_7_2_13_1_1_0.eContents().get(1);
		private final Alternatives cAlternatives_7_3 = (Alternatives)cGroup_7.eContents().get(3);
		private final Assignment cAttributesAssignment_7_3_0 = (Assignment)cAlternatives_7_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_7_3_0_0 = (RuleCall)cAttributesAssignment_7_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_7_3_1 = (Assignment)cAlternatives_7_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_7_3_1_0 = (RuleCall)cReferencesAssignment_7_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_7_3_2 = (Assignment)cAlternatives_7_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_7_3_2_0 = (RuleCall)cOperationsAssignment_7_3_2.eContents().get(0);
		private final Assignment cRepositoryAssignment_7_4 = (Assignment)cGroup_7.eContents().get(4);
		private final RuleCall cRepositoryRepositoryParserRuleCall_7_4_0 = (RuleCall)cRepositoryAssignment_7_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_5 = (Keyword)cGroup_7.eContents().get(5);
		
		//CommandEvent:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	abstract?="abstract"? "CommandEvent" name=ID ("extends" ("@" extends=[CommandEvent] | extendsName=JavaIdentifier))?
		//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? &
		//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
		//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
		//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
		//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//	validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
		//	belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//	repository=Repository?
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? abstract?="abstract"? "CommandEvent" name=ID ("extends" ("@" extends=[CommandEvent] |
		//extendsName=JavaIdentifier))? ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)?
		//((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & persistent?="persistent"? &
		//aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?) (attributes+=Attribute |
		//references+=Reference | operations+=DomainObjectOperation)* repository=Repository? "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//"CommandEvent"
		public Keyword getCommandEventKeyword_3() { return cCommandEventKeyword_3; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//("extends" ("@" extends=[CommandEvent] | extendsName=JavaIdentifier))?
		public Group getGroup_5() { return cGroup_5; }
		
		//"extends"
		public Keyword getExtendsKeyword_5_0() { return cExtendsKeyword_5_0; }
		
		//("@" extends=[CommandEvent] | extendsName=JavaIdentifier)
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//"@" extends=[CommandEvent]
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_5_1_0_0() { return cCommercialAtKeyword_5_1_0_0; }
		
		//extends=[CommandEvent]
		public Assignment getExtendsAssignment_5_1_0_1() { return cExtendsAssignment_5_1_0_1; }
		
		//[CommandEvent]
		public CrossReference getExtendsCommandEventCrossReference_5_1_0_1_0() { return cExtendsCommandEventCrossReference_5_1_0_1_0; }
		
		//ID
		public RuleCall getExtendsCommandEventIDTerminalRuleCall_5_1_0_1_0_1() { return cExtendsCommandEventIDTerminalRuleCall_5_1_0_1_0_1; }
		
		//extendsName=JavaIdentifier
		public Assignment getExtendsNameAssignment_5_1_1() { return cExtendsNameAssignment_5_1_1; }
		
		//JavaIdentifier
		public RuleCall getExtendsNameJavaIdentifierParserRuleCall_5_1_1_0() { return cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0; }
		
		//("with" "@"? traits+=[Trait])*
		public Group getGroup_6() { return cGroup_6; }
		
		//"with"
		public Keyword getWithKeyword_6_0() { return cWithKeyword_6_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_6_1() { return cCommercialAtKeyword_6_1; }
		
		//traits+=[Trait]
		public Assignment getTraitsAssignment_6_2() { return cTraitsAssignment_6_2; }
		
		//[Trait]
		public CrossReference getTraitsTraitCrossReference_6_2_0() { return cTraitsTraitCrossReference_6_2_0; }
		
		//ID
		public RuleCall getTraitsTraitIDTerminalRuleCall_6_2_0_1() { return cTraitsTraitIDTerminalRuleCall_6_2_0_1; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")?
		//& scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? &
		//("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "=" discriminatorColumn=STRING)? &
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength" "="
		//discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
		//validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
		//belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//repository=Repository? "}")?
		public Group getGroup_7() { return cGroup_7; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//"package"
		public Keyword getPackageKeyword_7_1_0() { return cPackageKeyword_7_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_1_1() { return cEqualsSignKeyword_7_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_7_1_2() { return cPackageAssignment_7_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_7_1_2_0() { return cPackageJavaIdentifierParserRuleCall_7_1_2_0; }
		
		//((cache?="cache" | NOT "cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "="
		//hint=STRING)? & ("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
		//("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
		//discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
		//"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & persistent?="persistent"? &
		//aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
		public UnorderedGroup getUnorderedGroup_7_2() { return cUnorderedGroup_7_2; }
		
		//(cache?="cache" | NOT "cache")?
		public Alternatives getAlternatives_7_2_0() { return cAlternatives_7_2_0; }
		
		//cache?="cache"
		public Assignment getCacheAssignment_7_2_0_0() { return cCacheAssignment_7_2_0_0; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_7_2_0_0_0() { return cCacheCacheKeyword_7_2_0_0_0; }
		
		//NOT "cache"
		public Group getGroup_7_2_0_1() { return cGroup_7_2_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_2_0_1_0() { return cNOTTerminalRuleCall_7_2_0_1_0; }
		
		//"cache"
		public Keyword getCacheKeyword_7_2_0_1_1() { return cCacheKeyword_7_2_0_1_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_7_2_1_0() { return cGapClassAssignment_7_2_1_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_7_2_1_0_0() { return cGapClassGapKeyword_7_2_1_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_7_2_1_1() { return cNoGapClassAssignment_7_2_1_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_7_2_1_1_0() { return cNoGapClassNogapKeyword_7_2_1_1_0; }
		
		//scaffold?="scaffold"?
		public Assignment getScaffoldAssignment_7_2_2() { return cScaffoldAssignment_7_2_2; }
		
		//"scaffold"
		public Keyword getScaffoldScaffoldKeyword_7_2_2_0() { return cScaffoldScaffoldKeyword_7_2_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_2_3() { return cGroup_7_2_3; }
		
		//"hint"
		public Keyword getHintKeyword_7_2_3_0() { return cHintKeyword_7_2_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_3_1() { return cEqualsSignKeyword_7_2_3_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_2_3_2() { return cHintAssignment_7_2_3_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_2_3_2_0() { return cHintSTRINGTerminalRuleCall_7_2_3_2_0; }
		
		//("databaseTable" "=" databaseTable=STRING)?
		public Group getGroup_7_2_4() { return cGroup_7_2_4; }
		
		//"databaseTable"
		public Keyword getDatabaseTableKeyword_7_2_4_0() { return cDatabaseTableKeyword_7_2_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_4_1() { return cEqualsSignKeyword_7_2_4_1; }
		
		//databaseTable=STRING
		public Assignment getDatabaseTableAssignment_7_2_4_2() { return cDatabaseTableAssignment_7_2_4_2; }
		
		//STRING
		public RuleCall getDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0() { return cDatabaseTableSTRINGTerminalRuleCall_7_2_4_2_0; }
		
		//("discriminatorValue" "=" discriminatorValue=STRING)?
		public Group getGroup_7_2_5() { return cGroup_7_2_5; }
		
		//"discriminatorValue"
		public Keyword getDiscriminatorValueKeyword_7_2_5_0() { return cDiscriminatorValueKeyword_7_2_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_5_1() { return cEqualsSignKeyword_7_2_5_1; }
		
		//discriminatorValue=STRING
		public Assignment getDiscriminatorValueAssignment_7_2_5_2() { return cDiscriminatorValueAssignment_7_2_5_2; }
		
		//STRING
		public RuleCall getDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0() { return cDiscriminatorValueSTRINGTerminalRuleCall_7_2_5_2_0; }
		
		//("discriminatorColumn" "=" discriminatorColumn=STRING)?
		public Group getGroup_7_2_6() { return cGroup_7_2_6; }
		
		//"discriminatorColumn"
		public Keyword getDiscriminatorColumnKeyword_7_2_6_0() { return cDiscriminatorColumnKeyword_7_2_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_6_1() { return cEqualsSignKeyword_7_2_6_1; }
		
		//discriminatorColumn=STRING
		public Assignment getDiscriminatorColumnAssignment_7_2_6_2() { return cDiscriminatorColumnAssignment_7_2_6_2; }
		
		//STRING
		public RuleCall getDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0() { return cDiscriminatorColumnSTRINGTerminalRuleCall_7_2_6_2_0; }
		
		//("discriminatorType" "=" discriminatorType=DiscriminatorType)?
		public Group getGroup_7_2_7() { return cGroup_7_2_7; }
		
		//"discriminatorType"
		public Keyword getDiscriminatorTypeKeyword_7_2_7_0() { return cDiscriminatorTypeKeyword_7_2_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_7_1() { return cEqualsSignKeyword_7_2_7_1; }
		
		//discriminatorType=DiscriminatorType
		public Assignment getDiscriminatorTypeAssignment_7_2_7_2() { return cDiscriminatorTypeAssignment_7_2_7_2; }
		
		//DiscriminatorType
		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_7_2_7_2_0; }
		
		//("discriminatorLength" "=" discriminatorLength=STRING)?
		public Group getGroup_7_2_8() { return cGroup_7_2_8; }
		
		//"discriminatorLength"
		public Keyword getDiscriminatorLengthKeyword_7_2_8_0() { return cDiscriminatorLengthKeyword_7_2_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_8_1() { return cEqualsSignKeyword_7_2_8_1; }
		
		//discriminatorLength=STRING
		public Assignment getDiscriminatorLengthAssignment_7_2_8_2() { return cDiscriminatorLengthAssignment_7_2_8_2; }
		
		//STRING
		public RuleCall getDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0() { return cDiscriminatorLengthSTRINGTerminalRuleCall_7_2_8_2_0; }
		
		//("inheritanceType" "=" inheritanceType=InheritanceType)?
		public Group getGroup_7_2_9() { return cGroup_7_2_9; }
		
		//"inheritanceType"
		public Keyword getInheritanceTypeKeyword_7_2_9_0() { return cInheritanceTypeKeyword_7_2_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_9_1() { return cEqualsSignKeyword_7_2_9_1; }
		
		//inheritanceType=InheritanceType
		public Assignment getInheritanceTypeAssignment_7_2_9_2() { return cInheritanceTypeAssignment_7_2_9_2; }
		
		//InheritanceType
		public RuleCall getInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0() { return cInheritanceTypeInheritanceTypeEnumRuleCall_7_2_9_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_7_2_10() { return cGroup_7_2_10; }
		
		//"validate"
		public Keyword getValidateKeyword_7_2_10_0() { return cValidateKeyword_7_2_10_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_2_10_1() { return cEqualsSignKeyword_7_2_10_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_7_2_10_2() { return cValidateAssignment_7_2_10_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_7_2_10_2_0() { return cValidateSTRINGTerminalRuleCall_7_2_10_2_0; }
		
		//persistent?="persistent"?
		public Assignment getPersistentAssignment_7_2_11() { return cPersistentAssignment_7_2_11; }
		
		//"persistent"
		public Keyword getPersistentPersistentKeyword_7_2_11_0() { return cPersistentPersistentKeyword_7_2_11_0; }
		
		//aggregateRoot?="aggregateRoot"?
		public Assignment getAggregateRootAssignment_7_2_12() { return cAggregateRootAssignment_7_2_12; }
		
		//"aggregateRoot"
		public Keyword getAggregateRootAggregateRootKeyword_7_2_12_0() { return cAggregateRootAggregateRootKeyword_7_2_12_0; }
		
		//("belongsTo" ("@"? belongsTo=[DomainObject]))?
		public Group getGroup_7_2_13() { return cGroup_7_2_13; }
		
		//"belongsTo"
		public Keyword getBelongsToKeyword_7_2_13_0() { return cBelongsToKeyword_7_2_13_0; }
		
		//("@"? belongsTo=[DomainObject])
		public Group getGroup_7_2_13_1() { return cGroup_7_2_13_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_7_2_13_1_0() { return cCommercialAtKeyword_7_2_13_1_0; }
		
		//belongsTo=[DomainObject]
		public Assignment getBelongsToAssignment_7_2_13_1_1() { return cBelongsToAssignment_7_2_13_1_1; }
		
		//[DomainObject]
		public CrossReference getBelongsToDomainObjectCrossReference_7_2_13_1_1_0() { return cBelongsToDomainObjectCrossReference_7_2_13_1_1_0; }
		
		//ID
		public RuleCall getBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1() { return cBelongsToDomainObjectIDTerminalRuleCall_7_2_13_1_1_0_1; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_7_3() { return cAlternatives_7_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_7_3_0() { return cAttributesAssignment_7_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_7_3_0_0() { return cAttributesAttributeParserRuleCall_7_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_7_3_1() { return cReferencesAssignment_7_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_7_3_1_0() { return cReferencesReferenceParserRuleCall_7_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_7_3_2() { return cOperationsAssignment_7_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_7_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_7_3_2_0; }
		
		//repository=Repository?
		public Assignment getRepositoryAssignment_7_4() { return cRepositoryAssignment_7_4; }
		
		//Repository
		public RuleCall getRepositoryRepositoryParserRuleCall_7_4_0() { return cRepositoryRepositoryParserRuleCall_7_4_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_7_5() { return cRightCurlyBracketKeyword_7_5; }
	}
	public class TraitElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Trait");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cTraitKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cPackageKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1_1 = (Keyword)cGroup_3_1.eContents().get(1);
		private final Assignment cPackageAssignment_3_1_2 = (Assignment)cGroup_3_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_3_1_2_0 = (RuleCall)cPackageAssignment_3_1_2.eContents().get(0);
		private final Group cGroup_3_2 = (Group)cGroup_3.eContents().get(2);
		private final Keyword cHintKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_2_1 = (Keyword)cGroup_3_2.eContents().get(1);
		private final Assignment cHintAssignment_3_2_2 = (Assignment)cGroup_3_2.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_3_2_2_0 = (RuleCall)cHintAssignment_3_2_2.eContents().get(0);
		private final Alternatives cAlternatives_3_3 = (Alternatives)cGroup_3.eContents().get(3);
		private final Assignment cAttributesAssignment_3_3_0 = (Assignment)cAlternatives_3_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_3_3_0_0 = (RuleCall)cAttributesAssignment_3_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_3_3_1 = (Assignment)cAlternatives_3_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_3_3_1_0 = (RuleCall)cReferencesAssignment_3_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_3_3_2 = (Assignment)cAlternatives_3_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_3_3_2_0 = (RuleCall)cOperationsAssignment_3_3_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		
		//Trait:
		//	doc=STRING?
		//	"Trait" name=ID ("{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)? (attributes+=Attribute |
		//	references+=Reference | operations+=DomainObjectOperation)*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "Trait" name=ID ("{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)?
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)* "}")?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"Trait"
		public Keyword getTraitKeyword_1() { return cTraitKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)? (attributes+=Attribute | references+=Reference |
		//operations+=DomainObjectOperation)* "}")?
		public Group getGroup_3() { return cGroup_3; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//"package"
		public Keyword getPackageKeyword_3_1_0() { return cPackageKeyword_3_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_1_1() { return cEqualsSignKeyword_3_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_3_1_2() { return cPackageAssignment_3_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_3_1_2_0() { return cPackageJavaIdentifierParserRuleCall_3_1_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_3_2() { return cGroup_3_2; }
		
		//"hint"
		public Keyword getHintKeyword_3_2_0() { return cHintKeyword_3_2_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_2_1() { return cEqualsSignKeyword_3_2_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_3_2_2() { return cHintAssignment_3_2_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_3_2_2_0() { return cHintSTRINGTerminalRuleCall_3_2_2_0; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_3_3() { return cAlternatives_3_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_3_3_0() { return cAttributesAssignment_3_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_3_3_0_0() { return cAttributesAttributeParserRuleCall_3_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_3_3_1() { return cReferencesAssignment_3_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_3_3_1_0() { return cReferencesReferenceParserRuleCall_3_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_3_3_2() { return cOperationsAssignment_3_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_3_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_3_3_2_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
	}
	public class DomainObjectOperationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DomainObjectOperation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Keyword cDefKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
		private final Keyword cAsteriskKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Assignment cVisibilityAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_3_0 = (RuleCall)cVisibilityAssignment_3.eContents().get(0);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cReturnTypeAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final RuleCall cReturnTypeComplexTypeParserRuleCall_4_0_0 = (RuleCall)cReturnTypeAssignment_4_0.eContents().get(0);
		private final Keyword cVoidKeyword_4_1 = (Keyword)cAlternatives_4.eContents().get(1);
		private final Assignment cNameAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cNameIDTerminalRuleCall_5_0 = (RuleCall)cNameAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftParenthesisKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cParametersAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_6_1_0 = (RuleCall)cParametersAssignment_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 cParametersAssignment_6_2_1 = (Assignment)cGroup_6_2.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_6_2_1_0 = (RuleCall)cParametersAssignment_6_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
		private final UnorderedGroup cUnorderedGroup_7 = (UnorderedGroup)cGroup.eContents().get(7);
		private final Group cGroup_7_0 = (Group)cUnorderedGroup_7.eContents().get(0);
		private final Keyword cThrowsKeyword_7_0_0 = (Keyword)cGroup_7_0.eContents().get(0);
		private final Assignment cThrowsAssignment_7_0_1 = (Assignment)cGroup_7_0.eContents().get(1);
		private final RuleCall cThrowsThrowsIdentifierParserRuleCall_7_0_1_0 = (RuleCall)cThrowsAssignment_7_0_1.eContents().get(0);
		private final Group cGroup_7_1 = (Group)cUnorderedGroup_7.eContents().get(1);
		private final Keyword cHintKeyword_7_1_0 = (Keyword)cGroup_7_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_1_1 = (Keyword)cGroup_7_1.eContents().get(1);
		private final Assignment cHintAssignment_7_1_2 = (Assignment)cGroup_7_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_1_2_0 = (RuleCall)cHintAssignment_7_1_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//DomainObjectOperation:
		//	doc=STRING? ("def" | '*') abstract?="abstract"? visibility=Visibility? (returnType=ComplexType | "void")?
		//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
		//	"=" hint=STRING)?)
		//	";";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? ("def" | '*') abstract?="abstract"? visibility=Visibility? (returnType=ComplexType | "void")? name=ID ("("
		//parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint" "="
		//hint=STRING)?) ";"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//("def" | '*')
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//"def"
		public Keyword getDefKeyword_1_0() { return cDefKeyword_1_0; }
		
		//'*'
		public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_3() { return cVisibilityAssignment_3; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_3_0() { return cVisibilityVisibilityEnumRuleCall_3_0; }
		
		//(returnType=ComplexType | "void")?
		public Alternatives getAlternatives_4() { return cAlternatives_4; }
		
		//returnType=ComplexType
		public Assignment getReturnTypeAssignment_4_0() { return cReturnTypeAssignment_4_0; }
		
		//ComplexType
		public RuleCall getReturnTypeComplexTypeParserRuleCall_4_0_0() { return cReturnTypeComplexTypeParserRuleCall_4_0_0; }
		
		//"void"
		public Keyword getVoidKeyword_4_1() { return cVoidKeyword_4_1; }
		
		//name=ID
		public Assignment getNameAssignment_5() { return cNameAssignment_5; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_5_0() { return cNameIDTerminalRuleCall_5_0; }
		
		//("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")?
		public Group getGroup_6() { return cGroup_6; }
		
		//"("
		public Keyword getLeftParenthesisKeyword_6_0() { return cLeftParenthesisKeyword_6_0; }
		
		//parameters+=Parameter?
		public Assignment getParametersAssignment_6_1() { return cParametersAssignment_6_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_6_1_0() { return cParametersParameterParserRuleCall_6_1_0; }
		
		//("," parameters+=Parameter)*
		public Group getGroup_6_2() { return cGroup_6_2; }
		
		//","
		public Keyword getCommaKeyword_6_2_0() { return cCommaKeyword_6_2_0; }
		
		//parameters+=Parameter
		public Assignment getParametersAssignment_6_2_1() { return cParametersAssignment_6_2_1; }
		
		//Parameter
		public RuleCall getParametersParameterParserRuleCall_6_2_1_0() { return cParametersParameterParserRuleCall_6_2_1_0; }
		
		//")"
		public Keyword getRightParenthesisKeyword_6_3() { return cRightParenthesisKeyword_6_3; }
		
		//(("throws" throws=ThrowsIdentifier)? & ("hint" "=" hint=STRING)?)
		public UnorderedGroup getUnorderedGroup_7() { return cUnorderedGroup_7; }
		
		//("throws" throws=ThrowsIdentifier)?
		public Group getGroup_7_0() { return cGroup_7_0; }
		
		//"throws"
		public Keyword getThrowsKeyword_7_0_0() { return cThrowsKeyword_7_0_0; }
		
		//throws=ThrowsIdentifier
		public Assignment getThrowsAssignment_7_0_1() { return cThrowsAssignment_7_0_1; }
		
		//ThrowsIdentifier
		public RuleCall getThrowsThrowsIdentifierParserRuleCall_7_0_1_0() { return cThrowsThrowsIdentifierParserRuleCall_7_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_1() { return cGroup_7_1; }
		
		//"hint"
		public Keyword getHintKeyword_7_1_0() { return cHintKeyword_7_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_1_1() { return cEqualsSignKeyword_7_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_1_2() { return cHintAssignment_7_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_1_2_0() { return cHintSTRINGTerminalRuleCall_7_1_2_0; }
		
		//";"
		public Keyword getSemicolonKeyword_8() { return cSemicolonKeyword_8; }
	}
	public class DataTransferObjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DataTransferObject");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentML_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Assignment cDocAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDocSTRINGTerminalRuleCall_1_0 = (RuleCall)cDocAssignment_1.eContents().get(0);
		private final Assignment cAbstractAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cAbstractAbstractKeyword_2_0 = (Keyword)cAbstractAssignment_2.eContents().get(0);
		private final Keyword cDataTransferObjectKeyword_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 cExtendsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Keyword cCommercialAtKeyword_5_1_0_0 = (Keyword)cGroup_5_1_0.eContents().get(0);
		private final Assignment cExtendsAssignment_5_1_0_1 = (Assignment)cGroup_5_1_0.eContents().get(1);
		private final CrossReference cExtendsDataTransferObjectCrossReference_5_1_0_1_0 = (CrossReference)cExtendsAssignment_5_1_0_1.eContents().get(0);
		private final RuleCall cExtendsDataTransferObjectIDTerminalRuleCall_5_1_0_1_0_1 = (RuleCall)cExtendsDataTransferObjectCrossReference_5_1_0_1_0.eContents().get(1);
		private final Assignment cExtendsNameAssignment_5_1_1 = (Assignment)cAlternatives_5_1.eContents().get(1);
		private final RuleCall cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0 = (RuleCall)cExtendsNameAssignment_5_1_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cGroup_6.eContents().get(1);
		private final Keyword cPackageKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_1_1 = (Keyword)cGroup_6_1.eContents().get(1);
		private final Assignment cPackageAssignment_6_1_2 = (Assignment)cGroup_6_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_6_1_2_0 = (RuleCall)cPackageAssignment_6_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_6_2 = (UnorderedGroup)cGroup_6.eContents().get(2);
		private final Alternatives cAlternatives_6_2_0 = (Alternatives)cUnorderedGroup_6_2.eContents().get(0);
		private final Assignment cGapClassAssignment_6_2_0_0 = (Assignment)cAlternatives_6_2_0.eContents().get(0);
		private final Keyword cGapClassGapKeyword_6_2_0_0_0 = (Keyword)cGapClassAssignment_6_2_0_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_6_2_0_1 = (Assignment)cAlternatives_6_2_0.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_6_2_0_1_0 = (Keyword)cNoGapClassAssignment_6_2_0_1.eContents().get(0);
		private final Group cGroup_6_2_1 = (Group)cUnorderedGroup_6_2.eContents().get(1);
		private final Keyword cHintKeyword_6_2_1_0 = (Keyword)cGroup_6_2_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_2_1_1 = (Keyword)cGroup_6_2_1.eContents().get(1);
		private final Assignment cHintAssignment_6_2_1_2 = (Assignment)cGroup_6_2_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_6_2_1_2_0 = (RuleCall)cHintAssignment_6_2_1_2.eContents().get(0);
		private final Group cGroup_6_2_2 = (Group)cUnorderedGroup_6_2.eContents().get(2);
		private final Keyword cValidateKeyword_6_2_2_0 = (Keyword)cGroup_6_2_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_2_2_1 = (Keyword)cGroup_6_2_2.eContents().get(1);
		private final Assignment cValidateAssignment_6_2_2_2 = (Assignment)cGroup_6_2_2.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_6_2_2_2_0 = (RuleCall)cValidateAssignment_6_2_2_2.eContents().get(0);
		private final Alternatives cAlternatives_6_3 = (Alternatives)cGroup_6.eContents().get(3);
		private final Assignment cAttributesAssignment_6_3_0 = (Assignment)cAlternatives_6_3.eContents().get(0);
		private final RuleCall cAttributesDtoAttributeParserRuleCall_6_3_0_0 = (RuleCall)cAttributesAssignment_6_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_6_3_1 = (Assignment)cAlternatives_6_3.eContents().get(1);
		private final RuleCall cReferencesDtoReferenceParserRuleCall_6_3_1_0 = (RuleCall)cReferencesAssignment_6_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		
		//DataTransferObject:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	abstract?="abstract"? "DataTransferObject" name=ID ("extends" ("@" extends=[DataTransferObject] |
		//	extendsName=JavaIdentifier))? ("{" ("package" "=" package=JavaIdentifier)? ((gapClass?="gap" | noGapClass?="nogap")? &
		//	("hint" "=" hint=STRING)? & ("validate" "=" validate=STRING)?) (attributes+=DtoAttribute | references+=DtoReference)*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? abstract?="abstract"? "DataTransferObject" name=ID ("extends" ("@"
		//extends=[DataTransferObject] | extendsName=JavaIdentifier))? ("{" ("package" "=" package=JavaIdentifier)?
		//((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & ("validate" "=" validate=STRING)?)
		//(attributes+=DtoAttribute | references+=DtoReference)* "}")?
		public Group getGroup() { return cGroup; }
		
		//comment=ML_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//ML_COMMENT
		public RuleCall getCommentML_COMMENTTerminalRuleCall_0_0() { return cCommentML_COMMENTTerminalRuleCall_0_0; }
		
		//doc=STRING?
		public Assignment getDocAssignment_1() { return cDocAssignment_1; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_1_0() { return cDocSTRINGTerminalRuleCall_1_0; }
		
		//abstract?="abstract"?
		public Assignment getAbstractAssignment_2() { return cAbstractAssignment_2; }
		
		//"abstract"
		public Keyword getAbstractAbstractKeyword_2_0() { return cAbstractAbstractKeyword_2_0; }
		
		//"DataTransferObject"
		public Keyword getDataTransferObjectKeyword_3() { return cDataTransferObjectKeyword_3; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//("extends" ("@" extends=[DataTransferObject] | extendsName=JavaIdentifier))?
		public Group getGroup_5() { return cGroup_5; }
		
		//"extends"
		public Keyword getExtendsKeyword_5_0() { return cExtendsKeyword_5_0; }
		
		//("@" extends=[DataTransferObject] | extendsName=JavaIdentifier)
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//"@" extends=[DataTransferObject]
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_5_1_0_0() { return cCommercialAtKeyword_5_1_0_0; }
		
		//extends=[DataTransferObject]
		public Assignment getExtendsAssignment_5_1_0_1() { return cExtendsAssignment_5_1_0_1; }
		
		//[DataTransferObject]
		public CrossReference getExtendsDataTransferObjectCrossReference_5_1_0_1_0() { return cExtendsDataTransferObjectCrossReference_5_1_0_1_0; }
		
		//ID
		public RuleCall getExtendsDataTransferObjectIDTerminalRuleCall_5_1_0_1_0_1() { return cExtendsDataTransferObjectIDTerminalRuleCall_5_1_0_1_0_1; }
		
		//extendsName=JavaIdentifier
		public Assignment getExtendsNameAssignment_5_1_1() { return cExtendsNameAssignment_5_1_1; }
		
		//JavaIdentifier
		public RuleCall getExtendsNameJavaIdentifierParserRuleCall_5_1_1_0() { return cExtendsNameJavaIdentifierParserRuleCall_5_1_1_0; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
		//("validate" "=" validate=STRING)?) (attributes+=DtoAttribute | references+=DtoReference)* "}")?
		public Group getGroup_6() { return cGroup_6; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//"package"
		public Keyword getPackageKeyword_6_1_0() { return cPackageKeyword_6_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_1_1() { return cEqualsSignKeyword_6_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_6_1_2() { return cPackageAssignment_6_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_6_1_2_0() { return cPackageJavaIdentifierParserRuleCall_6_1_2_0; }
		
		//((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & ("validate" "=" validate=STRING)?)
		public UnorderedGroup getUnorderedGroup_6_2() { return cUnorderedGroup_6_2; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_6_2_0() { return cAlternatives_6_2_0; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_6_2_0_0() { return cGapClassAssignment_6_2_0_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_6_2_0_0_0() { return cGapClassGapKeyword_6_2_0_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_6_2_0_1() { return cNoGapClassAssignment_6_2_0_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_6_2_0_1_0() { return cNoGapClassNogapKeyword_6_2_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_6_2_1() { return cGroup_6_2_1; }
		
		//"hint"
		public Keyword getHintKeyword_6_2_1_0() { return cHintKeyword_6_2_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_2_1_1() { return cEqualsSignKeyword_6_2_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_6_2_1_2() { return cHintAssignment_6_2_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_6_2_1_2_0() { return cHintSTRINGTerminalRuleCall_6_2_1_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_6_2_2() { return cGroup_6_2_2; }
		
		//"validate"
		public Keyword getValidateKeyword_6_2_2_0() { return cValidateKeyword_6_2_2_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_2_2_1() { return cEqualsSignKeyword_6_2_2_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_6_2_2_2() { return cValidateAssignment_6_2_2_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_6_2_2_2_0() { return cValidateSTRINGTerminalRuleCall_6_2_2_2_0; }
		
		//(attributes+=DtoAttribute | references+=DtoReference)*
		public Alternatives getAlternatives_6_3() { return cAlternatives_6_3; }
		
		//attributes+=DtoAttribute
		public Assignment getAttributesAssignment_6_3_0() { return cAttributesAssignment_6_3_0; }
		
		//DtoAttribute
		public RuleCall getAttributesDtoAttributeParserRuleCall_6_3_0_0() { return cAttributesDtoAttributeParserRuleCall_6_3_0_0; }
		
		//references+=DtoReference
		public Assignment getReferencesAssignment_6_3_1() { return cReferencesAssignment_6_3_1; }
		
		//DtoReference
		public RuleCall getReferencesDtoReferenceParserRuleCall_6_3_1_0() { return cReferencesDtoReferenceParserRuleCall_6_3_1_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
	}
	public class BasicTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.BasicType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cBasicTypeKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cWithKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cCommercialAtKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cTraitsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final CrossReference cTraitsTraitCrossReference_3_2_0 = (CrossReference)cTraitsAssignment_3_2.eContents().get(0);
		private final RuleCall cTraitsTraitIDTerminalRuleCall_3_2_0_1 = (RuleCall)cTraitsTraitCrossReference_3_2_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Keyword cPackageKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
		private final Assignment cPackageAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_4_1_2_0 = (RuleCall)cPackageAssignment_4_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4_2 = (UnorderedGroup)cGroup_4.eContents().get(2);
		private final Alternatives cAlternatives_4_2_0 = (Alternatives)cUnorderedGroup_4_2.eContents().get(0);
		private final Group cGroup_4_2_0_0 = (Group)cAlternatives_4_2_0.eContents().get(0);
		private final Assignment cNotImmutableAssignment_4_2_0_0_0 = (Assignment)cGroup_4_2_0_0.eContents().get(0);
		private final RuleCall cNotImmutableNOTTerminalRuleCall_4_2_0_0_0_0 = (RuleCall)cNotImmutableAssignment_4_2_0_0_0.eContents().get(0);
		private final Keyword cImmutableKeyword_4_2_0_0_1 = (Keyword)cGroup_4_2_0_0.eContents().get(1);
		private final Keyword cImmutableKeyword_4_2_0_1 = (Keyword)cAlternatives_4_2_0.eContents().get(1);
		private final Alternatives cAlternatives_4_2_1 = (Alternatives)cUnorderedGroup_4_2.eContents().get(1);
		private final Assignment cGapClassAssignment_4_2_1_0 = (Assignment)cAlternatives_4_2_1.eContents().get(0);
		private final Keyword cGapClassGapKeyword_4_2_1_0_0 = (Keyword)cGapClassAssignment_4_2_1_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_4_2_1_1 = (Assignment)cAlternatives_4_2_1.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_4_2_1_1_0 = (Keyword)cNoGapClassAssignment_4_2_1_1.eContents().get(0);
		private final Group cGroup_4_2_2 = (Group)cUnorderedGroup_4_2.eContents().get(2);
		private final Keyword cHintKeyword_4_2_2_0 = (Keyword)cGroup_4_2_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_2_2_1 = (Keyword)cGroup_4_2_2.eContents().get(1);
		private final Assignment cHintAssignment_4_2_2_2 = (Assignment)cGroup_4_2_2.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_4_2_2_2_0 = (RuleCall)cHintAssignment_4_2_2_2.eContents().get(0);
		private final Alternatives cAlternatives_4_3 = (Alternatives)cGroup_4.eContents().get(3);
		private final Assignment cAttributesAssignment_4_3_0 = (Assignment)cAlternatives_4_3.eContents().get(0);
		private final RuleCall cAttributesAttributeParserRuleCall_4_3_0_0 = (RuleCall)cAttributesAssignment_4_3_0.eContents().get(0);
		private final Assignment cReferencesAssignment_4_3_1 = (Assignment)cAlternatives_4_3.eContents().get(1);
		private final RuleCall cReferencesReferenceParserRuleCall_4_3_1_0 = (RuleCall)cReferencesAssignment_4_3_1.eContents().get(0);
		private final Assignment cOperationsAssignment_4_3_2 = (Assignment)cAlternatives_4_3.eContents().get(2);
		private final RuleCall cOperationsDomainObjectOperationParserRuleCall_4_3_2_0 = (RuleCall)cOperationsAssignment_4_3_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
		
		//BasicType:
		//	doc=STRING?
		//	"BasicType" name=ID ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notImmutable?=NOT
		//	"immutable" | "immutable")? & (gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)?)
		//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "BasicType" name=ID ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)?
		//((notImmutable?=NOT "immutable" | "immutable")? & (gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)?)
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)* "}")?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"BasicType"
		public Keyword getBasicTypeKeyword_1() { return cBasicTypeKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//("with" "@"? traits+=[Trait])*
		public Group getGroup_3() { return cGroup_3; }
		
		//"with"
		public Keyword getWithKeyword_3_0() { return cWithKeyword_3_0; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_3_1() { return cCommercialAtKeyword_3_1; }
		
		//traits+=[Trait]
		public Assignment getTraitsAssignment_3_2() { return cTraitsAssignment_3_2; }
		
		//[Trait]
		public CrossReference getTraitsTraitCrossReference_3_2_0() { return cTraitsTraitCrossReference_3_2_0; }
		
		//ID
		public RuleCall getTraitsTraitIDTerminalRuleCall_3_2_0_1() { return cTraitsTraitIDTerminalRuleCall_3_2_0_1; }
		
		//("{" ("package" "=" package=JavaIdentifier)? ((notImmutable?=NOT "immutable" | "immutable")? & (gapClass?="gap" |
		//noGapClass?="nogap")? & ("hint" "=" hint=STRING)?) (attributes+=Attribute | references+=Reference |
		//operations+=DomainObjectOperation)* "}")?
		public Group getGroup_4() { return cGroup_4; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_4_1() { return cGroup_4_1; }
		
		//"package"
		public Keyword getPackageKeyword_4_1_0() { return cPackageKeyword_4_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_4_1_2() { return cPackageAssignment_4_1_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_4_1_2_0() { return cPackageJavaIdentifierParserRuleCall_4_1_2_0; }
		
		//((notImmutable?=NOT "immutable" | "immutable")? & (gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)?)
		public UnorderedGroup getUnorderedGroup_4_2() { return cUnorderedGroup_4_2; }
		
		//(notImmutable?=NOT "immutable" | "immutable")?
		public Alternatives getAlternatives_4_2_0() { return cAlternatives_4_2_0; }
		
		//notImmutable?=NOT "immutable"
		public Group getGroup_4_2_0_0() { return cGroup_4_2_0_0; }
		
		//notImmutable?=NOT
		public Assignment getNotImmutableAssignment_4_2_0_0_0() { return cNotImmutableAssignment_4_2_0_0_0; }
		
		//NOT
		public RuleCall getNotImmutableNOTTerminalRuleCall_4_2_0_0_0_0() { return cNotImmutableNOTTerminalRuleCall_4_2_0_0_0_0; }
		
		//"immutable"
		public Keyword getImmutableKeyword_4_2_0_0_1() { return cImmutableKeyword_4_2_0_0_1; }
		
		//"immutable"
		public Keyword getImmutableKeyword_4_2_0_1() { return cImmutableKeyword_4_2_0_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_4_2_1() { return cAlternatives_4_2_1; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_4_2_1_0() { return cGapClassAssignment_4_2_1_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_4_2_1_0_0() { return cGapClassGapKeyword_4_2_1_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_4_2_1_1() { return cNoGapClassAssignment_4_2_1_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_4_2_1_1_0() { return cNoGapClassNogapKeyword_4_2_1_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_4_2_2() { return cGroup_4_2_2; }
		
		//"hint"
		public Keyword getHintKeyword_4_2_2_0() { return cHintKeyword_4_2_2_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_2_2_1() { return cEqualsSignKeyword_4_2_2_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_4_2_2_2() { return cHintAssignment_4_2_2_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_4_2_2_2_0() { return cHintSTRINGTerminalRuleCall_4_2_2_2_0; }
		
		//(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
		public Alternatives getAlternatives_4_3() { return cAlternatives_4_3; }
		
		//attributes+=Attribute
		public Assignment getAttributesAssignment_4_3_0() { return cAttributesAssignment_4_3_0; }
		
		//Attribute
		public RuleCall getAttributesAttributeParserRuleCall_4_3_0_0() { return cAttributesAttributeParserRuleCall_4_3_0_0; }
		
		//references+=Reference
		public Assignment getReferencesAssignment_4_3_1() { return cReferencesAssignment_4_3_1; }
		
		//Reference
		public RuleCall getReferencesReferenceParserRuleCall_4_3_1_0() { return cReferencesReferenceParserRuleCall_4_3_1_0; }
		
		//operations+=DomainObjectOperation
		public Assignment getOperationsAssignment_4_3_2() { return cOperationsAssignment_4_3_2; }
		
		//DomainObjectOperation
		public RuleCall getOperationsDomainObjectOperationParserRuleCall_4_3_2_0() { return cOperationsDomainObjectOperationParserRuleCall_4_3_2_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_4_4() { return cRightCurlyBracketKeyword_4_4; }
	}
	public class AttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Attribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cVisibilityAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_1_0 = (RuleCall)cVisibilityAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cCollectionTypeAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final RuleCall cCollectionTypeCollectionTypeEnumRuleCall_2_0_0_0 = (RuleCall)cCollectionTypeAssignment_2_0_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_2_0_1 = (Keyword)cGroup_2_0.eContents().get(1);
		private final Assignment cTypeAssignment_2_0_2 = (Assignment)cGroup_2_0.eContents().get(2);
		private final RuleCall cTypeTypeParserRuleCall_2_0_2_0 = (RuleCall)cTypeAssignment_2_0_2.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_2_0_3 = (Keyword)cGroup_2_0.eContents().get(3);
		private final Assignment cTypeAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final RuleCall cTypeTypeParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
		private final Assignment cKeyAssignment_4_0 = (Assignment)cUnorderedGroup_4.eContents().get(0);
		private final Keyword cKeyKeyKeyword_4_0_0 = (Keyword)cKeyAssignment_4_0.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cUnorderedGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNotChangeableAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final RuleCall cNotChangeableNOTTerminalRuleCall_4_1_0_0_0 = (RuleCall)cNotChangeableAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cChangeableKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Keyword cChangeableKeyword_4_1_1 = (Keyword)cAlternatives_4_1.eContents().get(1);
		private final Alternatives cAlternatives_4_2 = (Alternatives)cUnorderedGroup_4.eContents().get(2);
		private final Assignment cRequiredAssignment_4_2_0 = (Assignment)cAlternatives_4_2.eContents().get(0);
		private final Keyword cRequiredRequiredKeyword_4_2_0_0 = (Keyword)cRequiredAssignment_4_2_0.eContents().get(0);
		private final Group cGroup_4_2_1 = (Group)cAlternatives_4_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_4_2_1_0 = (RuleCall)cGroup_4_2_1.eContents().get(0);
		private final Keyword cRequiredKeyword_4_2_1_1 = (Keyword)cGroup_4_2_1.eContents().get(1);
		private final Group cGroup_4_3 = (Group)cUnorderedGroup_4.eContents().get(3);
		private final Alternatives cAlternatives_4_3_0 = (Alternatives)cGroup_4_3.eContents().get(0);
		private final Assignment cNullableAssignment_4_3_0_0 = (Assignment)cAlternatives_4_3_0.eContents().get(0);
		private final Keyword cNullableNullableKeyword_4_3_0_0_0 = (Keyword)cNullableAssignment_4_3_0_0.eContents().get(0);
		private final Group cGroup_4_3_0_1 = (Group)cAlternatives_4_3_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_4_3_0_1_0 = (RuleCall)cGroup_4_3_0_1.eContents().get(0);
		private final Keyword cNullableKeyword_4_3_0_1_1 = (Keyword)cGroup_4_3_0_1.eContents().get(1);
		private final Group cGroup_4_3_1 = (Group)cGroup_4_3.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_3_1_0 = (Keyword)cGroup_4_3_1.eContents().get(0);
		private final Assignment cNullableMessageAssignment_4_3_1_1 = (Assignment)cGroup_4_3_1.eContents().get(1);
		private final RuleCall cNullableMessageSTRINGTerminalRuleCall_4_3_1_1_0 = (RuleCall)cNullableMessageAssignment_4_3_1_1.eContents().get(0);
		private final Assignment cIndexAssignment_4_4 = (Assignment)cUnorderedGroup_4.eContents().get(4);
		private final Keyword cIndexIndexKeyword_4_4_0 = (Keyword)cIndexAssignment_4_4.eContents().get(0);
		private final Group cGroup_4_5 = (Group)cUnorderedGroup_4.eContents().get(5);
		private final Assignment cAssertFalseAssignment_4_5_0 = (Assignment)cGroup_4_5.eContents().get(0);
		private final Keyword cAssertFalseAssertFalseKeyword_4_5_0_0 = (Keyword)cAssertFalseAssignment_4_5_0.eContents().get(0);
		private final Group cGroup_4_5_1 = (Group)cGroup_4_5.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_5_1_0 = (Keyword)cGroup_4_5_1.eContents().get(0);
		private final Assignment cAssertFalseMessageAssignment_4_5_1_1 = (Assignment)cGroup_4_5_1.eContents().get(1);
		private final RuleCall cAssertFalseMessageSTRINGTerminalRuleCall_4_5_1_1_0 = (RuleCall)cAssertFalseMessageAssignment_4_5_1_1.eContents().get(0);
		private final Group cGroup_4_6 = (Group)cUnorderedGroup_4.eContents().get(6);
		private final Assignment cAssertTrueAssignment_4_6_0 = (Assignment)cGroup_4_6.eContents().get(0);
		private final Keyword cAssertTrueAssertTrueKeyword_4_6_0_0 = (Keyword)cAssertTrueAssignment_4_6_0.eContents().get(0);
		private final Group cGroup_4_6_1 = (Group)cGroup_4_6.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_6_1_0 = (Keyword)cGroup_4_6_1.eContents().get(0);
		private final Assignment cAssertTrueMessageAssignment_4_6_1_1 = (Assignment)cGroup_4_6_1.eContents().get(1);
		private final RuleCall cAssertTrueMessageSTRINGTerminalRuleCall_4_6_1_1_0 = (RuleCall)cAssertTrueMessageAssignment_4_6_1_1.eContents().get(0);
		private final Group cGroup_4_7 = (Group)cUnorderedGroup_4.eContents().get(7);
		private final Keyword cHintKeyword_4_7_0 = (Keyword)cGroup_4_7.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_7_1 = (Keyword)cGroup_4_7.eContents().get(1);
		private final Assignment cHintAssignment_4_7_2 = (Assignment)cGroup_4_7.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_4_7_2_0 = (RuleCall)cHintAssignment_4_7_2.eContents().get(0);
		private final Group cGroup_4_8 = (Group)cUnorderedGroup_4.eContents().get(8);
		private final Assignment cCreditCardNumberAssignment_4_8_0 = (Assignment)cGroup_4_8.eContents().get(0);
		private final Keyword cCreditCardNumberCreditCardNumberKeyword_4_8_0_0 = (Keyword)cCreditCardNumberAssignment_4_8_0.eContents().get(0);
		private final Group cGroup_4_8_1 = (Group)cGroup_4_8.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_8_1_0 = (Keyword)cGroup_4_8_1.eContents().get(0);
		private final Assignment cCreditCardNumberMessageAssignment_4_8_1_1 = (Assignment)cGroup_4_8_1.eContents().get(1);
		private final RuleCall cCreditCardNumberMessageSTRINGTerminalRuleCall_4_8_1_1_0 = (RuleCall)cCreditCardNumberMessageAssignment_4_8_1_1.eContents().get(0);
		private final Group cGroup_4_9 = (Group)cUnorderedGroup_4.eContents().get(9);
		private final Keyword cDigitsKeyword_4_9_0 = (Keyword)cGroup_4_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_9_1 = (Keyword)cGroup_4_9.eContents().get(1);
		private final Assignment cDigitsAssignment_4_9_2 = (Assignment)cGroup_4_9.eContents().get(2);
		private final RuleCall cDigitsSTRINGTerminalRuleCall_4_9_2_0 = (RuleCall)cDigitsAssignment_4_9_2.eContents().get(0);
		private final Group cGroup_4_10 = (Group)cUnorderedGroup_4.eContents().get(10);
		private final Assignment cEmailAssignment_4_10_0 = (Assignment)cGroup_4_10.eContents().get(0);
		private final Keyword cEmailEmailKeyword_4_10_0_0 = (Keyword)cEmailAssignment_4_10_0.eContents().get(0);
		private final Group cGroup_4_10_1 = (Group)cGroup_4_10.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_10_1_0 = (Keyword)cGroup_4_10_1.eContents().get(0);
		private final Assignment cEmailMessageAssignment_4_10_1_1 = (Assignment)cGroup_4_10_1.eContents().get(1);
		private final RuleCall cEmailMessageSTRINGTerminalRuleCall_4_10_1_1_0 = (RuleCall)cEmailMessageAssignment_4_10_1_1.eContents().get(0);
		private final Group cGroup_4_11 = (Group)cUnorderedGroup_4.eContents().get(11);
		private final Assignment cFutureAssignment_4_11_0 = (Assignment)cGroup_4_11.eContents().get(0);
		private final Keyword cFutureFutureKeyword_4_11_0_0 = (Keyword)cFutureAssignment_4_11_0.eContents().get(0);
		private final Group cGroup_4_11_1 = (Group)cGroup_4_11.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_11_1_0 = (Keyword)cGroup_4_11_1.eContents().get(0);
		private final Assignment cFutureMessageAssignment_4_11_1_1 = (Assignment)cGroup_4_11_1.eContents().get(1);
		private final RuleCall cFutureMessageSTRINGTerminalRuleCall_4_11_1_1_0 = (RuleCall)cFutureMessageAssignment_4_11_1_1.eContents().get(0);
		private final Group cGroup_4_12 = (Group)cUnorderedGroup_4.eContents().get(12);
		private final Assignment cPastAssignment_4_12_0 = (Assignment)cGroup_4_12.eContents().get(0);
		private final Keyword cPastPastKeyword_4_12_0_0 = (Keyword)cPastAssignment_4_12_0.eContents().get(0);
		private final Group cGroup_4_12_1 = (Group)cGroup_4_12.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_12_1_0 = (Keyword)cGroup_4_12_1.eContents().get(0);
		private final Assignment cPastMessageAssignment_4_12_1_1 = (Assignment)cGroup_4_12_1.eContents().get(1);
		private final RuleCall cPastMessageSTRINGTerminalRuleCall_4_12_1_1_0 = (RuleCall)cPastMessageAssignment_4_12_1_1.eContents().get(0);
		private final Group cGroup_4_13 = (Group)cUnorderedGroup_4.eContents().get(13);
		private final Keyword cMaxKeyword_4_13_0 = (Keyword)cGroup_4_13.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_13_1 = (Keyword)cGroup_4_13.eContents().get(1);
		private final Assignment cMaxAssignment_4_13_2 = (Assignment)cGroup_4_13.eContents().get(2);
		private final RuleCall cMaxSTRINGTerminalRuleCall_4_13_2_0 = (RuleCall)cMaxAssignment_4_13_2.eContents().get(0);
		private final Group cGroup_4_14 = (Group)cUnorderedGroup_4.eContents().get(14);
		private final Keyword cMinKeyword_4_14_0 = (Keyword)cGroup_4_14.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_14_1 = (Keyword)cGroup_4_14.eContents().get(1);
		private final Assignment cMinAssignment_4_14_2 = (Assignment)cGroup_4_14.eContents().get(2);
		private final RuleCall cMinSTRINGTerminalRuleCall_4_14_2_0 = (RuleCall)cMinAssignment_4_14_2.eContents().get(0);
		private final Group cGroup_4_15 = (Group)cUnorderedGroup_4.eContents().get(15);
		private final Keyword cDecimalMaxKeyword_4_15_0 = (Keyword)cGroup_4_15.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_15_1 = (Keyword)cGroup_4_15.eContents().get(1);
		private final Assignment cDecimalMaxAssignment_4_15_2 = (Assignment)cGroup_4_15.eContents().get(2);
		private final RuleCall cDecimalMaxSTRINGTerminalRuleCall_4_15_2_0 = (RuleCall)cDecimalMaxAssignment_4_15_2.eContents().get(0);
		private final Group cGroup_4_16 = (Group)cUnorderedGroup_4.eContents().get(16);
		private final Keyword cDecimalMinKeyword_4_16_0 = (Keyword)cGroup_4_16.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_16_1 = (Keyword)cGroup_4_16.eContents().get(1);
		private final Assignment cDecimalMinAssignment_4_16_2 = (Assignment)cGroup_4_16.eContents().get(2);
		private final RuleCall cDecimalMinSTRINGTerminalRuleCall_4_16_2_0 = (RuleCall)cDecimalMinAssignment_4_16_2.eContents().get(0);
		private final Group cGroup_4_17 = (Group)cUnorderedGroup_4.eContents().get(17);
		private final Assignment cNotEmptyAssignment_4_17_0 = (Assignment)cGroup_4_17.eContents().get(0);
		private final Keyword cNotEmptyNotEmptyKeyword_4_17_0_0 = (Keyword)cNotEmptyAssignment_4_17_0.eContents().get(0);
		private final Group cGroup_4_17_1 = (Group)cGroup_4_17.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_17_1_0 = (Keyword)cGroup_4_17_1.eContents().get(0);
		private final Assignment cNotEmptyMessageAssignment_4_17_1_1 = (Assignment)cGroup_4_17_1.eContents().get(1);
		private final RuleCall cNotEmptyMessageSTRINGTerminalRuleCall_4_17_1_1_0 = (RuleCall)cNotEmptyMessageAssignment_4_17_1_1.eContents().get(0);
		private final Group cGroup_4_18 = (Group)cUnorderedGroup_4.eContents().get(18);
		private final Assignment cNotBlankAssignment_4_18_0 = (Assignment)cGroup_4_18.eContents().get(0);
		private final Keyword cNotBlankNotBlankKeyword_4_18_0_0 = (Keyword)cNotBlankAssignment_4_18_0.eContents().get(0);
		private final Group cGroup_4_18_1 = (Group)cGroup_4_18.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_18_1_0 = (Keyword)cGroup_4_18_1.eContents().get(0);
		private final Assignment cNotBlankMessageAssignment_4_18_1_1 = (Assignment)cGroup_4_18_1.eContents().get(1);
		private final RuleCall cNotBlankMessageSTRINGTerminalRuleCall_4_18_1_1_0 = (RuleCall)cNotBlankMessageAssignment_4_18_1_1.eContents().get(0);
		private final Group cGroup_4_19 = (Group)cUnorderedGroup_4.eContents().get(19);
		private final Keyword cPatternKeyword_4_19_0 = (Keyword)cGroup_4_19.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_19_1 = (Keyword)cGroup_4_19.eContents().get(1);
		private final Assignment cPatternAssignment_4_19_2 = (Assignment)cGroup_4_19.eContents().get(2);
		private final RuleCall cPatternSTRINGTerminalRuleCall_4_19_2_0 = (RuleCall)cPatternAssignment_4_19_2.eContents().get(0);
		private final Group cGroup_4_20 = (Group)cUnorderedGroup_4.eContents().get(20);
		private final Keyword cRangeKeyword_4_20_0 = (Keyword)cGroup_4_20.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_20_1 = (Keyword)cGroup_4_20.eContents().get(1);
		private final Assignment cRangeAssignment_4_20_2 = (Assignment)cGroup_4_20.eContents().get(2);
		private final RuleCall cRangeSTRINGTerminalRuleCall_4_20_2_0 = (RuleCall)cRangeAssignment_4_20_2.eContents().get(0);
		private final Group cGroup_4_21 = (Group)cUnorderedGroup_4.eContents().get(21);
		private final Keyword cSizeKeyword_4_21_0 = (Keyword)cGroup_4_21.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_21_1 = (Keyword)cGroup_4_21.eContents().get(1);
		private final Assignment cSizeAssignment_4_21_2 = (Assignment)cGroup_4_21.eContents().get(2);
		private final RuleCall cSizeSTRINGTerminalRuleCall_4_21_2_0 = (RuleCall)cSizeAssignment_4_21_2.eContents().get(0);
		private final Group cGroup_4_22 = (Group)cUnorderedGroup_4.eContents().get(22);
		private final Keyword cLengthKeyword_4_22_0 = (Keyword)cGroup_4_22.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_22_1 = (Keyword)cGroup_4_22.eContents().get(1);
		private final Assignment cLengthAssignment_4_22_2 = (Assignment)cGroup_4_22.eContents().get(2);
		private final RuleCall cLengthSTRINGTerminalRuleCall_4_22_2_0 = (RuleCall)cLengthAssignment_4_22_2.eContents().get(0);
		private final Group cGroup_4_23 = (Group)cUnorderedGroup_4.eContents().get(23);
		private final Keyword cScriptAssertKeyword_4_23_0 = (Keyword)cGroup_4_23.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_23_1 = (Keyword)cGroup_4_23.eContents().get(1);
		private final Assignment cScriptAssertAssignment_4_23_2 = (Assignment)cGroup_4_23.eContents().get(2);
		private final RuleCall cScriptAssertSTRINGTerminalRuleCall_4_23_2_0 = (RuleCall)cScriptAssertAssignment_4_23_2.eContents().get(0);
		private final Group cGroup_4_24 = (Group)cUnorderedGroup_4.eContents().get(24);
		private final Keyword cUrlKeyword_4_24_0 = (Keyword)cGroup_4_24.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_24_1 = (Keyword)cGroup_4_24.eContents().get(1);
		private final Assignment cUrlAssignment_4_24_2 = (Assignment)cGroup_4_24.eContents().get(2);
		private final RuleCall cUrlSTRINGTerminalRuleCall_4_24_2_0 = (RuleCall)cUrlAssignment_4_24_2.eContents().get(0);
		private final Group cGroup_4_25 = (Group)cUnorderedGroup_4.eContents().get(25);
		private final Keyword cValidateKeyword_4_25_0 = (Keyword)cGroup_4_25.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_25_1 = (Keyword)cGroup_4_25.eContents().get(1);
		private final Assignment cValidateAssignment_4_25_2 = (Assignment)cGroup_4_25.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_4_25_2_0 = (RuleCall)cValidateAssignment_4_25_2.eContents().get(0);
		private final Assignment cTransientAssignment_4_26 = (Assignment)cUnorderedGroup_4.eContents().get(26);
		private final Keyword cTransientTransientKeyword_4_26_0 = (Keyword)cTransientAssignment_4_26.eContents().get(0);
		private final Group cGroup_4_27 = (Group)cUnorderedGroup_4.eContents().get(27);
		private final Keyword cDatabaseColumnKeyword_4_27_0 = (Keyword)cGroup_4_27.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_27_1 = (Keyword)cGroup_4_27.eContents().get(1);
		private final Assignment cDatabaseColumnAssignment_4_27_2 = (Assignment)cGroup_4_27.eContents().get(2);
		private final RuleCall cDatabaseColumnSTRINGTerminalRuleCall_4_27_2_0 = (RuleCall)cDatabaseColumnAssignment_4_27_2.eContents().get(0);
		private final Group cGroup_4_28 = (Group)cUnorderedGroup_4.eContents().get(28);
		private final Keyword cDatabaseTypeKeyword_4_28_0 = (Keyword)cGroup_4_28.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_28_1 = (Keyword)cGroup_4_28.eContents().get(1);
		private final Assignment cDatabaseTypeAssignment_4_28_2 = (Assignment)cGroup_4_28.eContents().get(2);
		private final RuleCall cDatabaseTypeSTRINGTerminalRuleCall_4_28_2_0 = (RuleCall)cDatabaseTypeAssignment_4_28_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//Attribute:
		//	doc=STRING?
		//	visibility=Visibility? (collectionType=CollectionType "<" type=Type ">" | type=Type) name=ID (key?="key"? &
		//	(notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable"
		//	| NOT "nullable") ("=" nullableMessage=STRING)?)? & index?="index"? & (assertFalse?="assertFalse" ("="
		//	assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? & ("hint" "="
		//	hint=STRING)? & (creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "="
		//	digits=STRING)? & (email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? &
		//	(past?="past" ("=" pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "="
		//	decimalMax=STRING)? & ("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? &
		//	(notBlank?="notBlank" ("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)?
		//	& ("size" "=" size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "="
		//	url=STRING)? & ("validate" "=" validate=STRING)? & transient?="transient"? & ("databaseColumn" "="
		//	databaseColumn=STRING)? & ("databaseType" "=" databaseType=STRING)?) ";"?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? visibility=Visibility? (collectionType=CollectionType "<" type=Type ">" | type=Type) name=ID (key?="key"? &
		//(notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable" |
		//NOT "nullable") ("=" nullableMessage=STRING)?)? & index?="index"? & (assertFalse?="assertFalse" ("="
		//assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? & ("hint" "=" hint=STRING)?
		//& (creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "=" digits=STRING)? &
		//(email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? & (past?="past" ("="
		//pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? &
		//("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank"
		//("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "="
		//size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? &
		//("validate" "=" validate=STRING)? & transient?="transient"? & ("databaseColumn" "=" databaseColumn=STRING)? &
		//("databaseType" "=" databaseType=STRING)?) ";"?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_1_0() { return cVisibilityVisibilityEnumRuleCall_1_0; }
		
		//(collectionType=CollectionType "<" type=Type ">" | type=Type)
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//collectionType=CollectionType "<" type=Type ">"
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//collectionType=CollectionType
		public Assignment getCollectionTypeAssignment_2_0_0() { return cCollectionTypeAssignment_2_0_0; }
		
		//CollectionType
		public RuleCall getCollectionTypeCollectionTypeEnumRuleCall_2_0_0_0() { return cCollectionTypeCollectionTypeEnumRuleCall_2_0_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_2_0_1() { return cLessThanSignKeyword_2_0_1; }
		
		//type=Type
		public Assignment getTypeAssignment_2_0_2() { return cTypeAssignment_2_0_2; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_2_0_2_0() { return cTypeTypeParserRuleCall_2_0_2_0; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_2_0_3() { return cGreaterThanSignKeyword_2_0_3; }
		
		//type=Type
		public Assignment getTypeAssignment_2_1() { return cTypeAssignment_2_1; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_2_1_0() { return cTypeTypeParserRuleCall_2_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//(key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & index?="index"? &
		//(assertFalse?="assertFalse" ("=" assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("="
		//assertTrueMessage=STRING)?)? & ("hint" "=" hint=STRING)? & (creditCardNumber?="creditCardNumber" ("="
		//creditCardNumberMessage=STRING)?)? & ("digits" "=" digits=STRING)? & (email?="email" ("=" emailMessage=STRING)?)? &
		//(future?="future" ("=" futureMessage=STRING)?)? & (past?="past" ("=" pastMessage=STRING)?)? & ("max" "=" max=STRING)? &
		//("min" "=" min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? & ("decimalMin" "=" decimalMin=STRING)? &
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank" ("=" notBlankMessage=STRING)?)? &
		//("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "=" size=STRING)? & ("length" "="
		//length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? & ("validate" "="
		//validate=STRING)? & transient?="transient"? & ("databaseColumn" "=" databaseColumn=STRING)? & ("databaseType" "="
		//databaseType=STRING)?)
		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
		
		//key?="key"?
		public Assignment getKeyAssignment_4_0() { return cKeyAssignment_4_0; }
		
		//"key"
		public Keyword getKeyKeyKeyword_4_0_0() { return cKeyKeyKeyword_4_0_0; }
		
		//(notChangeable?=NOT "changeable" | "changeable")?
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//notChangeable?=NOT "changeable"
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//notChangeable?=NOT
		public Assignment getNotChangeableAssignment_4_1_0_0() { return cNotChangeableAssignment_4_1_0_0; }
		
		//NOT
		public RuleCall getNotChangeableNOTTerminalRuleCall_4_1_0_0_0() { return cNotChangeableNOTTerminalRuleCall_4_1_0_0_0; }
		
		//"changeable"
		public Keyword getChangeableKeyword_4_1_0_1() { return cChangeableKeyword_4_1_0_1; }
		
		//"changeable"
		public Keyword getChangeableKeyword_4_1_1() { return cChangeableKeyword_4_1_1; }
		
		//(required?="required" | NOT "required")?
		public Alternatives getAlternatives_4_2() { return cAlternatives_4_2; }
		
		//required?="required"
		public Assignment getRequiredAssignment_4_2_0() { return cRequiredAssignment_4_2_0; }
		
		//"required"
		public Keyword getRequiredRequiredKeyword_4_2_0_0() { return cRequiredRequiredKeyword_4_2_0_0; }
		
		//NOT "required"
		public Group getGroup_4_2_1() { return cGroup_4_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_4_2_1_0() { return cNOTTerminalRuleCall_4_2_1_0; }
		
		//"required"
		public Keyword getRequiredKeyword_4_2_1_1() { return cRequiredKeyword_4_2_1_1; }
		
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)?
		public Group getGroup_4_3() { return cGroup_4_3; }
		
		//(nullable?="nullable" | NOT "nullable")
		public Alternatives getAlternatives_4_3_0() { return cAlternatives_4_3_0; }
		
		//nullable?="nullable"
		public Assignment getNullableAssignment_4_3_0_0() { return cNullableAssignment_4_3_0_0; }
		
		//"nullable"
		public Keyword getNullableNullableKeyword_4_3_0_0_0() { return cNullableNullableKeyword_4_3_0_0_0; }
		
		//NOT "nullable"
		public Group getGroup_4_3_0_1() { return cGroup_4_3_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_4_3_0_1_0() { return cNOTTerminalRuleCall_4_3_0_1_0; }
		
		//"nullable"
		public Keyword getNullableKeyword_4_3_0_1_1() { return cNullableKeyword_4_3_0_1_1; }
		
		//("=" nullableMessage=STRING)?
		public Group getGroup_4_3_1() { return cGroup_4_3_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_3_1_0() { return cEqualsSignKeyword_4_3_1_0; }
		
		//nullableMessage=STRING
		public Assignment getNullableMessageAssignment_4_3_1_1() { return cNullableMessageAssignment_4_3_1_1; }
		
		//STRING
		public RuleCall getNullableMessageSTRINGTerminalRuleCall_4_3_1_1_0() { return cNullableMessageSTRINGTerminalRuleCall_4_3_1_1_0; }
		
		//index?="index"?
		public Assignment getIndexAssignment_4_4() { return cIndexAssignment_4_4; }
		
		//"index"
		public Keyword getIndexIndexKeyword_4_4_0() { return cIndexIndexKeyword_4_4_0; }
		
		//(assertFalse?="assertFalse" ("=" assertFalseMessage=STRING)?)?
		public Group getGroup_4_5() { return cGroup_4_5; }
		
		//assertFalse?="assertFalse"
		public Assignment getAssertFalseAssignment_4_5_0() { return cAssertFalseAssignment_4_5_0; }
		
		//"assertFalse"
		public Keyword getAssertFalseAssertFalseKeyword_4_5_0_0() { return cAssertFalseAssertFalseKeyword_4_5_0_0; }
		
		//("=" assertFalseMessage=STRING)?
		public Group getGroup_4_5_1() { return cGroup_4_5_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_5_1_0() { return cEqualsSignKeyword_4_5_1_0; }
		
		//assertFalseMessage=STRING
		public Assignment getAssertFalseMessageAssignment_4_5_1_1() { return cAssertFalseMessageAssignment_4_5_1_1; }
		
		//STRING
		public RuleCall getAssertFalseMessageSTRINGTerminalRuleCall_4_5_1_1_0() { return cAssertFalseMessageSTRINGTerminalRuleCall_4_5_1_1_0; }
		
		//(assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)?
		public Group getGroup_4_6() { return cGroup_4_6; }
		
		//assertTrue?="assertTrue"
		public Assignment getAssertTrueAssignment_4_6_0() { return cAssertTrueAssignment_4_6_0; }
		
		//"assertTrue"
		public Keyword getAssertTrueAssertTrueKeyword_4_6_0_0() { return cAssertTrueAssertTrueKeyword_4_6_0_0; }
		
		//("=" assertTrueMessage=STRING)?
		public Group getGroup_4_6_1() { return cGroup_4_6_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_6_1_0() { return cEqualsSignKeyword_4_6_1_0; }
		
		//assertTrueMessage=STRING
		public Assignment getAssertTrueMessageAssignment_4_6_1_1() { return cAssertTrueMessageAssignment_4_6_1_1; }
		
		//STRING
		public RuleCall getAssertTrueMessageSTRINGTerminalRuleCall_4_6_1_1_0() { return cAssertTrueMessageSTRINGTerminalRuleCall_4_6_1_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_4_7() { return cGroup_4_7; }
		
		//"hint"
		public Keyword getHintKeyword_4_7_0() { return cHintKeyword_4_7_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_7_1() { return cEqualsSignKeyword_4_7_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_4_7_2() { return cHintAssignment_4_7_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_4_7_2_0() { return cHintSTRINGTerminalRuleCall_4_7_2_0; }
		
		//(creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)?
		public Group getGroup_4_8() { return cGroup_4_8; }
		
		//creditCardNumber?="creditCardNumber"
		public Assignment getCreditCardNumberAssignment_4_8_0() { return cCreditCardNumberAssignment_4_8_0; }
		
		//"creditCardNumber"
		public Keyword getCreditCardNumberCreditCardNumberKeyword_4_8_0_0() { return cCreditCardNumberCreditCardNumberKeyword_4_8_0_0; }
		
		//("=" creditCardNumberMessage=STRING)?
		public Group getGroup_4_8_1() { return cGroup_4_8_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_8_1_0() { return cEqualsSignKeyword_4_8_1_0; }
		
		//creditCardNumberMessage=STRING
		public Assignment getCreditCardNumberMessageAssignment_4_8_1_1() { return cCreditCardNumberMessageAssignment_4_8_1_1; }
		
		//STRING
		public RuleCall getCreditCardNumberMessageSTRINGTerminalRuleCall_4_8_1_1_0() { return cCreditCardNumberMessageSTRINGTerminalRuleCall_4_8_1_1_0; }
		
		//("digits" "=" digits=STRING)?
		public Group getGroup_4_9() { return cGroup_4_9; }
		
		//"digits"
		public Keyword getDigitsKeyword_4_9_0() { return cDigitsKeyword_4_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_9_1() { return cEqualsSignKeyword_4_9_1; }
		
		//digits=STRING
		public Assignment getDigitsAssignment_4_9_2() { return cDigitsAssignment_4_9_2; }
		
		//STRING
		public RuleCall getDigitsSTRINGTerminalRuleCall_4_9_2_0() { return cDigitsSTRINGTerminalRuleCall_4_9_2_0; }
		
		//(email?="email" ("=" emailMessage=STRING)?)?
		public Group getGroup_4_10() { return cGroup_4_10; }
		
		//email?="email"
		public Assignment getEmailAssignment_4_10_0() { return cEmailAssignment_4_10_0; }
		
		//"email"
		public Keyword getEmailEmailKeyword_4_10_0_0() { return cEmailEmailKeyword_4_10_0_0; }
		
		//("=" emailMessage=STRING)?
		public Group getGroup_4_10_1() { return cGroup_4_10_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_10_1_0() { return cEqualsSignKeyword_4_10_1_0; }
		
		//emailMessage=STRING
		public Assignment getEmailMessageAssignment_4_10_1_1() { return cEmailMessageAssignment_4_10_1_1; }
		
		//STRING
		public RuleCall getEmailMessageSTRINGTerminalRuleCall_4_10_1_1_0() { return cEmailMessageSTRINGTerminalRuleCall_4_10_1_1_0; }
		
		//(future?="future" ("=" futureMessage=STRING)?)?
		public Group getGroup_4_11() { return cGroup_4_11; }
		
		//future?="future"
		public Assignment getFutureAssignment_4_11_0() { return cFutureAssignment_4_11_0; }
		
		//"future"
		public Keyword getFutureFutureKeyword_4_11_0_0() { return cFutureFutureKeyword_4_11_0_0; }
		
		//("=" futureMessage=STRING)?
		public Group getGroup_4_11_1() { return cGroup_4_11_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_11_1_0() { return cEqualsSignKeyword_4_11_1_0; }
		
		//futureMessage=STRING
		public Assignment getFutureMessageAssignment_4_11_1_1() { return cFutureMessageAssignment_4_11_1_1; }
		
		//STRING
		public RuleCall getFutureMessageSTRINGTerminalRuleCall_4_11_1_1_0() { return cFutureMessageSTRINGTerminalRuleCall_4_11_1_1_0; }
		
		//(past?="past" ("=" pastMessage=STRING)?)?
		public Group getGroup_4_12() { return cGroup_4_12; }
		
		//past?="past"
		public Assignment getPastAssignment_4_12_0() { return cPastAssignment_4_12_0; }
		
		//"past"
		public Keyword getPastPastKeyword_4_12_0_0() { return cPastPastKeyword_4_12_0_0; }
		
		//("=" pastMessage=STRING)?
		public Group getGroup_4_12_1() { return cGroup_4_12_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_12_1_0() { return cEqualsSignKeyword_4_12_1_0; }
		
		//pastMessage=STRING
		public Assignment getPastMessageAssignment_4_12_1_1() { return cPastMessageAssignment_4_12_1_1; }
		
		//STRING
		public RuleCall getPastMessageSTRINGTerminalRuleCall_4_12_1_1_0() { return cPastMessageSTRINGTerminalRuleCall_4_12_1_1_0; }
		
		//("max" "=" max=STRING)?
		public Group getGroup_4_13() { return cGroup_4_13; }
		
		//"max"
		public Keyword getMaxKeyword_4_13_0() { return cMaxKeyword_4_13_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_13_1() { return cEqualsSignKeyword_4_13_1; }
		
		//max=STRING
		public Assignment getMaxAssignment_4_13_2() { return cMaxAssignment_4_13_2; }
		
		//STRING
		public RuleCall getMaxSTRINGTerminalRuleCall_4_13_2_0() { return cMaxSTRINGTerminalRuleCall_4_13_2_0; }
		
		//("min" "=" min=STRING)?
		public Group getGroup_4_14() { return cGroup_4_14; }
		
		//"min"
		public Keyword getMinKeyword_4_14_0() { return cMinKeyword_4_14_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_14_1() { return cEqualsSignKeyword_4_14_1; }
		
		//min=STRING
		public Assignment getMinAssignment_4_14_2() { return cMinAssignment_4_14_2; }
		
		//STRING
		public RuleCall getMinSTRINGTerminalRuleCall_4_14_2_0() { return cMinSTRINGTerminalRuleCall_4_14_2_0; }
		
		//("decimalMax" "=" decimalMax=STRING)?
		public Group getGroup_4_15() { return cGroup_4_15; }
		
		//"decimalMax"
		public Keyword getDecimalMaxKeyword_4_15_0() { return cDecimalMaxKeyword_4_15_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_15_1() { return cEqualsSignKeyword_4_15_1; }
		
		//decimalMax=STRING
		public Assignment getDecimalMaxAssignment_4_15_2() { return cDecimalMaxAssignment_4_15_2; }
		
		//STRING
		public RuleCall getDecimalMaxSTRINGTerminalRuleCall_4_15_2_0() { return cDecimalMaxSTRINGTerminalRuleCall_4_15_2_0; }
		
		//("decimalMin" "=" decimalMin=STRING)?
		public Group getGroup_4_16() { return cGroup_4_16; }
		
		//"decimalMin"
		public Keyword getDecimalMinKeyword_4_16_0() { return cDecimalMinKeyword_4_16_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_16_1() { return cEqualsSignKeyword_4_16_1; }
		
		//decimalMin=STRING
		public Assignment getDecimalMinAssignment_4_16_2() { return cDecimalMinAssignment_4_16_2; }
		
		//STRING
		public RuleCall getDecimalMinSTRINGTerminalRuleCall_4_16_2_0() { return cDecimalMinSTRINGTerminalRuleCall_4_16_2_0; }
		
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)?
		public Group getGroup_4_17() { return cGroup_4_17; }
		
		//notEmpty?="notEmpty"
		public Assignment getNotEmptyAssignment_4_17_0() { return cNotEmptyAssignment_4_17_0; }
		
		//"notEmpty"
		public Keyword getNotEmptyNotEmptyKeyword_4_17_0_0() { return cNotEmptyNotEmptyKeyword_4_17_0_0; }
		
		//("=" notEmptyMessage=STRING)?
		public Group getGroup_4_17_1() { return cGroup_4_17_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_17_1_0() { return cEqualsSignKeyword_4_17_1_0; }
		
		//notEmptyMessage=STRING
		public Assignment getNotEmptyMessageAssignment_4_17_1_1() { return cNotEmptyMessageAssignment_4_17_1_1; }
		
		//STRING
		public RuleCall getNotEmptyMessageSTRINGTerminalRuleCall_4_17_1_1_0() { return cNotEmptyMessageSTRINGTerminalRuleCall_4_17_1_1_0; }
		
		//(notBlank?="notBlank" ("=" notBlankMessage=STRING)?)?
		public Group getGroup_4_18() { return cGroup_4_18; }
		
		//notBlank?="notBlank"
		public Assignment getNotBlankAssignment_4_18_0() { return cNotBlankAssignment_4_18_0; }
		
		//"notBlank"
		public Keyword getNotBlankNotBlankKeyword_4_18_0_0() { return cNotBlankNotBlankKeyword_4_18_0_0; }
		
		//("=" notBlankMessage=STRING)?
		public Group getGroup_4_18_1() { return cGroup_4_18_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_18_1_0() { return cEqualsSignKeyword_4_18_1_0; }
		
		//notBlankMessage=STRING
		public Assignment getNotBlankMessageAssignment_4_18_1_1() { return cNotBlankMessageAssignment_4_18_1_1; }
		
		//STRING
		public RuleCall getNotBlankMessageSTRINGTerminalRuleCall_4_18_1_1_0() { return cNotBlankMessageSTRINGTerminalRuleCall_4_18_1_1_0; }
		
		//("pattern" "=" pattern=STRING)?
		public Group getGroup_4_19() { return cGroup_4_19; }
		
		//"pattern"
		public Keyword getPatternKeyword_4_19_0() { return cPatternKeyword_4_19_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_19_1() { return cEqualsSignKeyword_4_19_1; }
		
		//pattern=STRING
		public Assignment getPatternAssignment_4_19_2() { return cPatternAssignment_4_19_2; }
		
		//STRING
		public RuleCall getPatternSTRINGTerminalRuleCall_4_19_2_0() { return cPatternSTRINGTerminalRuleCall_4_19_2_0; }
		
		//("range" "=" range=STRING)?
		public Group getGroup_4_20() { return cGroup_4_20; }
		
		//"range"
		public Keyword getRangeKeyword_4_20_0() { return cRangeKeyword_4_20_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_20_1() { return cEqualsSignKeyword_4_20_1; }
		
		//range=STRING
		public Assignment getRangeAssignment_4_20_2() { return cRangeAssignment_4_20_2; }
		
		//STRING
		public RuleCall getRangeSTRINGTerminalRuleCall_4_20_2_0() { return cRangeSTRINGTerminalRuleCall_4_20_2_0; }
		
		//("size" "=" size=STRING)?
		public Group getGroup_4_21() { return cGroup_4_21; }
		
		//"size"
		public Keyword getSizeKeyword_4_21_0() { return cSizeKeyword_4_21_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_21_1() { return cEqualsSignKeyword_4_21_1; }
		
		//size=STRING
		public Assignment getSizeAssignment_4_21_2() { return cSizeAssignment_4_21_2; }
		
		//STRING
		public RuleCall getSizeSTRINGTerminalRuleCall_4_21_2_0() { return cSizeSTRINGTerminalRuleCall_4_21_2_0; }
		
		//("length" "=" length=STRING)?
		public Group getGroup_4_22() { return cGroup_4_22; }
		
		//"length"
		public Keyword getLengthKeyword_4_22_0() { return cLengthKeyword_4_22_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_22_1() { return cEqualsSignKeyword_4_22_1; }
		
		//length=STRING
		public Assignment getLengthAssignment_4_22_2() { return cLengthAssignment_4_22_2; }
		
		//STRING
		public RuleCall getLengthSTRINGTerminalRuleCall_4_22_2_0() { return cLengthSTRINGTerminalRuleCall_4_22_2_0; }
		
		//("scriptAssert" "=" scriptAssert=STRING)?
		public Group getGroup_4_23() { return cGroup_4_23; }
		
		//"scriptAssert"
		public Keyword getScriptAssertKeyword_4_23_0() { return cScriptAssertKeyword_4_23_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_23_1() { return cEqualsSignKeyword_4_23_1; }
		
		//scriptAssert=STRING
		public Assignment getScriptAssertAssignment_4_23_2() { return cScriptAssertAssignment_4_23_2; }
		
		//STRING
		public RuleCall getScriptAssertSTRINGTerminalRuleCall_4_23_2_0() { return cScriptAssertSTRINGTerminalRuleCall_4_23_2_0; }
		
		//("url" "=" url=STRING)?
		public Group getGroup_4_24() { return cGroup_4_24; }
		
		//"url"
		public Keyword getUrlKeyword_4_24_0() { return cUrlKeyword_4_24_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_24_1() { return cEqualsSignKeyword_4_24_1; }
		
		//url=STRING
		public Assignment getUrlAssignment_4_24_2() { return cUrlAssignment_4_24_2; }
		
		//STRING
		public RuleCall getUrlSTRINGTerminalRuleCall_4_24_2_0() { return cUrlSTRINGTerminalRuleCall_4_24_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_4_25() { return cGroup_4_25; }
		
		//"validate"
		public Keyword getValidateKeyword_4_25_0() { return cValidateKeyword_4_25_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_25_1() { return cEqualsSignKeyword_4_25_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_4_25_2() { return cValidateAssignment_4_25_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_4_25_2_0() { return cValidateSTRINGTerminalRuleCall_4_25_2_0; }
		
		//transient?="transient"?
		public Assignment getTransientAssignment_4_26() { return cTransientAssignment_4_26; }
		
		//"transient"
		public Keyword getTransientTransientKeyword_4_26_0() { return cTransientTransientKeyword_4_26_0; }
		
		//("databaseColumn" "=" databaseColumn=STRING)?
		public Group getGroup_4_27() { return cGroup_4_27; }
		
		//"databaseColumn"
		public Keyword getDatabaseColumnKeyword_4_27_0() { return cDatabaseColumnKeyword_4_27_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_27_1() { return cEqualsSignKeyword_4_27_1; }
		
		//databaseColumn=STRING
		public Assignment getDatabaseColumnAssignment_4_27_2() { return cDatabaseColumnAssignment_4_27_2; }
		
		//STRING
		public RuleCall getDatabaseColumnSTRINGTerminalRuleCall_4_27_2_0() { return cDatabaseColumnSTRINGTerminalRuleCall_4_27_2_0; }
		
		//("databaseType" "=" databaseType=STRING)?
		public Group getGroup_4_28() { return cGroup_4_28; }
		
		//"databaseType"
		public Keyword getDatabaseTypeKeyword_4_28_0() { return cDatabaseTypeKeyword_4_28_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_28_1() { return cEqualsSignKeyword_4_28_1; }
		
		//databaseType=STRING
		public Assignment getDatabaseTypeAssignment_4_28_2() { return cDatabaseTypeAssignment_4_28_2; }
		
		//STRING
		public RuleCall getDatabaseTypeSTRINGTerminalRuleCall_4_28_2_0() { return cDatabaseTypeSTRINGTerminalRuleCall_4_28_2_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Reference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final RuleCall cREFTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cVisibilityAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_2_0 = (RuleCall)cVisibilityAssignment_2.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Group cGroup_3_0 = (Group)cAlternatives_3.eContents().get(0);
		private final Assignment cCollectionTypeAssignment_3_0_0 = (Assignment)cGroup_3_0.eContents().get(0);
		private final RuleCall cCollectionTypeCollectionTypeEnumRuleCall_3_0_0_0 = (RuleCall)cCollectionTypeAssignment_3_0_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_3_0_1 = (Keyword)cGroup_3_0.eContents().get(1);
		private final Group cGroup_3_0_2 = (Group)cGroup_3_0.eContents().get(2);
		private final Keyword cCommercialAtKeyword_3_0_2_0 = (Keyword)cGroup_3_0_2.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_3_0_2_1 = (Assignment)cGroup_3_0_2.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_3_0_2_1_0 = (CrossReference)cDomainObjectTypeAssignment_3_0_2_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_0_2_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_3_0_2_1_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_3_0_3 = (Keyword)cGroup_3_0.eContents().get(3);
		private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
		private final Keyword cCommercialAtKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_3_1_1_0 = (CrossReference)cDomainObjectTypeAssignment_3_1_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_1_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_3_1_1_0.eContents().get(1);
		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cNameIDTerminalRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
		private final Assignment cKeyAssignment_5_0 = (Assignment)cUnorderedGroup_5.eContents().get(0);
		private final Keyword cKeyKeyKeyword_5_0_0 = (Keyword)cKeyAssignment_5_0.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cUnorderedGroup_5.eContents().get(1);
		private final Group cGroup_5_1_0 = (Group)cAlternatives_5_1.eContents().get(0);
		private final Assignment cNotChangeableAssignment_5_1_0_0 = (Assignment)cGroup_5_1_0.eContents().get(0);
		private final RuleCall cNotChangeableNOTTerminalRuleCall_5_1_0_0_0 = (RuleCall)cNotChangeableAssignment_5_1_0_0.eContents().get(0);
		private final Keyword cChangeableKeyword_5_1_0_1 = (Keyword)cGroup_5_1_0.eContents().get(1);
		private final Keyword cChangeableKeyword_5_1_1 = (Keyword)cAlternatives_5_1.eContents().get(1);
		private final Alternatives cAlternatives_5_2 = (Alternatives)cUnorderedGroup_5.eContents().get(2);
		private final Assignment cRequiredAssignment_5_2_0 = (Assignment)cAlternatives_5_2.eContents().get(0);
		private final Keyword cRequiredRequiredKeyword_5_2_0_0 = (Keyword)cRequiredAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cAlternatives_5_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_5_2_1_0 = (RuleCall)cGroup_5_2_1.eContents().get(0);
		private final Keyword cRequiredKeyword_5_2_1_1 = (Keyword)cGroup_5_2_1.eContents().get(1);
		private final Group cGroup_5_3 = (Group)cUnorderedGroup_5.eContents().get(3);
		private final Alternatives cAlternatives_5_3_0 = (Alternatives)cGroup_5_3.eContents().get(0);
		private final Assignment cNullableAssignment_5_3_0_0 = (Assignment)cAlternatives_5_3_0.eContents().get(0);
		private final Keyword cNullableNullableKeyword_5_3_0_0_0 = (Keyword)cNullableAssignment_5_3_0_0.eContents().get(0);
		private final Group cGroup_5_3_0_1 = (Group)cAlternatives_5_3_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_5_3_0_1_0 = (RuleCall)cGroup_5_3_0_1.eContents().get(0);
		private final Keyword cNullableKeyword_5_3_0_1_1 = (Keyword)cGroup_5_3_0_1.eContents().get(1);
		private final Group cGroup_5_3_1 = (Group)cGroup_5_3.eContents().get(1);
		private final Keyword cEqualsSignKeyword_5_3_1_0 = (Keyword)cGroup_5_3_1.eContents().get(0);
		private final Assignment cNullableMessageAssignment_5_3_1_1 = (Assignment)cGroup_5_3_1.eContents().get(1);
		private final RuleCall cNullableMessageSTRINGTerminalRuleCall_5_3_1_1_0 = (RuleCall)cNullableMessageAssignment_5_3_1_1.eContents().get(0);
		private final Group cGroup_5_4 = (Group)cUnorderedGroup_5.eContents().get(4);
		private final Keyword cHintKeyword_5_4_0 = (Keyword)cGroup_5_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_4_1 = (Keyword)cGroup_5_4.eContents().get(1);
		private final Assignment cHintAssignment_5_4_2 = (Assignment)cGroup_5_4.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_5_4_2_0 = (RuleCall)cHintAssignment_5_4_2.eContents().get(0);
		private final Group cGroup_5_5 = (Group)cUnorderedGroup_5.eContents().get(5);
		private final Keyword cCascadeKeyword_5_5_0 = (Keyword)cGroup_5_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_5_1 = (Keyword)cGroup_5_5.eContents().get(1);
		private final Assignment cCascadeAssignment_5_5_2 = (Assignment)cGroup_5_5.eContents().get(2);
		private final RuleCall cCascadeSTRINGTerminalRuleCall_5_5_2_0 = (RuleCall)cCascadeAssignment_5_5_2.eContents().get(0);
		private final Group cGroup_5_6 = (Group)cUnorderedGroup_5.eContents().get(6);
		private final Keyword cFetchKeyword_5_6_0 = (Keyword)cGroup_5_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_6_1 = (Keyword)cGroup_5_6.eContents().get(1);
		private final Assignment cFetchAssignment_5_6_2 = (Assignment)cGroup_5_6.eContents().get(2);
		private final RuleCall cFetchSTRINGTerminalRuleCall_5_6_2_0 = (RuleCall)cFetchAssignment_5_6_2.eContents().get(0);
		private final Alternatives cAlternatives_5_7 = (Alternatives)cUnorderedGroup_5.eContents().get(7);
		private final Assignment cCacheAssignment_5_7_0 = (Assignment)cAlternatives_5_7.eContents().get(0);
		private final Keyword cCacheCacheKeyword_5_7_0_0 = (Keyword)cCacheAssignment_5_7_0.eContents().get(0);
		private final Group cGroup_5_7_1 = (Group)cAlternatives_5_7.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_5_7_1_0 = (RuleCall)cGroup_5_7_1.eContents().get(0);
		private final Keyword cCacheKeyword_5_7_1_1 = (Keyword)cGroup_5_7_1.eContents().get(1);
		private final Alternatives cAlternatives_5_8 = (Alternatives)cUnorderedGroup_5.eContents().get(8);
		private final Assignment cInverseAssignment_5_8_0 = (Assignment)cAlternatives_5_8.eContents().get(0);
		private final Keyword cInverseInverseKeyword_5_8_0_0 = (Keyword)cInverseAssignment_5_8_0.eContents().get(0);
		private final Group cGroup_5_8_1 = (Group)cAlternatives_5_8.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_5_8_1_0 = (RuleCall)cGroup_5_8_1.eContents().get(0);
		private final Keyword cInverseKeyword_5_8_1_1 = (Keyword)cGroup_5_8_1.eContents().get(1);
		private final Group cGroup_5_9 = (Group)cUnorderedGroup_5.eContents().get(9);
		private final Keyword cDatabaseColumnKeyword_5_9_0 = (Keyword)cGroup_5_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_9_1 = (Keyword)cGroup_5_9.eContents().get(1);
		private final Assignment cDatabaseColumnAssignment_5_9_2 = (Assignment)cGroup_5_9.eContents().get(2);
		private final RuleCall cDatabaseColumnSTRINGTerminalRuleCall_5_9_2_0 = (RuleCall)cDatabaseColumnAssignment_5_9_2.eContents().get(0);
		private final Group cGroup_5_10 = (Group)cUnorderedGroup_5.eContents().get(10);
		private final Keyword cDatabaseJoinTableKeyword_5_10_0 = (Keyword)cGroup_5_10.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_10_1 = (Keyword)cGroup_5_10.eContents().get(1);
		private final Assignment cDatabaseJoinTableAssignment_5_10_2 = (Assignment)cGroup_5_10.eContents().get(2);
		private final RuleCall cDatabaseJoinTableSTRINGTerminalRuleCall_5_10_2_0 = (RuleCall)cDatabaseJoinTableAssignment_5_10_2.eContents().get(0);
		private final Group cGroup_5_11 = (Group)cUnorderedGroup_5.eContents().get(11);
		private final Keyword cDatabaseJoinColumnKeyword_5_11_0 = (Keyword)cGroup_5_11.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_11_1 = (Keyword)cGroup_5_11.eContents().get(1);
		private final Assignment cDatabaseJoinColumnAssignment_5_11_2 = (Assignment)cGroup_5_11.eContents().get(2);
		private final RuleCall cDatabaseJoinColumnSTRINGTerminalRuleCall_5_11_2_0 = (RuleCall)cDatabaseJoinColumnAssignment_5_11_2.eContents().get(0);
		private final Group cGroup_5_12 = (Group)cUnorderedGroup_5.eContents().get(12);
		private final Assignment cNotEmptyAssignment_5_12_0 = (Assignment)cGroup_5_12.eContents().get(0);
		private final Keyword cNotEmptyNotEmptyKeyword_5_12_0_0 = (Keyword)cNotEmptyAssignment_5_12_0.eContents().get(0);
		private final Group cGroup_5_12_1 = (Group)cGroup_5_12.eContents().get(1);
		private final Keyword cEqualsSignKeyword_5_12_1_0 = (Keyword)cGroup_5_12_1.eContents().get(0);
		private final Assignment cNotEmptyMessageAssignment_5_12_1_1 = (Assignment)cGroup_5_12_1.eContents().get(1);
		private final RuleCall cNotEmptyMessageSTRINGTerminalRuleCall_5_12_1_1_0 = (RuleCall)cNotEmptyMessageAssignment_5_12_1_1.eContents().get(0);
		private final Group cGroup_5_13 = (Group)cUnorderedGroup_5.eContents().get(13);
		private final Keyword cSizeKeyword_5_13_0 = (Keyword)cGroup_5_13.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_13_1 = (Keyword)cGroup_5_13.eContents().get(1);
		private final Assignment cSizeAssignment_5_13_2 = (Assignment)cGroup_5_13.eContents().get(2);
		private final RuleCall cSizeSTRINGTerminalRuleCall_5_13_2_0 = (RuleCall)cSizeAssignment_5_13_2.eContents().get(0);
		private final Group cGroup_5_14 = (Group)cUnorderedGroup_5.eContents().get(14);
		private final Assignment cValidAssignment_5_14_0 = (Assignment)cGroup_5_14.eContents().get(0);
		private final Keyword cValidValidKeyword_5_14_0_0 = (Keyword)cValidAssignment_5_14_0.eContents().get(0);
		private final Group cGroup_5_14_1 = (Group)cGroup_5_14.eContents().get(1);
		private final Keyword cEqualsSignKeyword_5_14_1_0 = (Keyword)cGroup_5_14_1.eContents().get(0);
		private final Assignment cValidMessageAssignment_5_14_1_1 = (Assignment)cGroup_5_14_1.eContents().get(1);
		private final RuleCall cValidMessageSTRINGTerminalRuleCall_5_14_1_1_0 = (RuleCall)cValidMessageAssignment_5_14_1_1.eContents().get(0);
		private final Group cGroup_5_15 = (Group)cUnorderedGroup_5.eContents().get(15);
		private final Keyword cValidateKeyword_5_15_0 = (Keyword)cGroup_5_15.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_15_1 = (Keyword)cGroup_5_15.eContents().get(1);
		private final Assignment cValidateAssignment_5_15_2 = (Assignment)cGroup_5_15.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_5_15_2_0 = (RuleCall)cValidateAssignment_5_15_2.eContents().get(0);
		private final Assignment cTransientAssignment_5_16 = (Assignment)cUnorderedGroup_5.eContents().get(16);
		private final Keyword cTransientTransientKeyword_5_16_0 = (Keyword)cTransientAssignment_5_16.eContents().get(0);
		private final Group cGroup_5_17 = (Group)cUnorderedGroup_5.eContents().get(17);
		private final Keyword cOrderbyKeyword_5_17_0 = (Keyword)cGroup_5_17.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_17_1 = (Keyword)cGroup_5_17.eContents().get(1);
		private final Assignment cOrderByAssignment_5_17_2 = (Assignment)cGroup_5_17.eContents().get(2);
		private final RuleCall cOrderBySTRINGTerminalRuleCall_5_17_2_0 = (RuleCall)cOrderByAssignment_5_17_2.eContents().get(0);
		private final Group cGroup_5_18 = (Group)cUnorderedGroup_5.eContents().get(18);
		private final Assignment cOrderColumnAssignment_5_18_0 = (Assignment)cGroup_5_18.eContents().get(0);
		private final Keyword cOrderColumnOrderColumnKeyword_5_18_0_0 = (Keyword)cOrderColumnAssignment_5_18_0.eContents().get(0);
		private final Group cGroup_5_18_1 = (Group)cGroup_5_18.eContents().get(1);
		private final Keyword cEqualsSignKeyword_5_18_1_0 = (Keyword)cGroup_5_18_1.eContents().get(0);
		private final Assignment cOrderColumnNameAssignment_5_18_1_1 = (Assignment)cGroup_5_18_1.eContents().get(1);
		private final RuleCall cOrderColumnNameSTRINGTerminalRuleCall_5_18_1_1_0 = (RuleCall)cOrderColumnNameAssignment_5_18_1_1.eContents().get(0);
		private final Assignment cOppositeHolderAssignment_5_19 = (Assignment)cUnorderedGroup_5.eContents().get(19);
		private final RuleCall cOppositeHolderOppositeHolderParserRuleCall_5_19_0 = (RuleCall)cOppositeHolderAssignment_5_19.eContents().get(0);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//Reference:
		//	doc=STRING?
		//	REF visibility=Visibility? (collectionType=CollectionType "<" ("@"? domainObjectType=[SimpleDomainObject]) ">" | "@"?
		//	domainObjectType=[SimpleDomainObject]) name=ID (key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? &
		//	(required?="required" | NOT "required")? & ((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? &
		//	("hint" "=" hint=STRING)? & ("cascade" "=" cascade=STRING)? & ("fetch" "=" fetch=STRING)? & (cache?="cache" | NOT
		//	"cache")? & (inverse?="inverse" | NOT "inverse")? & ("databaseColumn" "=" databaseColumn=STRING)? &
		//	("databaseJoinTable" "=" databaseJoinTable=STRING)? & ("databaseJoinColumn" "=" databaseJoinColumn=STRING)? &
		//	(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
		//	validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & transient?="transient"? & ("orderby" "="
		//	orderBy=STRING)? & (orderColumn?="orderColumn" ("=" orderColumnName=STRING)?)? & oppositeHolder=OppositeHolder?) ";"?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? REF visibility=Visibility? (collectionType=CollectionType "<" ("@"? domainObjectType=[SimpleDomainObject])
		//">" | "@"? domainObjectType=[SimpleDomainObject]) name=ID (key?="key"? & (notChangeable?=NOT "changeable" |
		//"changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable" | NOT "nullable") ("="
		//nullableMessage=STRING)?)? & ("hint" "=" hint=STRING)? & ("cascade" "=" cascade=STRING)? & ("fetch" "=" fetch=STRING)?
		//& (cache?="cache" | NOT "cache")? & (inverse?="inverse" | NOT "inverse")? & ("databaseColumn" "="
		//databaseColumn=STRING)? & ("databaseJoinTable" "=" databaseJoinTable=STRING)? & ("databaseJoinColumn" "="
		//databaseJoinColumn=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? &
		//(valid?="valid" ("=" validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & transient?="transient"? & ("orderby"
		//"=" orderBy=STRING)? & (orderColumn?="orderColumn" ("=" orderColumnName=STRING)?)? & oppositeHolder=OppositeHolder?)
		//";"?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//REF
		public RuleCall getREFTerminalRuleCall_1() { return cREFTerminalRuleCall_1; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_2() { return cVisibilityAssignment_2; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_2_0() { return cVisibilityVisibilityEnumRuleCall_2_0; }
		
		//(collectionType=CollectionType "<" ("@"? domainObjectType=[SimpleDomainObject]) ">" | "@"?
		//domainObjectType=[SimpleDomainObject])
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//collectionType=CollectionType "<" ("@"? domainObjectType=[SimpleDomainObject]) ">"
		public Group getGroup_3_0() { return cGroup_3_0; }
		
		//collectionType=CollectionType
		public Assignment getCollectionTypeAssignment_3_0_0() { return cCollectionTypeAssignment_3_0_0; }
		
		//CollectionType
		public RuleCall getCollectionTypeCollectionTypeEnumRuleCall_3_0_0_0() { return cCollectionTypeCollectionTypeEnumRuleCall_3_0_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_3_0_1() { return cLessThanSignKeyword_3_0_1; }
		
		//("@"? domainObjectType=[SimpleDomainObject])
		public Group getGroup_3_0_2() { return cGroup_3_0_2; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_3_0_2_0() { return cCommercialAtKeyword_3_0_2_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_3_0_2_1() { return cDomainObjectTypeAssignment_3_0_2_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_3_0_2_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_3_0_2_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_0_2_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_0_2_1_0_1; }
		
		//">"
		public Keyword getGreaterThanSignKeyword_3_0_3() { return cGreaterThanSignKeyword_3_0_3; }
		
		//"@"? domainObjectType=[SimpleDomainObject]
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_3_1_0() { return cCommercialAtKeyword_3_1_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_3_1_1() { return cDomainObjectTypeAssignment_3_1_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_3_1_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_3_1_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_1_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_3_1_1_0_1; }
		
		//name=ID
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_4_0() { return cNameIDTerminalRuleCall_4_0; }
		
		//(key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & ("hint" "=" hint=STRING)? & ("cascade" "="
		//cascade=STRING)? & ("fetch" "=" fetch=STRING)? & (cache?="cache" | NOT "cache")? & (inverse?="inverse" | NOT
		//"inverse")? & ("databaseColumn" "=" databaseColumn=STRING)? & ("databaseJoinTable" "=" databaseJoinTable=STRING)? &
		//("databaseJoinColumn" "=" databaseJoinColumn=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size"
		//"=" size=STRING)? & (valid?="valid" ("=" validMessage=STRING)?)? & ("validate" "=" validate=STRING)? &
		//transient?="transient"? & ("orderby" "=" orderBy=STRING)? & (orderColumn?="orderColumn" ("=" orderColumnName=STRING)?)?
		//& oppositeHolder=OppositeHolder?)
		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
		
		//key?="key"?
		public Assignment getKeyAssignment_5_0() { return cKeyAssignment_5_0; }
		
		//"key"
		public Keyword getKeyKeyKeyword_5_0_0() { return cKeyKeyKeyword_5_0_0; }
		
		//(notChangeable?=NOT "changeable" | "changeable")?
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//notChangeable?=NOT "changeable"
		public Group getGroup_5_1_0() { return cGroup_5_1_0; }
		
		//notChangeable?=NOT
		public Assignment getNotChangeableAssignment_5_1_0_0() { return cNotChangeableAssignment_5_1_0_0; }
		
		//NOT
		public RuleCall getNotChangeableNOTTerminalRuleCall_5_1_0_0_0() { return cNotChangeableNOTTerminalRuleCall_5_1_0_0_0; }
		
		//"changeable"
		public Keyword getChangeableKeyword_5_1_0_1() { return cChangeableKeyword_5_1_0_1; }
		
		//"changeable"
		public Keyword getChangeableKeyword_5_1_1() { return cChangeableKeyword_5_1_1; }
		
		//(required?="required" | NOT "required")?
		public Alternatives getAlternatives_5_2() { return cAlternatives_5_2; }
		
		//required?="required"
		public Assignment getRequiredAssignment_5_2_0() { return cRequiredAssignment_5_2_0; }
		
		//"required"
		public Keyword getRequiredRequiredKeyword_5_2_0_0() { return cRequiredRequiredKeyword_5_2_0_0; }
		
		//NOT "required"
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_5_2_1_0() { return cNOTTerminalRuleCall_5_2_1_0; }
		
		//"required"
		public Keyword getRequiredKeyword_5_2_1_1() { return cRequiredKeyword_5_2_1_1; }
		
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)?
		public Group getGroup_5_3() { return cGroup_5_3; }
		
		//(nullable?="nullable" | NOT "nullable")
		public Alternatives getAlternatives_5_3_0() { return cAlternatives_5_3_0; }
		
		//nullable?="nullable"
		public Assignment getNullableAssignment_5_3_0_0() { return cNullableAssignment_5_3_0_0; }
		
		//"nullable"
		public Keyword getNullableNullableKeyword_5_3_0_0_0() { return cNullableNullableKeyword_5_3_0_0_0; }
		
		//NOT "nullable"
		public Group getGroup_5_3_0_1() { return cGroup_5_3_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_5_3_0_1_0() { return cNOTTerminalRuleCall_5_3_0_1_0; }
		
		//"nullable"
		public Keyword getNullableKeyword_5_3_0_1_1() { return cNullableKeyword_5_3_0_1_1; }
		
		//("=" nullableMessage=STRING)?
		public Group getGroup_5_3_1() { return cGroup_5_3_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_3_1_0() { return cEqualsSignKeyword_5_3_1_0; }
		
		//nullableMessage=STRING
		public Assignment getNullableMessageAssignment_5_3_1_1() { return cNullableMessageAssignment_5_3_1_1; }
		
		//STRING
		public RuleCall getNullableMessageSTRINGTerminalRuleCall_5_3_1_1_0() { return cNullableMessageSTRINGTerminalRuleCall_5_3_1_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_5_4() { return cGroup_5_4; }
		
		//"hint"
		public Keyword getHintKeyword_5_4_0() { return cHintKeyword_5_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_4_1() { return cEqualsSignKeyword_5_4_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_5_4_2() { return cHintAssignment_5_4_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_5_4_2_0() { return cHintSTRINGTerminalRuleCall_5_4_2_0; }
		
		//("cascade" "=" cascade=STRING)?
		public Group getGroup_5_5() { return cGroup_5_5; }
		
		//"cascade"
		public Keyword getCascadeKeyword_5_5_0() { return cCascadeKeyword_5_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_5_1() { return cEqualsSignKeyword_5_5_1; }
		
		//cascade=STRING
		public Assignment getCascadeAssignment_5_5_2() { return cCascadeAssignment_5_5_2; }
		
		//STRING
		public RuleCall getCascadeSTRINGTerminalRuleCall_5_5_2_0() { return cCascadeSTRINGTerminalRuleCall_5_5_2_0; }
		
		//("fetch" "=" fetch=STRING)?
		public Group getGroup_5_6() { return cGroup_5_6; }
		
		//"fetch"
		public Keyword getFetchKeyword_5_6_0() { return cFetchKeyword_5_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_6_1() { return cEqualsSignKeyword_5_6_1; }
		
		//fetch=STRING
		public Assignment getFetchAssignment_5_6_2() { return cFetchAssignment_5_6_2; }
		
		//STRING
		public RuleCall getFetchSTRINGTerminalRuleCall_5_6_2_0() { return cFetchSTRINGTerminalRuleCall_5_6_2_0; }
		
		//(cache?="cache" | NOT "cache")?
		public Alternatives getAlternatives_5_7() { return cAlternatives_5_7; }
		
		//cache?="cache"
		public Assignment getCacheAssignment_5_7_0() { return cCacheAssignment_5_7_0; }
		
		//"cache"
		public Keyword getCacheCacheKeyword_5_7_0_0() { return cCacheCacheKeyword_5_7_0_0; }
		
		//NOT "cache"
		public Group getGroup_5_7_1() { return cGroup_5_7_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_5_7_1_0() { return cNOTTerminalRuleCall_5_7_1_0; }
		
		//"cache"
		public Keyword getCacheKeyword_5_7_1_1() { return cCacheKeyword_5_7_1_1; }
		
		//(inverse?="inverse" | NOT "inverse")?
		public Alternatives getAlternatives_5_8() { return cAlternatives_5_8; }
		
		//inverse?="inverse"
		public Assignment getInverseAssignment_5_8_0() { return cInverseAssignment_5_8_0; }
		
		//"inverse"
		public Keyword getInverseInverseKeyword_5_8_0_0() { return cInverseInverseKeyword_5_8_0_0; }
		
		//NOT "inverse"
		public Group getGroup_5_8_1() { return cGroup_5_8_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_5_8_1_0() { return cNOTTerminalRuleCall_5_8_1_0; }
		
		//"inverse"
		public Keyword getInverseKeyword_5_8_1_1() { return cInverseKeyword_5_8_1_1; }
		
		//("databaseColumn" "=" databaseColumn=STRING)?
		public Group getGroup_5_9() { return cGroup_5_9; }
		
		//"databaseColumn"
		public Keyword getDatabaseColumnKeyword_5_9_0() { return cDatabaseColumnKeyword_5_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_9_1() { return cEqualsSignKeyword_5_9_1; }
		
		//databaseColumn=STRING
		public Assignment getDatabaseColumnAssignment_5_9_2() { return cDatabaseColumnAssignment_5_9_2; }
		
		//STRING
		public RuleCall getDatabaseColumnSTRINGTerminalRuleCall_5_9_2_0() { return cDatabaseColumnSTRINGTerminalRuleCall_5_9_2_0; }
		
		//("databaseJoinTable" "=" databaseJoinTable=STRING)?
		public Group getGroup_5_10() { return cGroup_5_10; }
		
		//"databaseJoinTable"
		public Keyword getDatabaseJoinTableKeyword_5_10_0() { return cDatabaseJoinTableKeyword_5_10_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_10_1() { return cEqualsSignKeyword_5_10_1; }
		
		//databaseJoinTable=STRING
		public Assignment getDatabaseJoinTableAssignment_5_10_2() { return cDatabaseJoinTableAssignment_5_10_2; }
		
		//STRING
		public RuleCall getDatabaseJoinTableSTRINGTerminalRuleCall_5_10_2_0() { return cDatabaseJoinTableSTRINGTerminalRuleCall_5_10_2_0; }
		
		//("databaseJoinColumn" "=" databaseJoinColumn=STRING)?
		public Group getGroup_5_11() { return cGroup_5_11; }
		
		//"databaseJoinColumn"
		public Keyword getDatabaseJoinColumnKeyword_5_11_0() { return cDatabaseJoinColumnKeyword_5_11_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_11_1() { return cEqualsSignKeyword_5_11_1; }
		
		//databaseJoinColumn=STRING
		public Assignment getDatabaseJoinColumnAssignment_5_11_2() { return cDatabaseJoinColumnAssignment_5_11_2; }
		
		//STRING
		public RuleCall getDatabaseJoinColumnSTRINGTerminalRuleCall_5_11_2_0() { return cDatabaseJoinColumnSTRINGTerminalRuleCall_5_11_2_0; }
		
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)?
		public Group getGroup_5_12() { return cGroup_5_12; }
		
		//notEmpty?="notEmpty"
		public Assignment getNotEmptyAssignment_5_12_0() { return cNotEmptyAssignment_5_12_0; }
		
		//"notEmpty"
		public Keyword getNotEmptyNotEmptyKeyword_5_12_0_0() { return cNotEmptyNotEmptyKeyword_5_12_0_0; }
		
		//("=" notEmptyMessage=STRING)?
		public Group getGroup_5_12_1() { return cGroup_5_12_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_12_1_0() { return cEqualsSignKeyword_5_12_1_0; }
		
		//notEmptyMessage=STRING
		public Assignment getNotEmptyMessageAssignment_5_12_1_1() { return cNotEmptyMessageAssignment_5_12_1_1; }
		
		//STRING
		public RuleCall getNotEmptyMessageSTRINGTerminalRuleCall_5_12_1_1_0() { return cNotEmptyMessageSTRINGTerminalRuleCall_5_12_1_1_0; }
		
		//("size" "=" size=STRING)?
		public Group getGroup_5_13() { return cGroup_5_13; }
		
		//"size"
		public Keyword getSizeKeyword_5_13_0() { return cSizeKeyword_5_13_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_13_1() { return cEqualsSignKeyword_5_13_1; }
		
		//size=STRING
		public Assignment getSizeAssignment_5_13_2() { return cSizeAssignment_5_13_2; }
		
		//STRING
		public RuleCall getSizeSTRINGTerminalRuleCall_5_13_2_0() { return cSizeSTRINGTerminalRuleCall_5_13_2_0; }
		
		//(valid?="valid" ("=" validMessage=STRING)?)?
		public Group getGroup_5_14() { return cGroup_5_14; }
		
		//valid?="valid"
		public Assignment getValidAssignment_5_14_0() { return cValidAssignment_5_14_0; }
		
		//"valid"
		public Keyword getValidValidKeyword_5_14_0_0() { return cValidValidKeyword_5_14_0_0; }
		
		//("=" validMessage=STRING)?
		public Group getGroup_5_14_1() { return cGroup_5_14_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_14_1_0() { return cEqualsSignKeyword_5_14_1_0; }
		
		//validMessage=STRING
		public Assignment getValidMessageAssignment_5_14_1_1() { return cValidMessageAssignment_5_14_1_1; }
		
		//STRING
		public RuleCall getValidMessageSTRINGTerminalRuleCall_5_14_1_1_0() { return cValidMessageSTRINGTerminalRuleCall_5_14_1_1_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_5_15() { return cGroup_5_15; }
		
		//"validate"
		public Keyword getValidateKeyword_5_15_0() { return cValidateKeyword_5_15_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_15_1() { return cEqualsSignKeyword_5_15_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_5_15_2() { return cValidateAssignment_5_15_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_5_15_2_0() { return cValidateSTRINGTerminalRuleCall_5_15_2_0; }
		
		//transient?="transient"?
		public Assignment getTransientAssignment_5_16() { return cTransientAssignment_5_16; }
		
		//"transient"
		public Keyword getTransientTransientKeyword_5_16_0() { return cTransientTransientKeyword_5_16_0; }
		
		//("orderby" "=" orderBy=STRING)?
		public Group getGroup_5_17() { return cGroup_5_17; }
		
		//"orderby"
		public Keyword getOrderbyKeyword_5_17_0() { return cOrderbyKeyword_5_17_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_17_1() { return cEqualsSignKeyword_5_17_1; }
		
		//orderBy=STRING
		public Assignment getOrderByAssignment_5_17_2() { return cOrderByAssignment_5_17_2; }
		
		//STRING
		public RuleCall getOrderBySTRINGTerminalRuleCall_5_17_2_0() { return cOrderBySTRINGTerminalRuleCall_5_17_2_0; }
		
		//(orderColumn?="orderColumn" ("=" orderColumnName=STRING)?)?
		public Group getGroup_5_18() { return cGroup_5_18; }
		
		//orderColumn?="orderColumn"
		public Assignment getOrderColumnAssignment_5_18_0() { return cOrderColumnAssignment_5_18_0; }
		
		//"orderColumn"
		public Keyword getOrderColumnOrderColumnKeyword_5_18_0_0() { return cOrderColumnOrderColumnKeyword_5_18_0_0; }
		
		//("=" orderColumnName=STRING)?
		public Group getGroup_5_18_1() { return cGroup_5_18_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_18_1_0() { return cEqualsSignKeyword_5_18_1_0; }
		
		//orderColumnName=STRING
		public Assignment getOrderColumnNameAssignment_5_18_1_1() { return cOrderColumnNameAssignment_5_18_1_1; }
		
		//STRING
		public RuleCall getOrderColumnNameSTRINGTerminalRuleCall_5_18_1_1_0() { return cOrderColumnNameSTRINGTerminalRuleCall_5_18_1_1_0; }
		
		//oppositeHolder=OppositeHolder?
		public Assignment getOppositeHolderAssignment_5_19() { return cOppositeHolderAssignment_5_19; }
		
		//OppositeHolder
		public RuleCall getOppositeHolderOppositeHolderParserRuleCall_5_19_0() { return cOppositeHolderOppositeHolderParserRuleCall_5_19_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class DtoAttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DtoAttribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cVisibilityAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_1_0 = (RuleCall)cVisibilityAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cCollectionTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cCollectionTypeCollectionTypeEnumRuleCall_2_0_0 = (RuleCall)cCollectionTypeAssignment_2_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cTypeTypeParserRuleCall_3_0 = (RuleCall)cTypeAssignment_3.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_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 UnorderedGroup cUnorderedGroup_6 = (UnorderedGroup)cGroup.eContents().get(6);
		private final Assignment cKeyAssignment_6_0 = (Assignment)cUnorderedGroup_6.eContents().get(0);
		private final Keyword cKeyKeyKeyword_6_0_0 = (Keyword)cKeyAssignment_6_0.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cUnorderedGroup_6.eContents().get(1);
		private final Group cGroup_6_1_0 = (Group)cAlternatives_6_1.eContents().get(0);
		private final Assignment cNotChangeableAssignment_6_1_0_0 = (Assignment)cGroup_6_1_0.eContents().get(0);
		private final RuleCall cNotChangeableNOTTerminalRuleCall_6_1_0_0_0 = (RuleCall)cNotChangeableAssignment_6_1_0_0.eContents().get(0);
		private final Keyword cChangeableKeyword_6_1_0_1 = (Keyword)cGroup_6_1_0.eContents().get(1);
		private final Keyword cChangeableKeyword_6_1_1 = (Keyword)cAlternatives_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_2 = (Alternatives)cUnorderedGroup_6.eContents().get(2);
		private final Assignment cRequiredAssignment_6_2_0 = (Assignment)cAlternatives_6_2.eContents().get(0);
		private final Keyword cRequiredRequiredKeyword_6_2_0_0 = (Keyword)cRequiredAssignment_6_2_0.eContents().get(0);
		private final Group cGroup_6_2_1 = (Group)cAlternatives_6_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_6_2_1_0 = (RuleCall)cGroup_6_2_1.eContents().get(0);
		private final Keyword cRequiredKeyword_6_2_1_1 = (Keyword)cGroup_6_2_1.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cUnorderedGroup_6.eContents().get(3);
		private final Alternatives cAlternatives_6_3_0 = (Alternatives)cGroup_6_3.eContents().get(0);
		private final Assignment cNullableAssignment_6_3_0_0 = (Assignment)cAlternatives_6_3_0.eContents().get(0);
		private final Keyword cNullableNullableKeyword_6_3_0_0_0 = (Keyword)cNullableAssignment_6_3_0_0.eContents().get(0);
		private final Group cGroup_6_3_0_1 = (Group)cAlternatives_6_3_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_6_3_0_1_0 = (RuleCall)cGroup_6_3_0_1.eContents().get(0);
		private final Keyword cNullableKeyword_6_3_0_1_1 = (Keyword)cGroup_6_3_0_1.eContents().get(1);
		private final Group cGroup_6_3_1 = (Group)cGroup_6_3.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_3_1_0 = (Keyword)cGroup_6_3_1.eContents().get(0);
		private final Assignment cNullableMessageAssignment_6_3_1_1 = (Assignment)cGroup_6_3_1.eContents().get(1);
		private final RuleCall cNullableMessageSTRINGTerminalRuleCall_6_3_1_1_0 = (RuleCall)cNullableMessageAssignment_6_3_1_1.eContents().get(0);
		private final Assignment cTransientAssignment_6_4 = (Assignment)cUnorderedGroup_6.eContents().get(4);
		private final Keyword cTransientTransientKeyword_6_4_0 = (Keyword)cTransientAssignment_6_4.eContents().get(0);
		private final Group cGroup_6_5 = (Group)cUnorderedGroup_6.eContents().get(5);
		private final Assignment cAssertFalseAssignment_6_5_0 = (Assignment)cGroup_6_5.eContents().get(0);
		private final Keyword cAssertFalseAssertFalseKeyword_6_5_0_0 = (Keyword)cAssertFalseAssignment_6_5_0.eContents().get(0);
		private final Group cGroup_6_5_1 = (Group)cGroup_6_5.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_5_1_0 = (Keyword)cGroup_6_5_1.eContents().get(0);
		private final Assignment cAssertFalseMessageAssignment_6_5_1_1 = (Assignment)cGroup_6_5_1.eContents().get(1);
		private final RuleCall cAssertFalseMessageSTRINGTerminalRuleCall_6_5_1_1_0 = (RuleCall)cAssertFalseMessageAssignment_6_5_1_1.eContents().get(0);
		private final Group cGroup_6_6 = (Group)cUnorderedGroup_6.eContents().get(6);
		private final Assignment cAssertTrueAssignment_6_6_0 = (Assignment)cGroup_6_6.eContents().get(0);
		private final Keyword cAssertTrueAssertTrueKeyword_6_6_0_0 = (Keyword)cAssertTrueAssignment_6_6_0.eContents().get(0);
		private final Group cGroup_6_6_1 = (Group)cGroup_6_6.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_6_1_0 = (Keyword)cGroup_6_6_1.eContents().get(0);
		private final Assignment cAssertTrueMessageAssignment_6_6_1_1 = (Assignment)cGroup_6_6_1.eContents().get(1);
		private final RuleCall cAssertTrueMessageSTRINGTerminalRuleCall_6_6_1_1_0 = (RuleCall)cAssertTrueMessageAssignment_6_6_1_1.eContents().get(0);
		private final Group cGroup_6_7 = (Group)cUnorderedGroup_6.eContents().get(7);
		private final Assignment cCreditCardNumberAssignment_6_7_0 = (Assignment)cGroup_6_7.eContents().get(0);
		private final Keyword cCreditCardNumberCreditCardNumberKeyword_6_7_0_0 = (Keyword)cCreditCardNumberAssignment_6_7_0.eContents().get(0);
		private final Group cGroup_6_7_1 = (Group)cGroup_6_7.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_7_1_0 = (Keyword)cGroup_6_7_1.eContents().get(0);
		private final Assignment cCreditCardNumberMessageAssignment_6_7_1_1 = (Assignment)cGroup_6_7_1.eContents().get(1);
		private final RuleCall cCreditCardNumberMessageSTRINGTerminalRuleCall_6_7_1_1_0 = (RuleCall)cCreditCardNumberMessageAssignment_6_7_1_1.eContents().get(0);
		private final Group cGroup_6_8 = (Group)cUnorderedGroup_6.eContents().get(8);
		private final Keyword cDigitsKeyword_6_8_0 = (Keyword)cGroup_6_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_8_1 = (Keyword)cGroup_6_8.eContents().get(1);
		private final Assignment cDigitsAssignment_6_8_2 = (Assignment)cGroup_6_8.eContents().get(2);
		private final RuleCall cDigitsSTRINGTerminalRuleCall_6_8_2_0 = (RuleCall)cDigitsAssignment_6_8_2.eContents().get(0);
		private final Group cGroup_6_9 = (Group)cUnorderedGroup_6.eContents().get(9);
		private final Assignment cEmailAssignment_6_9_0 = (Assignment)cGroup_6_9.eContents().get(0);
		private final Keyword cEmailEmailKeyword_6_9_0_0 = (Keyword)cEmailAssignment_6_9_0.eContents().get(0);
		private final Group cGroup_6_9_1 = (Group)cGroup_6_9.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_9_1_0 = (Keyword)cGroup_6_9_1.eContents().get(0);
		private final Assignment cEmailMessageAssignment_6_9_1_1 = (Assignment)cGroup_6_9_1.eContents().get(1);
		private final RuleCall cEmailMessageSTRINGTerminalRuleCall_6_9_1_1_0 = (RuleCall)cEmailMessageAssignment_6_9_1_1.eContents().get(0);
		private final Group cGroup_6_10 = (Group)cUnorderedGroup_6.eContents().get(10);
		private final Assignment cFutureAssignment_6_10_0 = (Assignment)cGroup_6_10.eContents().get(0);
		private final Keyword cFutureFutureKeyword_6_10_0_0 = (Keyword)cFutureAssignment_6_10_0.eContents().get(0);
		private final Group cGroup_6_10_1 = (Group)cGroup_6_10.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_10_1_0 = (Keyword)cGroup_6_10_1.eContents().get(0);
		private final Assignment cFutureMessageAssignment_6_10_1_1 = (Assignment)cGroup_6_10_1.eContents().get(1);
		private final RuleCall cFutureMessageSTRINGTerminalRuleCall_6_10_1_1_0 = (RuleCall)cFutureMessageAssignment_6_10_1_1.eContents().get(0);
		private final Group cGroup_6_11 = (Group)cUnorderedGroup_6.eContents().get(11);
		private final Assignment cPastAssignment_6_11_0 = (Assignment)cGroup_6_11.eContents().get(0);
		private final Keyword cPastPastKeyword_6_11_0_0 = (Keyword)cPastAssignment_6_11_0.eContents().get(0);
		private final Group cGroup_6_11_1 = (Group)cGroup_6_11.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_11_1_0 = (Keyword)cGroup_6_11_1.eContents().get(0);
		private final Assignment cPastMessageAssignment_6_11_1_1 = (Assignment)cGroup_6_11_1.eContents().get(1);
		private final RuleCall cPastMessageSTRINGTerminalRuleCall_6_11_1_1_0 = (RuleCall)cPastMessageAssignment_6_11_1_1.eContents().get(0);
		private final Group cGroup_6_12 = (Group)cUnorderedGroup_6.eContents().get(12);
		private final Keyword cMaxKeyword_6_12_0 = (Keyword)cGroup_6_12.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_12_1 = (Keyword)cGroup_6_12.eContents().get(1);
		private final Assignment cMaxAssignment_6_12_2 = (Assignment)cGroup_6_12.eContents().get(2);
		private final RuleCall cMaxSTRINGTerminalRuleCall_6_12_2_0 = (RuleCall)cMaxAssignment_6_12_2.eContents().get(0);
		private final Group cGroup_6_13 = (Group)cUnorderedGroup_6.eContents().get(13);
		private final Keyword cMinKeyword_6_13_0 = (Keyword)cGroup_6_13.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_13_1 = (Keyword)cGroup_6_13.eContents().get(1);
		private final Assignment cMinAssignment_6_13_2 = (Assignment)cGroup_6_13.eContents().get(2);
		private final RuleCall cMinSTRINGTerminalRuleCall_6_13_2_0 = (RuleCall)cMinAssignment_6_13_2.eContents().get(0);
		private final Group cGroup_6_14 = (Group)cUnorderedGroup_6.eContents().get(14);
		private final Keyword cDecimalMaxKeyword_6_14_0 = (Keyword)cGroup_6_14.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_14_1 = (Keyword)cGroup_6_14.eContents().get(1);
		private final Assignment cDecimalMaxAssignment_6_14_2 = (Assignment)cGroup_6_14.eContents().get(2);
		private final RuleCall cDecimalMaxSTRINGTerminalRuleCall_6_14_2_0 = (RuleCall)cDecimalMaxAssignment_6_14_2.eContents().get(0);
		private final Group cGroup_6_15 = (Group)cUnorderedGroup_6.eContents().get(15);
		private final Keyword cDecimalMinKeyword_6_15_0 = (Keyword)cGroup_6_15.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_15_1 = (Keyword)cGroup_6_15.eContents().get(1);
		private final Assignment cDecimalMinAssignment_6_15_2 = (Assignment)cGroup_6_15.eContents().get(2);
		private final RuleCall cDecimalMinSTRINGTerminalRuleCall_6_15_2_0 = (RuleCall)cDecimalMinAssignment_6_15_2.eContents().get(0);
		private final Group cGroup_6_16 = (Group)cUnorderedGroup_6.eContents().get(16);
		private final Assignment cNotEmptyAssignment_6_16_0 = (Assignment)cGroup_6_16.eContents().get(0);
		private final Keyword cNotEmptyNotEmptyKeyword_6_16_0_0 = (Keyword)cNotEmptyAssignment_6_16_0.eContents().get(0);
		private final Group cGroup_6_16_1 = (Group)cGroup_6_16.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_16_1_0 = (Keyword)cGroup_6_16_1.eContents().get(0);
		private final Assignment cNotEmptyMessageAssignment_6_16_1_1 = (Assignment)cGroup_6_16_1.eContents().get(1);
		private final RuleCall cNotEmptyMessageSTRINGTerminalRuleCall_6_16_1_1_0 = (RuleCall)cNotEmptyMessageAssignment_6_16_1_1.eContents().get(0);
		private final Group cGroup_6_17 = (Group)cUnorderedGroup_6.eContents().get(17);
		private final Assignment cNotBlankAssignment_6_17_0 = (Assignment)cGroup_6_17.eContents().get(0);
		private final Keyword cNotBlankNotBlankKeyword_6_17_0_0 = (Keyword)cNotBlankAssignment_6_17_0.eContents().get(0);
		private final Group cGroup_6_17_1 = (Group)cGroup_6_17.eContents().get(1);
		private final Keyword cEqualsSignKeyword_6_17_1_0 = (Keyword)cGroup_6_17_1.eContents().get(0);
		private final Assignment cNotBlankMessageAssignment_6_17_1_1 = (Assignment)cGroup_6_17_1.eContents().get(1);
		private final RuleCall cNotBlankMessageSTRINGTerminalRuleCall_6_17_1_1_0 = (RuleCall)cNotBlankMessageAssignment_6_17_1_1.eContents().get(0);
		private final Group cGroup_6_18 = (Group)cUnorderedGroup_6.eContents().get(18);
		private final Keyword cPatternKeyword_6_18_0 = (Keyword)cGroup_6_18.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_18_1 = (Keyword)cGroup_6_18.eContents().get(1);
		private final Assignment cPatternAssignment_6_18_2 = (Assignment)cGroup_6_18.eContents().get(2);
		private final RuleCall cPatternSTRINGTerminalRuleCall_6_18_2_0 = (RuleCall)cPatternAssignment_6_18_2.eContents().get(0);
		private final Group cGroup_6_19 = (Group)cUnorderedGroup_6.eContents().get(19);
		private final Keyword cRangeKeyword_6_19_0 = (Keyword)cGroup_6_19.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_19_1 = (Keyword)cGroup_6_19.eContents().get(1);
		private final Assignment cRangeAssignment_6_19_2 = (Assignment)cGroup_6_19.eContents().get(2);
		private final RuleCall cRangeSTRINGTerminalRuleCall_6_19_2_0 = (RuleCall)cRangeAssignment_6_19_2.eContents().get(0);
		private final Group cGroup_6_20 = (Group)cUnorderedGroup_6.eContents().get(20);
		private final Keyword cSizeKeyword_6_20_0 = (Keyword)cGroup_6_20.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_20_1 = (Keyword)cGroup_6_20.eContents().get(1);
		private final Assignment cSizeAssignment_6_20_2 = (Assignment)cGroup_6_20.eContents().get(2);
		private final RuleCall cSizeSTRINGTerminalRuleCall_6_20_2_0 = (RuleCall)cSizeAssignment_6_20_2.eContents().get(0);
		private final Group cGroup_6_21 = (Group)cUnorderedGroup_6.eContents().get(21);
		private final Keyword cLengthKeyword_6_21_0 = (Keyword)cGroup_6_21.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_21_1 = (Keyword)cGroup_6_21.eContents().get(1);
		private final Assignment cLengthAssignment_6_21_2 = (Assignment)cGroup_6_21.eContents().get(2);
		private final RuleCall cLengthSTRINGTerminalRuleCall_6_21_2_0 = (RuleCall)cLengthAssignment_6_21_2.eContents().get(0);
		private final Group cGroup_6_22 = (Group)cUnorderedGroup_6.eContents().get(22);
		private final Keyword cScriptAssertKeyword_6_22_0 = (Keyword)cGroup_6_22.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_22_1 = (Keyword)cGroup_6_22.eContents().get(1);
		private final Assignment cScriptAssertAssignment_6_22_2 = (Assignment)cGroup_6_22.eContents().get(2);
		private final RuleCall cScriptAssertSTRINGTerminalRuleCall_6_22_2_0 = (RuleCall)cScriptAssertAssignment_6_22_2.eContents().get(0);
		private final Group cGroup_6_23 = (Group)cUnorderedGroup_6.eContents().get(23);
		private final Keyword cUrlKeyword_6_23_0 = (Keyword)cGroup_6_23.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_23_1 = (Keyword)cGroup_6_23.eContents().get(1);
		private final Assignment cUrlAssignment_6_23_2 = (Assignment)cGroup_6_23.eContents().get(2);
		private final RuleCall cUrlSTRINGTerminalRuleCall_6_23_2_0 = (RuleCall)cUrlAssignment_6_23_2.eContents().get(0);
		private final Group cGroup_6_24 = (Group)cUnorderedGroup_6.eContents().get(24);
		private final Keyword cValidateKeyword_6_24_0 = (Keyword)cGroup_6_24.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_24_1 = (Keyword)cGroup_6_24.eContents().get(1);
		private final Assignment cValidateAssignment_6_24_2 = (Assignment)cGroup_6_24.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_6_24_2_0 = (RuleCall)cValidateAssignment_6_24_2.eContents().get(0);
		private final Group cGroup_6_25 = (Group)cUnorderedGroup_6.eContents().get(25);
		private final Keyword cHintKeyword_6_25_0 = (Keyword)cGroup_6_25.eContents().get(0);
		private final Keyword cEqualsSignKeyword_6_25_1 = (Keyword)cGroup_6_25.eContents().get(1);
		private final Assignment cHintAssignment_6_25_2 = (Assignment)cGroup_6_25.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_6_25_2_0 = (RuleCall)cHintAssignment_6_25_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//DtoAttribute:
		//	doc=STRING?
		//	visibility=Visibility? (collectionType=CollectionType "<")? type=Type ">"? name=ID (key?="key"? & (notChangeable?=NOT
		//	"changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable" | NOT "nullable")
		//	("=" nullableMessage=STRING)?)? & transient?="transient"? & (assertFalse?="assertFalse" ("="
		//	assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? &
		//	(creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "=" digits=STRING)? &
		//	(email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? & (past?="past" ("="
		//	pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? &
		//	("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank"
		//	("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "="
		//	size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? &
		//	("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? visibility=Visibility? (collectionType=CollectionType "<")? type=Type ">"? name=ID (key?="key"? &
		//(notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable" |
		//NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? & (assertFalse?="assertFalse" ("="
		//assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? &
		//(creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "=" digits=STRING)? &
		//(email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? & (past?="past" ("="
		//pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? &
		//("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank"
		//("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "="
		//size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? &
		//("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_1_0() { return cVisibilityVisibilityEnumRuleCall_1_0; }
		
		//(collectionType=CollectionType "<")?
		public Group getGroup_2() { return cGroup_2; }
		
		//collectionType=CollectionType
		public Assignment getCollectionTypeAssignment_2_0() { return cCollectionTypeAssignment_2_0; }
		
		//CollectionType
		public RuleCall getCollectionTypeCollectionTypeEnumRuleCall_2_0_0() { return cCollectionTypeCollectionTypeEnumRuleCall_2_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_2_1() { return cLessThanSignKeyword_2_1; }
		
		//type=Type
		public Assignment getTypeAssignment_3() { return cTypeAssignment_3; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_3_0() { return cTypeTypeParserRuleCall_3_0; }
		
		//">"?
		public Keyword getGreaterThanSignKeyword_4() { return cGreaterThanSignKeyword_4; }
		
		//name=ID
		public Assignment getNameAssignment_5() { return cNameAssignment_5; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_5_0() { return cNameIDTerminalRuleCall_5_0; }
		
		//(key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? &
		//(assertFalse?="assertFalse" ("=" assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("="
		//assertTrueMessage=STRING)?)? & (creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? &
		//("digits" "=" digits=STRING)? & (email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("="
		//futureMessage=STRING)?)? & (past?="past" ("=" pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "="
		//min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? & ("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty"
		//("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank" ("=" notBlankMessage=STRING)?)? & ("pattern" "="
		//pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "=" size=STRING)? & ("length" "=" length=STRING)? &
		//("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? & ("validate" "=" validate=STRING)? & ("hint" "="
		//hint=STRING)?)
		public UnorderedGroup getUnorderedGroup_6() { return cUnorderedGroup_6; }
		
		//key?="key"?
		public Assignment getKeyAssignment_6_0() { return cKeyAssignment_6_0; }
		
		//"key"
		public Keyword getKeyKeyKeyword_6_0_0() { return cKeyKeyKeyword_6_0_0; }
		
		//(notChangeable?=NOT "changeable" | "changeable")?
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//notChangeable?=NOT "changeable"
		public Group getGroup_6_1_0() { return cGroup_6_1_0; }
		
		//notChangeable?=NOT
		public Assignment getNotChangeableAssignment_6_1_0_0() { return cNotChangeableAssignment_6_1_0_0; }
		
		//NOT
		public RuleCall getNotChangeableNOTTerminalRuleCall_6_1_0_0_0() { return cNotChangeableNOTTerminalRuleCall_6_1_0_0_0; }
		
		//"changeable"
		public Keyword getChangeableKeyword_6_1_0_1() { return cChangeableKeyword_6_1_0_1; }
		
		//"changeable"
		public Keyword getChangeableKeyword_6_1_1() { return cChangeableKeyword_6_1_1; }
		
		//(required?="required" | NOT "required")?
		public Alternatives getAlternatives_6_2() { return cAlternatives_6_2; }
		
		//required?="required"
		public Assignment getRequiredAssignment_6_2_0() { return cRequiredAssignment_6_2_0; }
		
		//"required"
		public Keyword getRequiredRequiredKeyword_6_2_0_0() { return cRequiredRequiredKeyword_6_2_0_0; }
		
		//NOT "required"
		public Group getGroup_6_2_1() { return cGroup_6_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_6_2_1_0() { return cNOTTerminalRuleCall_6_2_1_0; }
		
		//"required"
		public Keyword getRequiredKeyword_6_2_1_1() { return cRequiredKeyword_6_2_1_1; }
		
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)?
		public Group getGroup_6_3() { return cGroup_6_3; }
		
		//(nullable?="nullable" | NOT "nullable")
		public Alternatives getAlternatives_6_3_0() { return cAlternatives_6_3_0; }
		
		//nullable?="nullable"
		public Assignment getNullableAssignment_6_3_0_0() { return cNullableAssignment_6_3_0_0; }
		
		//"nullable"
		public Keyword getNullableNullableKeyword_6_3_0_0_0() { return cNullableNullableKeyword_6_3_0_0_0; }
		
		//NOT "nullable"
		public Group getGroup_6_3_0_1() { return cGroup_6_3_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_6_3_0_1_0() { return cNOTTerminalRuleCall_6_3_0_1_0; }
		
		//"nullable"
		public Keyword getNullableKeyword_6_3_0_1_1() { return cNullableKeyword_6_3_0_1_1; }
		
		//("=" nullableMessage=STRING)?
		public Group getGroup_6_3_1() { return cGroup_6_3_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_3_1_0() { return cEqualsSignKeyword_6_3_1_0; }
		
		//nullableMessage=STRING
		public Assignment getNullableMessageAssignment_6_3_1_1() { return cNullableMessageAssignment_6_3_1_1; }
		
		//STRING
		public RuleCall getNullableMessageSTRINGTerminalRuleCall_6_3_1_1_0() { return cNullableMessageSTRINGTerminalRuleCall_6_3_1_1_0; }
		
		//transient?="transient"?
		public Assignment getTransientAssignment_6_4() { return cTransientAssignment_6_4; }
		
		//"transient"
		public Keyword getTransientTransientKeyword_6_4_0() { return cTransientTransientKeyword_6_4_0; }
		
		//(assertFalse?="assertFalse" ("=" assertFalseMessage=STRING)?)?
		public Group getGroup_6_5() { return cGroup_6_5; }
		
		//assertFalse?="assertFalse"
		public Assignment getAssertFalseAssignment_6_5_0() { return cAssertFalseAssignment_6_5_0; }
		
		//"assertFalse"
		public Keyword getAssertFalseAssertFalseKeyword_6_5_0_0() { return cAssertFalseAssertFalseKeyword_6_5_0_0; }
		
		//("=" assertFalseMessage=STRING)?
		public Group getGroup_6_5_1() { return cGroup_6_5_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_5_1_0() { return cEqualsSignKeyword_6_5_1_0; }
		
		//assertFalseMessage=STRING
		public Assignment getAssertFalseMessageAssignment_6_5_1_1() { return cAssertFalseMessageAssignment_6_5_1_1; }
		
		//STRING
		public RuleCall getAssertFalseMessageSTRINGTerminalRuleCall_6_5_1_1_0() { return cAssertFalseMessageSTRINGTerminalRuleCall_6_5_1_1_0; }
		
		//(assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)?
		public Group getGroup_6_6() { return cGroup_6_6; }
		
		//assertTrue?="assertTrue"
		public Assignment getAssertTrueAssignment_6_6_0() { return cAssertTrueAssignment_6_6_0; }
		
		//"assertTrue"
		public Keyword getAssertTrueAssertTrueKeyword_6_6_0_0() { return cAssertTrueAssertTrueKeyword_6_6_0_0; }
		
		//("=" assertTrueMessage=STRING)?
		public Group getGroup_6_6_1() { return cGroup_6_6_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_6_1_0() { return cEqualsSignKeyword_6_6_1_0; }
		
		//assertTrueMessage=STRING
		public Assignment getAssertTrueMessageAssignment_6_6_1_1() { return cAssertTrueMessageAssignment_6_6_1_1; }
		
		//STRING
		public RuleCall getAssertTrueMessageSTRINGTerminalRuleCall_6_6_1_1_0() { return cAssertTrueMessageSTRINGTerminalRuleCall_6_6_1_1_0; }
		
		//(creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)?
		public Group getGroup_6_7() { return cGroup_6_7; }
		
		//creditCardNumber?="creditCardNumber"
		public Assignment getCreditCardNumberAssignment_6_7_0() { return cCreditCardNumberAssignment_6_7_0; }
		
		//"creditCardNumber"
		public Keyword getCreditCardNumberCreditCardNumberKeyword_6_7_0_0() { return cCreditCardNumberCreditCardNumberKeyword_6_7_0_0; }
		
		//("=" creditCardNumberMessage=STRING)?
		public Group getGroup_6_7_1() { return cGroup_6_7_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_7_1_0() { return cEqualsSignKeyword_6_7_1_0; }
		
		//creditCardNumberMessage=STRING
		public Assignment getCreditCardNumberMessageAssignment_6_7_1_1() { return cCreditCardNumberMessageAssignment_6_7_1_1; }
		
		//STRING
		public RuleCall getCreditCardNumberMessageSTRINGTerminalRuleCall_6_7_1_1_0() { return cCreditCardNumberMessageSTRINGTerminalRuleCall_6_7_1_1_0; }
		
		//("digits" "=" digits=STRING)?
		public Group getGroup_6_8() { return cGroup_6_8; }
		
		//"digits"
		public Keyword getDigitsKeyword_6_8_0() { return cDigitsKeyword_6_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_8_1() { return cEqualsSignKeyword_6_8_1; }
		
		//digits=STRING
		public Assignment getDigitsAssignment_6_8_2() { return cDigitsAssignment_6_8_2; }
		
		//STRING
		public RuleCall getDigitsSTRINGTerminalRuleCall_6_8_2_0() { return cDigitsSTRINGTerminalRuleCall_6_8_2_0; }
		
		//(email?="email" ("=" emailMessage=STRING)?)?
		public Group getGroup_6_9() { return cGroup_6_9; }
		
		//email?="email"
		public Assignment getEmailAssignment_6_9_0() { return cEmailAssignment_6_9_0; }
		
		//"email"
		public Keyword getEmailEmailKeyword_6_9_0_0() { return cEmailEmailKeyword_6_9_0_0; }
		
		//("=" emailMessage=STRING)?
		public Group getGroup_6_9_1() { return cGroup_6_9_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_9_1_0() { return cEqualsSignKeyword_6_9_1_0; }
		
		//emailMessage=STRING
		public Assignment getEmailMessageAssignment_6_9_1_1() { return cEmailMessageAssignment_6_9_1_1; }
		
		//STRING
		public RuleCall getEmailMessageSTRINGTerminalRuleCall_6_9_1_1_0() { return cEmailMessageSTRINGTerminalRuleCall_6_9_1_1_0; }
		
		//(future?="future" ("=" futureMessage=STRING)?)?
		public Group getGroup_6_10() { return cGroup_6_10; }
		
		//future?="future"
		public Assignment getFutureAssignment_6_10_0() { return cFutureAssignment_6_10_0; }
		
		//"future"
		public Keyword getFutureFutureKeyword_6_10_0_0() { return cFutureFutureKeyword_6_10_0_0; }
		
		//("=" futureMessage=STRING)?
		public Group getGroup_6_10_1() { return cGroup_6_10_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_10_1_0() { return cEqualsSignKeyword_6_10_1_0; }
		
		//futureMessage=STRING
		public Assignment getFutureMessageAssignment_6_10_1_1() { return cFutureMessageAssignment_6_10_1_1; }
		
		//STRING
		public RuleCall getFutureMessageSTRINGTerminalRuleCall_6_10_1_1_0() { return cFutureMessageSTRINGTerminalRuleCall_6_10_1_1_0; }
		
		//(past?="past" ("=" pastMessage=STRING)?)?
		public Group getGroup_6_11() { return cGroup_6_11; }
		
		//past?="past"
		public Assignment getPastAssignment_6_11_0() { return cPastAssignment_6_11_0; }
		
		//"past"
		public Keyword getPastPastKeyword_6_11_0_0() { return cPastPastKeyword_6_11_0_0; }
		
		//("=" pastMessage=STRING)?
		public Group getGroup_6_11_1() { return cGroup_6_11_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_11_1_0() { return cEqualsSignKeyword_6_11_1_0; }
		
		//pastMessage=STRING
		public Assignment getPastMessageAssignment_6_11_1_1() { return cPastMessageAssignment_6_11_1_1; }
		
		//STRING
		public RuleCall getPastMessageSTRINGTerminalRuleCall_6_11_1_1_0() { return cPastMessageSTRINGTerminalRuleCall_6_11_1_1_0; }
		
		//("max" "=" max=STRING)?
		public Group getGroup_6_12() { return cGroup_6_12; }
		
		//"max"
		public Keyword getMaxKeyword_6_12_0() { return cMaxKeyword_6_12_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_12_1() { return cEqualsSignKeyword_6_12_1; }
		
		//max=STRING
		public Assignment getMaxAssignment_6_12_2() { return cMaxAssignment_6_12_2; }
		
		//STRING
		public RuleCall getMaxSTRINGTerminalRuleCall_6_12_2_0() { return cMaxSTRINGTerminalRuleCall_6_12_2_0; }
		
		//("min" "=" min=STRING)?
		public Group getGroup_6_13() { return cGroup_6_13; }
		
		//"min"
		public Keyword getMinKeyword_6_13_0() { return cMinKeyword_6_13_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_13_1() { return cEqualsSignKeyword_6_13_1; }
		
		//min=STRING
		public Assignment getMinAssignment_6_13_2() { return cMinAssignment_6_13_2; }
		
		//STRING
		public RuleCall getMinSTRINGTerminalRuleCall_6_13_2_0() { return cMinSTRINGTerminalRuleCall_6_13_2_0; }
		
		//("decimalMax" "=" decimalMax=STRING)?
		public Group getGroup_6_14() { return cGroup_6_14; }
		
		//"decimalMax"
		public Keyword getDecimalMaxKeyword_6_14_0() { return cDecimalMaxKeyword_6_14_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_14_1() { return cEqualsSignKeyword_6_14_1; }
		
		//decimalMax=STRING
		public Assignment getDecimalMaxAssignment_6_14_2() { return cDecimalMaxAssignment_6_14_2; }
		
		//STRING
		public RuleCall getDecimalMaxSTRINGTerminalRuleCall_6_14_2_0() { return cDecimalMaxSTRINGTerminalRuleCall_6_14_2_0; }
		
		//("decimalMin" "=" decimalMin=STRING)?
		public Group getGroup_6_15() { return cGroup_6_15; }
		
		//"decimalMin"
		public Keyword getDecimalMinKeyword_6_15_0() { return cDecimalMinKeyword_6_15_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_15_1() { return cEqualsSignKeyword_6_15_1; }
		
		//decimalMin=STRING
		public Assignment getDecimalMinAssignment_6_15_2() { return cDecimalMinAssignment_6_15_2; }
		
		//STRING
		public RuleCall getDecimalMinSTRINGTerminalRuleCall_6_15_2_0() { return cDecimalMinSTRINGTerminalRuleCall_6_15_2_0; }
		
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)?
		public Group getGroup_6_16() { return cGroup_6_16; }
		
		//notEmpty?="notEmpty"
		public Assignment getNotEmptyAssignment_6_16_0() { return cNotEmptyAssignment_6_16_0; }
		
		//"notEmpty"
		public Keyword getNotEmptyNotEmptyKeyword_6_16_0_0() { return cNotEmptyNotEmptyKeyword_6_16_0_0; }
		
		//("=" notEmptyMessage=STRING)?
		public Group getGroup_6_16_1() { return cGroup_6_16_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_16_1_0() { return cEqualsSignKeyword_6_16_1_0; }
		
		//notEmptyMessage=STRING
		public Assignment getNotEmptyMessageAssignment_6_16_1_1() { return cNotEmptyMessageAssignment_6_16_1_1; }
		
		//STRING
		public RuleCall getNotEmptyMessageSTRINGTerminalRuleCall_6_16_1_1_0() { return cNotEmptyMessageSTRINGTerminalRuleCall_6_16_1_1_0; }
		
		//(notBlank?="notBlank" ("=" notBlankMessage=STRING)?)?
		public Group getGroup_6_17() { return cGroup_6_17; }
		
		//notBlank?="notBlank"
		public Assignment getNotBlankAssignment_6_17_0() { return cNotBlankAssignment_6_17_0; }
		
		//"notBlank"
		public Keyword getNotBlankNotBlankKeyword_6_17_0_0() { return cNotBlankNotBlankKeyword_6_17_0_0; }
		
		//("=" notBlankMessage=STRING)?
		public Group getGroup_6_17_1() { return cGroup_6_17_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_17_1_0() { return cEqualsSignKeyword_6_17_1_0; }
		
		//notBlankMessage=STRING
		public Assignment getNotBlankMessageAssignment_6_17_1_1() { return cNotBlankMessageAssignment_6_17_1_1; }
		
		//STRING
		public RuleCall getNotBlankMessageSTRINGTerminalRuleCall_6_17_1_1_0() { return cNotBlankMessageSTRINGTerminalRuleCall_6_17_1_1_0; }
		
		//("pattern" "=" pattern=STRING)?
		public Group getGroup_6_18() { return cGroup_6_18; }
		
		//"pattern"
		public Keyword getPatternKeyword_6_18_0() { return cPatternKeyword_6_18_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_18_1() { return cEqualsSignKeyword_6_18_1; }
		
		//pattern=STRING
		public Assignment getPatternAssignment_6_18_2() { return cPatternAssignment_6_18_2; }
		
		//STRING
		public RuleCall getPatternSTRINGTerminalRuleCall_6_18_2_0() { return cPatternSTRINGTerminalRuleCall_6_18_2_0; }
		
		//("range" "=" range=STRING)?
		public Group getGroup_6_19() { return cGroup_6_19; }
		
		//"range"
		public Keyword getRangeKeyword_6_19_0() { return cRangeKeyword_6_19_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_19_1() { return cEqualsSignKeyword_6_19_1; }
		
		//range=STRING
		public Assignment getRangeAssignment_6_19_2() { return cRangeAssignment_6_19_2; }
		
		//STRING
		public RuleCall getRangeSTRINGTerminalRuleCall_6_19_2_0() { return cRangeSTRINGTerminalRuleCall_6_19_2_0; }
		
		//("size" "=" size=STRING)?
		public Group getGroup_6_20() { return cGroup_6_20; }
		
		//"size"
		public Keyword getSizeKeyword_6_20_0() { return cSizeKeyword_6_20_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_20_1() { return cEqualsSignKeyword_6_20_1; }
		
		//size=STRING
		public Assignment getSizeAssignment_6_20_2() { return cSizeAssignment_6_20_2; }
		
		//STRING
		public RuleCall getSizeSTRINGTerminalRuleCall_6_20_2_0() { return cSizeSTRINGTerminalRuleCall_6_20_2_0; }
		
		//("length" "=" length=STRING)?
		public Group getGroup_6_21() { return cGroup_6_21; }
		
		//"length"
		public Keyword getLengthKeyword_6_21_0() { return cLengthKeyword_6_21_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_21_1() { return cEqualsSignKeyword_6_21_1; }
		
		//length=STRING
		public Assignment getLengthAssignment_6_21_2() { return cLengthAssignment_6_21_2; }
		
		//STRING
		public RuleCall getLengthSTRINGTerminalRuleCall_6_21_2_0() { return cLengthSTRINGTerminalRuleCall_6_21_2_0; }
		
		//("scriptAssert" "=" scriptAssert=STRING)?
		public Group getGroup_6_22() { return cGroup_6_22; }
		
		//"scriptAssert"
		public Keyword getScriptAssertKeyword_6_22_0() { return cScriptAssertKeyword_6_22_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_22_1() { return cEqualsSignKeyword_6_22_1; }
		
		//scriptAssert=STRING
		public Assignment getScriptAssertAssignment_6_22_2() { return cScriptAssertAssignment_6_22_2; }
		
		//STRING
		public RuleCall getScriptAssertSTRINGTerminalRuleCall_6_22_2_0() { return cScriptAssertSTRINGTerminalRuleCall_6_22_2_0; }
		
		//("url" "=" url=STRING)?
		public Group getGroup_6_23() { return cGroup_6_23; }
		
		//"url"
		public Keyword getUrlKeyword_6_23_0() { return cUrlKeyword_6_23_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_23_1() { return cEqualsSignKeyword_6_23_1; }
		
		//url=STRING
		public Assignment getUrlAssignment_6_23_2() { return cUrlAssignment_6_23_2; }
		
		//STRING
		public RuleCall getUrlSTRINGTerminalRuleCall_6_23_2_0() { return cUrlSTRINGTerminalRuleCall_6_23_2_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_6_24() { return cGroup_6_24; }
		
		//"validate"
		public Keyword getValidateKeyword_6_24_0() { return cValidateKeyword_6_24_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_24_1() { return cEqualsSignKeyword_6_24_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_6_24_2() { return cValidateAssignment_6_24_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_6_24_2_0() { return cValidateSTRINGTerminalRuleCall_6_24_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_6_25() { return cGroup_6_25; }
		
		//"hint"
		public Keyword getHintKeyword_6_25_0() { return cHintKeyword_6_25_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_6_25_1() { return cEqualsSignKeyword_6_25_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_6_25_2() { return cHintAssignment_6_25_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_6_25_2_0() { return cHintSTRINGTerminalRuleCall_6_25_2_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class DtoReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DtoReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final RuleCall cREFTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cVisibilityAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cVisibilityVisibilityEnumRuleCall_2_0 = (RuleCall)cVisibilityAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cCollectionTypeAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cCollectionTypeCollectionTypeEnumRuleCall_3_0_0 = (RuleCall)cCollectionTypeAssignment_3_0.eContents().get(0);
		private final Keyword cLessThanSignKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommercialAtKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cDomainObjectTypeAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final CrossReference cDomainObjectTypeSimpleDomainObjectCrossReference_4_1_0 = (CrossReference)cDomainObjectTypeAssignment_4_1.eContents().get(0);
		private final RuleCall cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_1_0_1 = (RuleCall)cDomainObjectTypeSimpleDomainObjectCrossReference_4_1_0.eContents().get(1);
		private final Keyword cGreaterThanSignKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cNameAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cNameIDTerminalRuleCall_6_0 = (RuleCall)cNameAssignment_6.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_7 = (UnorderedGroup)cGroup.eContents().get(7);
		private final Assignment cKeyAssignment_7_0 = (Assignment)cUnorderedGroup_7.eContents().get(0);
		private final Keyword cKeyKeyKeyword_7_0_0 = (Keyword)cKeyAssignment_7_0.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cUnorderedGroup_7.eContents().get(1);
		private final Group cGroup_7_1_0 = (Group)cAlternatives_7_1.eContents().get(0);
		private final Assignment cNotChangeableAssignment_7_1_0_0 = (Assignment)cGroup_7_1_0.eContents().get(0);
		private final RuleCall cNotChangeableNOTTerminalRuleCall_7_1_0_0_0 = (RuleCall)cNotChangeableAssignment_7_1_0_0.eContents().get(0);
		private final Keyword cChangeableKeyword_7_1_0_1 = (Keyword)cGroup_7_1_0.eContents().get(1);
		private final Keyword cChangeableKeyword_7_1_1 = (Keyword)cAlternatives_7_1.eContents().get(1);
		private final Alternatives cAlternatives_7_2 = (Alternatives)cUnorderedGroup_7.eContents().get(2);
		private final Assignment cRequiredAssignment_7_2_0 = (Assignment)cAlternatives_7_2.eContents().get(0);
		private final Keyword cRequiredRequiredKeyword_7_2_0_0 = (Keyword)cRequiredAssignment_7_2_0.eContents().get(0);
		private final Group cGroup_7_2_1 = (Group)cAlternatives_7_2.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_2_1_0 = (RuleCall)cGroup_7_2_1.eContents().get(0);
		private final Keyword cRequiredKeyword_7_2_1_1 = (Keyword)cGroup_7_2_1.eContents().get(1);
		private final Group cGroup_7_3 = (Group)cUnorderedGroup_7.eContents().get(3);
		private final Alternatives cAlternatives_7_3_0 = (Alternatives)cGroup_7_3.eContents().get(0);
		private final Assignment cNullableAssignment_7_3_0_0 = (Assignment)cAlternatives_7_3_0.eContents().get(0);
		private final Keyword cNullableNullableKeyword_7_3_0_0_0 = (Keyword)cNullableAssignment_7_3_0_0.eContents().get(0);
		private final Group cGroup_7_3_0_1 = (Group)cAlternatives_7_3_0.eContents().get(1);
		private final RuleCall cNOTTerminalRuleCall_7_3_0_1_0 = (RuleCall)cGroup_7_3_0_1.eContents().get(0);
		private final Keyword cNullableKeyword_7_3_0_1_1 = (Keyword)cGroup_7_3_0_1.eContents().get(1);
		private final Group cGroup_7_3_1 = (Group)cGroup_7_3.eContents().get(1);
		private final Keyword cEqualsSignKeyword_7_3_1_0 = (Keyword)cGroup_7_3_1.eContents().get(0);
		private final Assignment cNullableMessageAssignment_7_3_1_1 = (Assignment)cGroup_7_3_1.eContents().get(1);
		private final RuleCall cNullableMessageSTRINGTerminalRuleCall_7_3_1_1_0 = (RuleCall)cNullableMessageAssignment_7_3_1_1.eContents().get(0);
		private final Assignment cTransientAssignment_7_4 = (Assignment)cUnorderedGroup_7.eContents().get(4);
		private final Keyword cTransientTransientKeyword_7_4_0 = (Keyword)cTransientAssignment_7_4.eContents().get(0);
		private final Group cGroup_7_5 = (Group)cUnorderedGroup_7.eContents().get(5);
		private final Assignment cNotEmptyAssignment_7_5_0 = (Assignment)cGroup_7_5.eContents().get(0);
		private final Keyword cNotEmptyNotEmptyKeyword_7_5_0_0 = (Keyword)cNotEmptyAssignment_7_5_0.eContents().get(0);
		private final Group cGroup_7_5_1 = (Group)cGroup_7_5.eContents().get(1);
		private final Keyword cEqualsSignKeyword_7_5_1_0 = (Keyword)cGroup_7_5_1.eContents().get(0);
		private final Assignment cNotEmptyMessageAssignment_7_5_1_1 = (Assignment)cGroup_7_5_1.eContents().get(1);
		private final RuleCall cNotEmptyMessageSTRINGTerminalRuleCall_7_5_1_1_0 = (RuleCall)cNotEmptyMessageAssignment_7_5_1_1.eContents().get(0);
		private final Group cGroup_7_6 = (Group)cUnorderedGroup_7.eContents().get(6);
		private final Keyword cSizeKeyword_7_6_0 = (Keyword)cGroup_7_6.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_6_1 = (Keyword)cGroup_7_6.eContents().get(1);
		private final Assignment cSizeAssignment_7_6_2 = (Assignment)cGroup_7_6.eContents().get(2);
		private final RuleCall cSizeSTRINGTerminalRuleCall_7_6_2_0 = (RuleCall)cSizeAssignment_7_6_2.eContents().get(0);
		private final Group cGroup_7_7 = (Group)cUnorderedGroup_7.eContents().get(7);
		private final Assignment cValidAssignment_7_7_0 = (Assignment)cGroup_7_7.eContents().get(0);
		private final Keyword cValidValidKeyword_7_7_0_0 = (Keyword)cValidAssignment_7_7_0.eContents().get(0);
		private final Group cGroup_7_7_1 = (Group)cGroup_7_7.eContents().get(1);
		private final Keyword cEqualsSignKeyword_7_7_1_0 = (Keyword)cGroup_7_7_1.eContents().get(0);
		private final Assignment cValidMessageAssignment_7_7_1_1 = (Assignment)cGroup_7_7_1.eContents().get(1);
		private final RuleCall cValidMessageSTRINGTerminalRuleCall_7_7_1_1_0 = (RuleCall)cValidMessageAssignment_7_7_1_1.eContents().get(0);
		private final Group cGroup_7_8 = (Group)cUnorderedGroup_7.eContents().get(8);
		private final Keyword cValidateKeyword_7_8_0 = (Keyword)cGroup_7_8.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_8_1 = (Keyword)cGroup_7_8.eContents().get(1);
		private final Assignment cValidateAssignment_7_8_2 = (Assignment)cGroup_7_8.eContents().get(2);
		private final RuleCall cValidateSTRINGTerminalRuleCall_7_8_2_0 = (RuleCall)cValidateAssignment_7_8_2.eContents().get(0);
		private final Group cGroup_7_9 = (Group)cUnorderedGroup_7.eContents().get(9);
		private final Keyword cHintKeyword_7_9_0 = (Keyword)cGroup_7_9.eContents().get(0);
		private final Keyword cEqualsSignKeyword_7_9_1 = (Keyword)cGroup_7_9.eContents().get(1);
		private final Assignment cHintAssignment_7_9_2 = (Assignment)cGroup_7_9.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_7_9_2_0 = (RuleCall)cHintAssignment_7_9_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//DtoReference:
		//	doc=STRING?
		//	REF visibility=Visibility? (collectionType=CollectionType "<")? ("@"? domainObjectType=[SimpleDomainObject]) ">"?
		//	name=ID (key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
		//	((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? &
		//	(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
		//	validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? REF visibility=Visibility? (collectionType=CollectionType "<")? ("@"? domainObjectType=[SimpleDomainObject])
		//">"? name=ID (key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT
		//"required")? & ((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? &
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
		//validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//REF
		public RuleCall getREFTerminalRuleCall_1() { return cREFTerminalRuleCall_1; }
		
		//visibility=Visibility?
		public Assignment getVisibilityAssignment_2() { return cVisibilityAssignment_2; }
		
		//Visibility
		public RuleCall getVisibilityVisibilityEnumRuleCall_2_0() { return cVisibilityVisibilityEnumRuleCall_2_0; }
		
		//(collectionType=CollectionType "<")?
		public Group getGroup_3() { return cGroup_3; }
		
		//collectionType=CollectionType
		public Assignment getCollectionTypeAssignment_3_0() { return cCollectionTypeAssignment_3_0; }
		
		//CollectionType
		public RuleCall getCollectionTypeCollectionTypeEnumRuleCall_3_0_0() { return cCollectionTypeCollectionTypeEnumRuleCall_3_0_0; }
		
		//"<"
		public Keyword getLessThanSignKeyword_3_1() { return cLessThanSignKeyword_3_1; }
		
		//("@"? domainObjectType=[SimpleDomainObject])
		public Group getGroup_4() { return cGroup_4; }
		
		//"@"?
		public Keyword getCommercialAtKeyword_4_0() { return cCommercialAtKeyword_4_0; }
		
		//domainObjectType=[SimpleDomainObject]
		public Assignment getDomainObjectTypeAssignment_4_1() { return cDomainObjectTypeAssignment_4_1; }
		
		//[SimpleDomainObject]
		public CrossReference getDomainObjectTypeSimpleDomainObjectCrossReference_4_1_0() { return cDomainObjectTypeSimpleDomainObjectCrossReference_4_1_0; }
		
		//ID
		public RuleCall getDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_1_0_1() { return cDomainObjectTypeSimpleDomainObjectIDTerminalRuleCall_4_1_0_1; }
		
		//">"?
		public Keyword getGreaterThanSignKeyword_5() { return cGreaterThanSignKeyword_5; }
		
		//name=ID
		public Assignment getNameAssignment_6() { return cNameAssignment_6; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_6_0() { return cNameIDTerminalRuleCall_6_0; }
		
		//(key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? &
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
		//validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?)
		public UnorderedGroup getUnorderedGroup_7() { return cUnorderedGroup_7; }
		
		//key?="key"?
		public Assignment getKeyAssignment_7_0() { return cKeyAssignment_7_0; }
		
		//"key"
		public Keyword getKeyKeyKeyword_7_0_0() { return cKeyKeyKeyword_7_0_0; }
		
		//(notChangeable?=NOT "changeable" | "changeable")?
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//notChangeable?=NOT "changeable"
		public Group getGroup_7_1_0() { return cGroup_7_1_0; }
		
		//notChangeable?=NOT
		public Assignment getNotChangeableAssignment_7_1_0_0() { return cNotChangeableAssignment_7_1_0_0; }
		
		//NOT
		public RuleCall getNotChangeableNOTTerminalRuleCall_7_1_0_0_0() { return cNotChangeableNOTTerminalRuleCall_7_1_0_0_0; }
		
		//"changeable"
		public Keyword getChangeableKeyword_7_1_0_1() { return cChangeableKeyword_7_1_0_1; }
		
		//"changeable"
		public Keyword getChangeableKeyword_7_1_1() { return cChangeableKeyword_7_1_1; }
		
		//(required?="required" | NOT "required")?
		public Alternatives getAlternatives_7_2() { return cAlternatives_7_2; }
		
		//required?="required"
		public Assignment getRequiredAssignment_7_2_0() { return cRequiredAssignment_7_2_0; }
		
		//"required"
		public Keyword getRequiredRequiredKeyword_7_2_0_0() { return cRequiredRequiredKeyword_7_2_0_0; }
		
		//NOT "required"
		public Group getGroup_7_2_1() { return cGroup_7_2_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_2_1_0() { return cNOTTerminalRuleCall_7_2_1_0; }
		
		//"required"
		public Keyword getRequiredKeyword_7_2_1_1() { return cRequiredKeyword_7_2_1_1; }
		
		//((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)?
		public Group getGroup_7_3() { return cGroup_7_3; }
		
		//(nullable?="nullable" | NOT "nullable")
		public Alternatives getAlternatives_7_3_0() { return cAlternatives_7_3_0; }
		
		//nullable?="nullable"
		public Assignment getNullableAssignment_7_3_0_0() { return cNullableAssignment_7_3_0_0; }
		
		//"nullable"
		public Keyword getNullableNullableKeyword_7_3_0_0_0() { return cNullableNullableKeyword_7_3_0_0_0; }
		
		//NOT "nullable"
		public Group getGroup_7_3_0_1() { return cGroup_7_3_0_1; }
		
		//NOT
		public RuleCall getNOTTerminalRuleCall_7_3_0_1_0() { return cNOTTerminalRuleCall_7_3_0_1_0; }
		
		//"nullable"
		public Keyword getNullableKeyword_7_3_0_1_1() { return cNullableKeyword_7_3_0_1_1; }
		
		//("=" nullableMessage=STRING)?
		public Group getGroup_7_3_1() { return cGroup_7_3_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_3_1_0() { return cEqualsSignKeyword_7_3_1_0; }
		
		//nullableMessage=STRING
		public Assignment getNullableMessageAssignment_7_3_1_1() { return cNullableMessageAssignment_7_3_1_1; }
		
		//STRING
		public RuleCall getNullableMessageSTRINGTerminalRuleCall_7_3_1_1_0() { return cNullableMessageSTRINGTerminalRuleCall_7_3_1_1_0; }
		
		//transient?="transient"?
		public Assignment getTransientAssignment_7_4() { return cTransientAssignment_7_4; }
		
		//"transient"
		public Keyword getTransientTransientKeyword_7_4_0() { return cTransientTransientKeyword_7_4_0; }
		
		//(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)?
		public Group getGroup_7_5() { return cGroup_7_5; }
		
		//notEmpty?="notEmpty"
		public Assignment getNotEmptyAssignment_7_5_0() { return cNotEmptyAssignment_7_5_0; }
		
		//"notEmpty"
		public Keyword getNotEmptyNotEmptyKeyword_7_5_0_0() { return cNotEmptyNotEmptyKeyword_7_5_0_0; }
		
		//("=" notEmptyMessage=STRING)?
		public Group getGroup_7_5_1() { return cGroup_7_5_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_5_1_0() { return cEqualsSignKeyword_7_5_1_0; }
		
		//notEmptyMessage=STRING
		public Assignment getNotEmptyMessageAssignment_7_5_1_1() { return cNotEmptyMessageAssignment_7_5_1_1; }
		
		//STRING
		public RuleCall getNotEmptyMessageSTRINGTerminalRuleCall_7_5_1_1_0() { return cNotEmptyMessageSTRINGTerminalRuleCall_7_5_1_1_0; }
		
		//("size" "=" size=STRING)?
		public Group getGroup_7_6() { return cGroup_7_6; }
		
		//"size"
		public Keyword getSizeKeyword_7_6_0() { return cSizeKeyword_7_6_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_6_1() { return cEqualsSignKeyword_7_6_1; }
		
		//size=STRING
		public Assignment getSizeAssignment_7_6_2() { return cSizeAssignment_7_6_2; }
		
		//STRING
		public RuleCall getSizeSTRINGTerminalRuleCall_7_6_2_0() { return cSizeSTRINGTerminalRuleCall_7_6_2_0; }
		
		//(valid?="valid" ("=" validMessage=STRING)?)?
		public Group getGroup_7_7() { return cGroup_7_7; }
		
		//valid?="valid"
		public Assignment getValidAssignment_7_7_0() { return cValidAssignment_7_7_0; }
		
		//"valid"
		public Keyword getValidValidKeyword_7_7_0_0() { return cValidValidKeyword_7_7_0_0; }
		
		//("=" validMessage=STRING)?
		public Group getGroup_7_7_1() { return cGroup_7_7_1; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_7_1_0() { return cEqualsSignKeyword_7_7_1_0; }
		
		//validMessage=STRING
		public Assignment getValidMessageAssignment_7_7_1_1() { return cValidMessageAssignment_7_7_1_1; }
		
		//STRING
		public RuleCall getValidMessageSTRINGTerminalRuleCall_7_7_1_1_0() { return cValidMessageSTRINGTerminalRuleCall_7_7_1_1_0; }
		
		//("validate" "=" validate=STRING)?
		public Group getGroup_7_8() { return cGroup_7_8; }
		
		//"validate"
		public Keyword getValidateKeyword_7_8_0() { return cValidateKeyword_7_8_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_8_1() { return cEqualsSignKeyword_7_8_1; }
		
		//validate=STRING
		public Assignment getValidateAssignment_7_8_2() { return cValidateAssignment_7_8_2; }
		
		//STRING
		public RuleCall getValidateSTRINGTerminalRuleCall_7_8_2_0() { return cValidateSTRINGTerminalRuleCall_7_8_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_7_9() { return cGroup_7_9; }
		
		//"hint"
		public Keyword getHintKeyword_7_9_0() { return cHintKeyword_7_9_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_7_9_1() { return cEqualsSignKeyword_7_9_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_7_9_2() { return cHintAssignment_7_9_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_7_9_2_0() { return cHintSTRINGTerminalRuleCall_7_9_2_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_8() { return cSemicolonKeyword_8; }
	}
	public class OppositeHolderElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.OppositeHolder");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cOPPOSITETerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOppositeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cOppositeReferenceCrossReference_1_0 = (CrossReference)cOppositeAssignment_1.eContents().get(0);
		private final RuleCall cOppositeReferenceIDTerminalRuleCall_1_0_1 = (RuleCall)cOppositeReferenceCrossReference_1_0.eContents().get(1);
		
		//OppositeHolder:
		//	OPPOSITE opposite=[Reference];
		@Override public ParserRule getRule() { return rule; }
		
		//OPPOSITE opposite=[Reference]
		public Group getGroup() { return cGroup; }
		
		//OPPOSITE
		public RuleCall getOPPOSITETerminalRuleCall_0() { return cOPPOSITETerminalRuleCall_0; }
		
		//opposite=[Reference]
		public Assignment getOppositeAssignment_1() { return cOppositeAssignment_1; }
		
		//[Reference]
		public CrossReference getOppositeReferenceCrossReference_1_0() { return cOppositeReferenceCrossReference_1_0; }
		
		//ID
		public RuleCall getOppositeReferenceIDTerminalRuleCall_1_0_1() { return cOppositeReferenceIDTerminalRuleCall_1_0_1; }
	}
	public class RepositoryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Repository");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cRepositoryKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_3_1 = (UnorderedGroup)cGroup_3.eContents().get(1);
		private final Alternatives cAlternatives_3_1_0 = (Alternatives)cUnorderedGroup_3_1.eContents().get(0);
		private final Assignment cGapClassAssignment_3_1_0_0 = (Assignment)cAlternatives_3_1_0.eContents().get(0);
		private final Keyword cGapClassGapKeyword_3_1_0_0_0 = (Keyword)cGapClassAssignment_3_1_0_0.eContents().get(0);
		private final Assignment cNoGapClassAssignment_3_1_0_1 = (Assignment)cAlternatives_3_1_0.eContents().get(1);
		private final Keyword cNoGapClassNogapKeyword_3_1_0_1_0 = (Keyword)cNoGapClassAssignment_3_1_0_1.eContents().get(0);
		private final Group cGroup_3_1_1 = (Group)cUnorderedGroup_3_1.eContents().get(1);
		private final Keyword cHintKeyword_3_1_1_0 = (Keyword)cGroup_3_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_1_1_1 = (Keyword)cGroup_3_1_1.eContents().get(1);
		private final Assignment cHintAssignment_3_1_1_2 = (Assignment)cGroup_3_1_1.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_3_1_1_2_0 = (RuleCall)cHintAssignment_3_1_1_2.eContents().get(0);
		private final Assignment cSubscribeAssignment_3_1_2 = (Assignment)cUnorderedGroup_3_1.eContents().get(2);
		private final RuleCall cSubscribeSubscribeParserRuleCall_3_1_2_0 = (RuleCall)cSubscribeAssignment_3_1_2.eContents().get(0);
		private final Assignment cDependenciesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDependenciesDependencyParserRuleCall_3_2_0 = (RuleCall)cDependenciesAssignment_3_2.eContents().get(0);
		private final Assignment cOperationsAssignment_3_3 = (Assignment)cGroup_3.eContents().get(3);
		private final RuleCall cOperationsRepositoryOperationParserRuleCall_3_3_0 = (RuleCall)cOperationsAssignment_3_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		
		//Repository:
		//	doc=STRING?
		//	"Repository" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
		//	subscribe=Subscribe?) dependencies+=Dependency*
		//	operations+=RepositoryOperation*
		//	"}")?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "Repository" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
		//subscribe=Subscribe?) dependencies+=Dependency* operations+=RepositoryOperation* "}")?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"Repository"
		public Keyword getRepositoryKeyword_1() { return cRepositoryKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & subscribe=Subscribe?)
		//dependencies+=Dependency* operations+=RepositoryOperation* "}")?
		public Group getGroup_3() { return cGroup_3; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
		
		//((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & subscribe=Subscribe?)
		public UnorderedGroup getUnorderedGroup_3_1() { return cUnorderedGroup_3_1; }
		
		//(gapClass?="gap" | noGapClass?="nogap")?
		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
		
		//gapClass?="gap"
		public Assignment getGapClassAssignment_3_1_0_0() { return cGapClassAssignment_3_1_0_0; }
		
		//"gap"
		public Keyword getGapClassGapKeyword_3_1_0_0_0() { return cGapClassGapKeyword_3_1_0_0_0; }
		
		//noGapClass?="nogap"
		public Assignment getNoGapClassAssignment_3_1_0_1() { return cNoGapClassAssignment_3_1_0_1; }
		
		//"nogap"
		public Keyword getNoGapClassNogapKeyword_3_1_0_1_0() { return cNoGapClassNogapKeyword_3_1_0_1_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_3_1_1() { return cGroup_3_1_1; }
		
		//"hint"
		public Keyword getHintKeyword_3_1_1_0() { return cHintKeyword_3_1_1_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_1_1_1() { return cEqualsSignKeyword_3_1_1_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_3_1_1_2() { return cHintAssignment_3_1_1_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_3_1_1_2_0() { return cHintSTRINGTerminalRuleCall_3_1_1_2_0; }
		
		//subscribe=Subscribe?
		public Assignment getSubscribeAssignment_3_1_2() { return cSubscribeAssignment_3_1_2; }
		
		//Subscribe
		public RuleCall getSubscribeSubscribeParserRuleCall_3_1_2_0() { return cSubscribeSubscribeParserRuleCall_3_1_2_0; }
		
		//dependencies+=Dependency*
		public Assignment getDependenciesAssignment_3_2() { return cDependenciesAssignment_3_2; }
		
		//Dependency
		public RuleCall getDependenciesDependencyParserRuleCall_3_2_0() { return cDependenciesDependencyParserRuleCall_3_2_0; }
		
		//operations+=RepositoryOperation*
		public Assignment getOperationsAssignment_3_3() { return cOperationsAssignment_3_3; }
		
		//RepositoryOperation
		public RuleCall getOperationsRepositoryOperationParserRuleCall_3_3_0() { return cOperationsRepositoryOperationParserRuleCall_3_3_0; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
	}
	public class ServiceDependencyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ServiceDependency");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cInjectKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cCommercialAtKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cDependencyAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final CrossReference cDependencyServiceCrossReference_1_1_0 = (CrossReference)cDependencyAssignment_1_1.eContents().get(0);
		private final RuleCall cDependencyServiceIDTerminalRuleCall_1_1_0_1 = (RuleCall)cDependencyServiceCrossReference_1_1_0.eContents().get(1);
		
		//ServiceDependency:
		//	('>' | 'inject') ("@" dependency=[Service]);
		@Override public ParserRule getRule() { return rule; }
		
		//('>' | 'inject') ("@" dependency=[Service])
		public Group getGroup() { return cGroup; }
		
		//('>' | 'inject')
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_0() { return cGreaterThanSignKeyword_0_0; }
		
		//'inject'
		public Keyword getInjectKeyword_0_1() { return cInjectKeyword_0_1; }
		
		//("@" dependency=[Service])
		public Group getGroup_1() { return cGroup_1; }
		
		//"@"
		public Keyword getCommercialAtKeyword_1_0() { return cCommercialAtKeyword_1_0; }
		
		//dependency=[Service]
		public Assignment getDependencyAssignment_1_1() { return cDependencyAssignment_1_1; }
		
		//[Service]
		public CrossReference getDependencyServiceCrossReference_1_1_0() { return cDependencyServiceCrossReference_1_1_0; }
		
		//ID
		public RuleCall getDependencyServiceIDTerminalRuleCall_1_1_0_1() { return cDependencyServiceIDTerminalRuleCall_1_1_0_1; }
	}
	public class DependencyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Dependency");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cInjectKeyword_0_1 = (Keyword)cAlternatives_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 cCommercialAtKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
		private final Assignment cDependencyAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final CrossReference cDependencyServiceRepositoryOptionCrossReference_1_0_1_0 = (CrossReference)cDependencyAssignment_1_0_1.eContents().get(0);
		private final RuleCall cDependencyServiceRepositoryOptionIDTerminalRuleCall_1_0_1_0_1 = (RuleCall)cDependencyServiceRepositoryOptionCrossReference_1_0_1_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);
		
		//Dependency:
		//	('>' | 'inject') ("@" dependency=[ServiceRepositoryOption] | name=ID);
		@Override public ParserRule getRule() { return rule; }
		
		//('>' | 'inject') ("@" dependency=[ServiceRepositoryOption] | name=ID)
		public Group getGroup() { return cGroup; }
		
		//('>' | 'inject')
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//'>'
		public Keyword getGreaterThanSignKeyword_0_0() { return cGreaterThanSignKeyword_0_0; }
		
		//'inject'
		public Keyword getInjectKeyword_0_1() { return cInjectKeyword_0_1; }
		
		//("@" dependency=[ServiceRepositoryOption] | name=ID)
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//"@" dependency=[ServiceRepositoryOption]
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//"@"
		public Keyword getCommercialAtKeyword_1_0_0() { return cCommercialAtKeyword_1_0_0; }
		
		//dependency=[ServiceRepositoryOption]
		public Assignment getDependencyAssignment_1_0_1() { return cDependencyAssignment_1_0_1; }
		
		//[ServiceRepositoryOption]
		public CrossReference getDependencyServiceRepositoryOptionCrossReference_1_0_1_0() { return cDependencyServiceRepositoryOptionCrossReference_1_0_1_0; }
		
		//ID
		public RuleCall getDependencyServiceRepositoryOptionIDTerminalRuleCall_1_0_1_0_1() { return cDependencyServiceRepositoryOptionIDTerminalRuleCall_1_0_1_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 EnumElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Enum");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Keyword cEnumKeyword_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 cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cPackageKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cPackageAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cPackageJavaIdentifierParserRuleCall_4_2_0 = (RuleCall)cPackageAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cHintKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cHintAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_5_2_0 = (RuleCall)cHintAssignment_5_2.eContents().get(0);
		private final Assignment cOrdinalAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cOrdinalOrdinalKeyword_6_0 = (Keyword)cOrdinalAssignment_6.eContents().get(0);
		private final Assignment cAttributesAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cAttributesEnumAttributeParserRuleCall_7_0 = (RuleCall)cAttributesAssignment_7.eContents().get(0);
		private final Assignment cValuesAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cValuesEnumValueParserRuleCall_8_0 = (RuleCall)cValuesAssignment_8.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cCommaKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cValuesAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cValuesEnumValueParserRuleCall_9_1_0 = (RuleCall)cValuesAssignment_9_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cRightCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//Enum:
		//	doc=STRING?
		//	"enum" name=ID "{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)?
		//	ordinal?="ordinal"?
		//	attributes+=EnumAttribute*
		//	values+=EnumValue ("," values+=EnumValue)* ";"?
		//	"}";
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "enum" name=ID "{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)? ordinal?="ordinal"?
		//attributes+=EnumAttribute* values+=EnumValue ("," values+=EnumValue)* ";"? "}"
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"enum"
		public Keyword getEnumKeyword_1() { return cEnumKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
		
		//("package" "=" package=JavaIdentifier)?
		public Group getGroup_4() { return cGroup_4; }
		
		//"package"
		public Keyword getPackageKeyword_4_0() { return cPackageKeyword_4_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_4_1() { return cEqualsSignKeyword_4_1; }
		
		//package=JavaIdentifier
		public Assignment getPackageAssignment_4_2() { return cPackageAssignment_4_2; }
		
		//JavaIdentifier
		public RuleCall getPackageJavaIdentifierParserRuleCall_4_2_0() { return cPackageJavaIdentifierParserRuleCall_4_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_5() { return cGroup_5; }
		
		//"hint"
		public Keyword getHintKeyword_5_0() { return cHintKeyword_5_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_5_1() { return cEqualsSignKeyword_5_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_5_2() { return cHintAssignment_5_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_5_2_0() { return cHintSTRINGTerminalRuleCall_5_2_0; }
		
		//ordinal?="ordinal"?
		public Assignment getOrdinalAssignment_6() { return cOrdinalAssignment_6; }
		
		//"ordinal"
		public Keyword getOrdinalOrdinalKeyword_6_0() { return cOrdinalOrdinalKeyword_6_0; }
		
		//attributes+=EnumAttribute*
		public Assignment getAttributesAssignment_7() { return cAttributesAssignment_7; }
		
		//EnumAttribute
		public RuleCall getAttributesEnumAttributeParserRuleCall_7_0() { return cAttributesEnumAttributeParserRuleCall_7_0; }
		
		//values+=EnumValue
		public Assignment getValuesAssignment_8() { return cValuesAssignment_8; }
		
		//EnumValue
		public RuleCall getValuesEnumValueParserRuleCall_8_0() { return cValuesEnumValueParserRuleCall_8_0; }
		
		//("," values+=EnumValue)*
		public Group getGroup_9() { return cGroup_9; }
		
		//","
		public Keyword getCommaKeyword_9_0() { return cCommaKeyword_9_0; }
		
		//values+=EnumValue
		public Assignment getValuesAssignment_9_1() { return cValuesAssignment_9_1; }
		
		//EnumValue
		public RuleCall getValuesEnumValueParserRuleCall_9_1_0() { return cValuesEnumValueParserRuleCall_9_1_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
		
		//"}"
		public Keyword getRightCurlyBracketKeyword_11() { return cRightCurlyBracketKeyword_11; }
	}
	public class EnumAttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.EnumAttribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_0.eContents().get(0);
		private final Assignment cTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cTypeTypeParserRuleCall_1_0 = (RuleCall)cTypeAssignment_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 Assignment cKeyAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cKeyKeyKeyword_3_0 = (Keyword)cKeyAssignment_3.eContents().get(0);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//EnumAttribute:
		//	doc=STRING?
		//	type=Type name=ID key?="key"? ";"?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? type=Type name=ID key?="key"? ";"?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//type=Type
		public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }
		
		//Type
		public RuleCall getTypeTypeParserRuleCall_1_0() { return cTypeTypeParserRuleCall_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//key?="key"?
		public Assignment getKeyAssignment_3() { return cKeyAssignment_3; }
		
		//"key"
		public Keyword getKeyKeyKeyword_3_0() { return cKeyKeyKeyword_3_0; }
		
		//";"?
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class EnumValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.EnumValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDocAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDocSTRINGTerminalRuleCall_0_0 = (RuleCall)cDocAssignment_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 Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cParametersAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cParametersEnumParameterParserRuleCall_2_1_0 = (RuleCall)cParametersAssignment_2_1.eContents().get(0);
		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 cParametersAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cParametersEnumParameterParserRuleCall_2_2_1_0 = (RuleCall)cParametersAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//EnumValue:
		//	doc=STRING?
		//	name=ID ("(" parameters+=EnumParameter ("," parameters+=EnumParameter)* ")")?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? name=ID ("(" parameters+=EnumParameter ("," parameters+=EnumParameter)* ")")?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//("(" parameters+=EnumParameter ("," parameters+=EnumParameter)* ")")?
		public Group getGroup_2() { return cGroup_2; }
		
		//"("
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
		
		//parameters+=EnumParameter
		public Assignment getParametersAssignment_2_1() { return cParametersAssignment_2_1; }
		
		//EnumParameter
		public RuleCall getParametersEnumParameterParserRuleCall_2_1_0() { return cParametersEnumParameterParserRuleCall_2_1_0; }
		
		//("," parameters+=EnumParameter)*
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//","
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
		
		//parameters+=EnumParameter
		public Assignment getParametersAssignment_2_2_1() { return cParametersAssignment_2_2_1; }
		
		//EnumParameter
		public RuleCall getParametersEnumParameterParserRuleCall_2_2_1_0() { return cParametersEnumParameterParserRuleCall_2_2_1_0; }
		
		//")"
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}
	public class EnumParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.EnumParameter");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Assignment cValueAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
		private final RuleCall cValueSTRINGTerminalRuleCall_0_0 = (RuleCall)cValueAssignment_0.eContents().get(0);
		private final Assignment cIntegerValueAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final RuleCall cIntegerValueINTTerminalRuleCall_1_0 = (RuleCall)cIntegerValueAssignment_1.eContents().get(0);
		
		//EnumParameter:
		//	value=STRING | integerValue=INT;
		@Override public ParserRule getRule() { return rule; }
		
		//value=STRING | integerValue=INT
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//value=STRING
		public Assignment getValueAssignment_0() { return cValueAssignment_0; }
		
		//STRING
		public RuleCall getValueSTRINGTerminalRuleCall_0_0() { return cValueSTRINGTerminalRuleCall_0_0; }
		
		//integerValue=INT
		public Assignment getIntegerValueAssignment_1() { return cIntegerValueAssignment_1; }
		
		//INT
		public RuleCall getIntegerValueINTTerminalRuleCall_1_0() { return cIntegerValueINTTerminalRuleCall_1_0; }
	}
	public class AnyPropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.AnyProperty");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPropertyParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDtoPropertyParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//AnyProperty:
		//	Property | DtoProperty;
		@Override public ParserRule getRule() { return rule; }
		
		//Property | DtoProperty
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Property
		public RuleCall getPropertyParserRuleCall_0() { return cPropertyParserRuleCall_0; }
		
		//DtoProperty
		public RuleCall getDtoPropertyParserRuleCall_1() { return cDtoPropertyParserRuleCall_1; }
	}
	public class PropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Property");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAttributeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cReferenceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//Property:
		//	Attribute | Reference;
		@Override public ParserRule getRule() { return rule; }
		
		//Attribute | Reference
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Attribute
		public RuleCall getAttributeParserRuleCall_0() { return cAttributeParserRuleCall_0; }
		
		//Reference
		public RuleCall getReferenceParserRuleCall_1() { return cReferenceParserRuleCall_1; }
	}
	public class DtoPropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DtoProperty");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cDtoAttributeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDtoReferenceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//DtoProperty:
		//	DtoAttribute | DtoReference;
		@Override public ParserRule getRule() { return rule; }
		
		//DtoAttribute | DtoReference
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//DtoAttribute
		public RuleCall getDtoAttributeParserRuleCall_0() { return cDtoAttributeParserRuleCall_0; }
		
		//DtoReference
		public RuleCall getDtoReferenceParserRuleCall_1() { return cDtoReferenceParserRuleCall_1; }
	}
	public class TypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Type");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cStringKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cIntKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cIntegerKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cLongKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final Keyword cLongKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
		private final Keyword cBooleanKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
		private final Keyword cBooleanKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
		private final Keyword cDateKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
		private final Keyword cDateTimeKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
		private final Keyword cTimestampKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
		private final Keyword cBigDecimalKeyword_10 = (Keyword)cAlternatives.eContents().get(10);
		private final Keyword cBigIntegerKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
		private final Keyword cDoubleKeyword_12 = (Keyword)cAlternatives.eContents().get(12);
		private final Keyword cDoubleKeyword_13 = (Keyword)cAlternatives.eContents().get(13);
		private final Keyword cFloatKeyword_14 = (Keyword)cAlternatives.eContents().get(14);
		private final Keyword cFloatKeyword_15 = (Keyword)cAlternatives.eContents().get(15);
		private final Keyword cKeyKeyword_16 = (Keyword)cAlternatives.eContents().get(16);
		private final Keyword cPagingParameterKeyword_17 = (Keyword)cAlternatives.eContents().get(17);
		private final Keyword cPagedResultKeyword_18 = (Keyword)cAlternatives.eContents().get(18);
		private final Keyword cBlobKeyword_19 = (Keyword)cAlternatives.eContents().get(19);
		private final Keyword cClobKeyword_20 = (Keyword)cAlternatives.eContents().get(20);
		private final Keyword cObjectKeyword_21 = (Keyword)cAlternatives.eContents().get(21);
		private final RuleCall cJavaIdentifierParserRuleCall_22 = (RuleCall)cAlternatives.eContents().get(22);
		
		//Type:
		//	"String" | "int" | "Integer" | "long" | "Long" | "boolean" | "Boolean" | "Date" | "DateTime" | "Timestamp" |
		//	"BigDecimal" | "BigInteger" |
		//	"double" | "Double" | "float" | "Float" | "Key" | "PagingParameter" | "PagedResult" | "Blob" | "Clob" | "Object[]" |
		//	JavaIdentifier;
		@Override public ParserRule getRule() { return rule; }
		
		//"String" | "int" | "Integer" | "long" | "Long" | "boolean" | "Boolean" | "Date" | "DateTime" | "Timestamp" |
		//"BigDecimal" | "BigInteger" | "double" | "Double" | "float" | "Float" | "Key" | "PagingParameter" | "PagedResult" |
		//"Blob" | "Clob" | "Object[]" | JavaIdentifier
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//"String"
		public Keyword getStringKeyword_0() { return cStringKeyword_0; }
		
		//"int"
		public Keyword getIntKeyword_1() { return cIntKeyword_1; }
		
		//"Integer"
		public Keyword getIntegerKeyword_2() { return cIntegerKeyword_2; }
		
		//"long"
		public Keyword getLongKeyword_3() { return cLongKeyword_3; }
		
		//"Long"
		public Keyword getLongKeyword_4() { return cLongKeyword_4; }
		
		//"boolean"
		public Keyword getBooleanKeyword_5() { return cBooleanKeyword_5; }
		
		//"Boolean"
		public Keyword getBooleanKeyword_6() { return cBooleanKeyword_6; }
		
		//"Date"
		public Keyword getDateKeyword_7() { return cDateKeyword_7; }
		
		//"DateTime"
		public Keyword getDateTimeKeyword_8() { return cDateTimeKeyword_8; }
		
		//"Timestamp"
		public Keyword getTimestampKeyword_9() { return cTimestampKeyword_9; }
		
		//"BigDecimal"
		public Keyword getBigDecimalKeyword_10() { return cBigDecimalKeyword_10; }
		
		//"BigInteger"
		public Keyword getBigIntegerKeyword_11() { return cBigIntegerKeyword_11; }
		
		//"double"
		public Keyword getDoubleKeyword_12() { return cDoubleKeyword_12; }
		
		//"Double"
		public Keyword getDoubleKeyword_13() { return cDoubleKeyword_13; }
		
		//"float"
		public Keyword getFloatKeyword_14() { return cFloatKeyword_14; }
		
		//"Float"
		public Keyword getFloatKeyword_15() { return cFloatKeyword_15; }
		
		//"Key"
		public Keyword getKeyKeyword_16() { return cKeyKeyword_16; }
		
		//"PagingParameter"
		public Keyword getPagingParameterKeyword_17() { return cPagingParameterKeyword_17; }
		
		//"PagedResult"
		public Keyword getPagedResultKeyword_18() { return cPagedResultKeyword_18; }
		
		//"Blob"
		public Keyword getBlobKeyword_19() { return cBlobKeyword_19; }
		
		//"Clob"
		public Keyword getClobKeyword_20() { return cClobKeyword_20; }
		
		//"Object[]"
		public Keyword getObjectKeyword_21() { return cObjectKeyword_21; }
		
		//JavaIdentifier
		public RuleCall getJavaIdentifierParserRuleCall_22() { return cJavaIdentifierParserRuleCall_22; }
	}
	public class JavaIdentifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.JavaIdentifier");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.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 RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//JavaIdentifier:
		//	ID ("." ID)*;
		@Override public ParserRule getRule() { return rule; }
		
		//ID ("." ID)*
		public Group getGroup() { return cGroup; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
		
		//("." ID)*
		public Group getGroup_1() { return cGroup_1; }
		
		//"."
		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
	}
	public class ChannelIdentifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ChannelIdentifier");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_0_0 = (Keyword)cAlternatives_1_0.eContents().get(0);
		private final Keyword cSolidusKeyword_1_0_1 = (Keyword)cAlternatives_1_0.eContents().get(1);
		private final Keyword cColonKeyword_1_0_2 = (Keyword)cAlternatives_1_0.eContents().get(2);
		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//ChannelIdentifier:
		//	ID (("." | "/" | ":") ID)*;
		@Override public ParserRule getRule() { return rule; }
		
		//ID (("." | "/" | ":") ID)*
		public Group getGroup() { return cGroup; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
		
		//(("." | "/" | ":") ID)*
		public Group getGroup_1() { return cGroup_1; }
		
		//("." | "/" | ":")
		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
		
		//"."
		public Keyword getFullStopKeyword_1_0_0() { return cFullStopKeyword_1_0_0; }
		
		//"/"
		public Keyword getSolidusKeyword_1_0_1() { return cSolidusKeyword_1_0_1; }
		
		//":"
		public Keyword getColonKeyword_1_0_2() { return cColonKeyword_1_0_2; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
	}
	public class ThrowsIdentifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.ThrowsIdentifier");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cJavaIdentifierParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cCommaKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final RuleCall cJavaIdentifierParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//ThrowsIdentifier:
		//	JavaIdentifier ("," JavaIdentifier)*;
		@Override public ParserRule getRule() { return rule; }
		
		//JavaIdentifier ("," JavaIdentifier)*
		public Group getGroup() { return cGroup; }
		
		//JavaIdentifier
		public RuleCall getJavaIdentifierParserRuleCall_0() { return cJavaIdentifierParserRuleCall_0; }
		
		//("," JavaIdentifier)*
		public Group getGroup_1() { return cGroup_1; }
		
		//","
		public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; }
		
		//JavaIdentifier
		public RuleCall getJavaIdentifierParserRuleCall_1_1() { return cJavaIdentifierParserRuleCall_1_1; }
	}
	
	public class HttpMethodElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.HttpMethod");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cNoneEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cNoneNoneKeyword_0_0 = (Keyword)cNoneEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cGETEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cGETGETKeyword_1_0 = (Keyword)cGETEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cPOSTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cPOSTPOSTKeyword_2_0 = (Keyword)cPOSTEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cPUTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cPUTPUTKeyword_3_0 = (Keyword)cPUTEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cDELETEEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cDELETEDELETEKeyword_4_0 = (Keyword)cDELETEEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum HttpMethod:
		//	None | GET | POST | PUT | DELETE;
		public EnumRule getRule() { return rule; }
		
		//None | GET | POST | PUT | DELETE
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//None
		public EnumLiteralDeclaration getNoneEnumLiteralDeclaration_0() { return cNoneEnumLiteralDeclaration_0; }
		
		//"None"
		public Keyword getNoneNoneKeyword_0_0() { return cNoneNoneKeyword_0_0; }
		
		//GET
		public EnumLiteralDeclaration getGETEnumLiteralDeclaration_1() { return cGETEnumLiteralDeclaration_1; }
		
		//"GET"
		public Keyword getGETGETKeyword_1_0() { return cGETGETKeyword_1_0; }
		
		//POST
		public EnumLiteralDeclaration getPOSTEnumLiteralDeclaration_2() { return cPOSTEnumLiteralDeclaration_2; }
		
		//"POST"
		public Keyword getPOSTPOSTKeyword_2_0() { return cPOSTPOSTKeyword_2_0; }
		
		//PUT
		public EnumLiteralDeclaration getPUTEnumLiteralDeclaration_3() { return cPUTEnumLiteralDeclaration_3; }
		
		//"PUT"
		public Keyword getPUTPUTKeyword_3_0() { return cPUTPUTKeyword_3_0; }
		
		//DELETE
		public EnumLiteralDeclaration getDELETEEnumLiteralDeclaration_4() { return cDELETEEnumLiteralDeclaration_4; }
		
		//"DELETE"
		public Keyword getDELETEDELETEKeyword_4_0() { return cDELETEDELETEKeyword_4_0; }
	}
	public class InheritanceTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.InheritanceType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cJOINEDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cJOINEDJOINEDKeyword_0_0 = (Keyword)cJOINEDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSINGLE_TABLEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSINGLE_TABLESINGLE_TABLEKeyword_1_0 = (Keyword)cSINGLE_TABLEEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum InheritanceType:
		//	JOINED | SINGLE_TABLE;
		public EnumRule getRule() { return rule; }
		
		//JOINED | SINGLE_TABLE
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//JOINED
		public EnumLiteralDeclaration getJOINEDEnumLiteralDeclaration_0() { return cJOINEDEnumLiteralDeclaration_0; }
		
		//"JOINED"
		public Keyword getJOINEDJOINEDKeyword_0_0() { return cJOINEDJOINEDKeyword_0_0; }
		
		//SINGLE_TABLE
		public EnumLiteralDeclaration getSINGLE_TABLEEnumLiteralDeclaration_1() { return cSINGLE_TABLEEnumLiteralDeclaration_1; }
		
		//"SINGLE_TABLE"
		public Keyword getSINGLE_TABLESINGLE_TABLEKeyword_1_0() { return cSINGLE_TABLESINGLE_TABLEKeyword_1_0; }
	}
	public class DiscriminatorTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DiscriminatorType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cSTRINGSTRINGKeyword_0_0 = (Keyword)cSTRINGEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cCHAREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cCHARCHARKeyword_1_0 = (Keyword)cCHAREnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cINTEGEREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cINTEGERINTEGERKeyword_2_0 = (Keyword)cINTEGEREnumLiteralDeclaration_2.eContents().get(0);
		
		//enum DiscriminatorType:
		//	STRING | CHAR | INTEGER;
		public EnumRule getRule() { return rule; }
		
		//STRING | CHAR | INTEGER
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//STRING
		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_0() { return cSTRINGEnumLiteralDeclaration_0; }
		
		//"STRING"
		public Keyword getSTRINGSTRINGKeyword_0_0() { return cSTRINGSTRINGKeyword_0_0; }
		
		//CHAR
		public EnumLiteralDeclaration getCHAREnumLiteralDeclaration_1() { return cCHAREnumLiteralDeclaration_1; }
		
		//"CHAR"
		public Keyword getCHARCHARKeyword_1_0() { return cCHARCHARKeyword_1_0; }
		
		//INTEGER
		public EnumLiteralDeclaration getINTEGEREnumLiteralDeclaration_2() { return cINTEGEREnumLiteralDeclaration_2; }
		
		//"INTEGER"
		public Keyword getINTEGERINTEGERKeyword_2_0() { return cINTEGERINTEGERKeyword_2_0; }
	}
	public class CollectionTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.CollectionType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cNoneEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cNoneNoneKeyword_0_0 = (Keyword)cNoneEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSetEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSetSetKeyword_1_0 = (Keyword)cSetEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cListEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cListListKeyword_2_0 = (Keyword)cListEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cBagEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cBagBagKeyword_3_0 = (Keyword)cBagEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cCollectionEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cCollectionCollectionKeyword_4_0 = (Keyword)cCollectionEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum CollectionType:
		//	None | Set | List | Bag | Collection;
		public EnumRule getRule() { return rule; }
		
		//None | Set | List | Bag | Collection
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//None
		public EnumLiteralDeclaration getNoneEnumLiteralDeclaration_0() { return cNoneEnumLiteralDeclaration_0; }
		
		//"None"
		public Keyword getNoneNoneKeyword_0_0() { return cNoneNoneKeyword_0_0; }
		
		//Set
		public EnumLiteralDeclaration getSetEnumLiteralDeclaration_1() { return cSetEnumLiteralDeclaration_1; }
		
		//"Set"
		public Keyword getSetSetKeyword_1_0() { return cSetSetKeyword_1_0; }
		
		//List
		public EnumLiteralDeclaration getListEnumLiteralDeclaration_2() { return cListEnumLiteralDeclaration_2; }
		
		//"List"
		public Keyword getListListKeyword_2_0() { return cListListKeyword_2_0; }
		
		//Bag
		public EnumLiteralDeclaration getBagEnumLiteralDeclaration_3() { return cBagEnumLiteralDeclaration_3; }
		
		//"Bag"
		public Keyword getBagBagKeyword_3_0() { return cBagBagKeyword_3_0; }
		
		//Collection
		public EnumLiteralDeclaration getCollectionEnumLiteralDeclaration_4() { return cCollectionEnumLiteralDeclaration_4; }
		
		//"Collection"
		public Keyword getCollectionCollectionKeyword_4_0() { return cCollectionCollectionKeyword_4_0; }
	}
	public class VisibilityElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.Visibility");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cPublicEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cPublicPublicKeyword_0_0 = (Keyword)cPublicEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cProtectedEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cProtectedProtectedKeyword_1_0 = (Keyword)cProtectedEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cPrivateEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cPrivatePrivateKeyword_2_0 = (Keyword)cPrivateEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cPackageEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cPackagePackageKeyword_3_0 = (Keyword)cPackageEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum Visibility:
		//	public | protected | private | package;
		public EnumRule getRule() { return rule; }
		
		//public | protected | private | package
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//public
		public EnumLiteralDeclaration getPublicEnumLiteralDeclaration_0() { return cPublicEnumLiteralDeclaration_0; }
		
		//"public"
		public Keyword getPublicPublicKeyword_0_0() { return cPublicPublicKeyword_0_0; }
		
		//protected
		public EnumLiteralDeclaration getProtectedEnumLiteralDeclaration_1() { return cProtectedEnumLiteralDeclaration_1; }
		
		//"protected"
		public Keyword getProtectedProtectedKeyword_1_0() { return cProtectedProtectedKeyword_1_0; }
		
		//private
		public EnumLiteralDeclaration getPrivateEnumLiteralDeclaration_2() { return cPrivateEnumLiteralDeclaration_2; }
		
		//"private"
		public Keyword getPrivatePrivateKeyword_2_0() { return cPrivatePrivateKeyword_2_0; }
		
		//package
		public EnumLiteralDeclaration getPackageEnumLiteralDeclaration_3() { return cPackageEnumLiteralDeclaration_3; }
		
		//"package"
		public Keyword getPackagePackageKeyword_3_0() { return cPackagePackageKeyword_3_0; }
	}
	
	private final TacticDDDModelElements pTacticDDDModel;
	private final ApplicationElements pApplication;
	private final ServiceElements pService;
	private final ResourceElements pResource;
	private final ConsumerElements pConsumer;
	private final SubscribeElements pSubscribe;
	private final PublishElements pPublish;
	private final EventElements pEvent;
	private final DomainObjectTypedElementElements pDomainObjectTypedElement;
	private final ServiceOperationElements pServiceOperation;
	private final ServiceOperationDelegateElements pServiceOperationDelegate;
	private final ServiceRepositoryOptionElements pServiceRepositoryOption;
	private final ServiceRepositoryOperationOptionElements pServiceRepositoryOperationOption;
	private final ResourceOperationElements pResourceOperation;
	private final ResourceOperationDelegateElements pResourceOperationDelegate;
	private final HttpMethodElements eHttpMethod;
	private final RepositoryOperationElements pRepositoryOperation;
	private final ParameterElements pParameter;
	private final ComplexTypeElements pComplexType;
	private final SimpleDomainObjectElements pSimpleDomainObject;
	private final DomainObjectElements pDomainObject;
	private final EntityElements pEntity;
	private final ValueObjectElements pValueObject;
	private final DomainEventElements pDomainEvent;
	private final CommandEventElements pCommandEvent;
	private final TraitElements pTrait;
	private final DomainObjectOperationElements pDomainObjectOperation;
	private final DataTransferObjectElements pDataTransferObject;
	private final BasicTypeElements pBasicType;
	private final AttributeElements pAttribute;
	private final ReferenceElements pReference;
	private final DtoAttributeElements pDtoAttribute;
	private final DtoReferenceElements pDtoReference;
	private final OppositeHolderElements pOppositeHolder;
	private final RepositoryElements pRepository;
	private final ServiceDependencyElements pServiceDependency;
	private final DependencyElements pDependency;
	private final EnumElements pEnum;
	private final EnumAttributeElements pEnumAttribute;
	private final EnumValueElements pEnumValue;
	private final EnumParameterElements pEnumParameter;
	private final AnyPropertyElements pAnyProperty;
	private final PropertyElements pProperty;
	private final DtoPropertyElements pDtoProperty;
	private final InheritanceTypeElements eInheritanceType;
	private final DiscriminatorTypeElements eDiscriminatorType;
	private final TypeElements pType;
	private final CollectionTypeElements eCollectionType;
	private final TerminalRule tMAP_COLLECTION_TYPE;
	private final VisibilityElements eVisibility;
	private final JavaIdentifierElements pJavaIdentifier;
	private final ChannelIdentifierElements pChannelIdentifier;
	private final ThrowsIdentifierElements pThrowsIdentifier;
	private final TerminalRule tNOT;
	private final TerminalRule tDELEGATE;
	private final TerminalRule tOPPOSITE;
	private final TerminalRule tREF;
	
	private final Grammar grammar;
	
	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public TacticDDDLanguageGrammarAccess(GrammarProvider grammarProvider,
			TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
		this.pTacticDDDModel = new TacticDDDModelElements();
		this.pApplication = new ApplicationElements();
		this.pService = new ServiceElements();
		this.pResource = new ResourceElements();
		this.pConsumer = new ConsumerElements();
		this.pSubscribe = new SubscribeElements();
		this.pPublish = new PublishElements();
		this.pEvent = new EventElements();
		this.pDomainObjectTypedElement = new DomainObjectTypedElementElements();
		this.pServiceOperation = new ServiceOperationElements();
		this.pServiceOperationDelegate = new ServiceOperationDelegateElements();
		this.pServiceRepositoryOption = new ServiceRepositoryOptionElements();
		this.pServiceRepositoryOperationOption = new ServiceRepositoryOperationOptionElements();
		this.pResourceOperation = new ResourceOperationElements();
		this.pResourceOperationDelegate = new ResourceOperationDelegateElements();
		this.eHttpMethod = new HttpMethodElements();
		this.pRepositoryOperation = new RepositoryOperationElements();
		this.pParameter = new ParameterElements();
		this.pComplexType = new ComplexTypeElements();
		this.pSimpleDomainObject = new SimpleDomainObjectElements();
		this.pDomainObject = new DomainObjectElements();
		this.pEntity = new EntityElements();
		this.pValueObject = new ValueObjectElements();
		this.pDomainEvent = new DomainEventElements();
		this.pCommandEvent = new CommandEventElements();
		this.pTrait = new TraitElements();
		this.pDomainObjectOperation = new DomainObjectOperationElements();
		this.pDataTransferObject = new DataTransferObjectElements();
		this.pBasicType = new BasicTypeElements();
		this.pAttribute = new AttributeElements();
		this.pReference = new ReferenceElements();
		this.pDtoAttribute = new DtoAttributeElements();
		this.pDtoReference = new DtoReferenceElements();
		this.pOppositeHolder = new OppositeHolderElements();
		this.pRepository = new RepositoryElements();
		this.pServiceDependency = new ServiceDependencyElements();
		this.pDependency = new DependencyElements();
		this.pEnum = new EnumElements();
		this.pEnumAttribute = new EnumAttributeElements();
		this.pEnumValue = new EnumValueElements();
		this.pEnumParameter = new EnumParameterElements();
		this.pAnyProperty = new AnyPropertyElements();
		this.pProperty = new PropertyElements();
		this.pDtoProperty = new DtoPropertyElements();
		this.eInheritanceType = new InheritanceTypeElements();
		this.eDiscriminatorType = new DiscriminatorTypeElements();
		this.pType = new TypeElements();
		this.eCollectionType = new CollectionTypeElements();
		this.tMAP_COLLECTION_TYPE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.MAP_COLLECTION_TYPE");
		this.eVisibility = new VisibilityElements();
		this.pJavaIdentifier = new JavaIdentifierElements();
		this.pChannelIdentifier = new ChannelIdentifierElements();
		this.pThrowsIdentifier = new ThrowsIdentifierElements();
		this.tNOT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.NOT");
		this.tDELEGATE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.DELEGATE");
		this.tOPPOSITE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.OPPOSITE");
		this.tREF = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.tactic.dsl.TacticDDDLanguage.REF");
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.contextmapper.tactic.dsl.TacticDDDLanguage".equals(grammar.getName())) {
				return grammar;
			}
			List grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	
	
	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//TacticDDDModel:
	//	app=Application;
	public TacticDDDModelElements getTacticDDDModelAccess() {
		return pTacticDDDModel;
	}
	
	public ParserRule getTacticDDDModelRule() {
		return getTacticDDDModelAccess().getRule();
	}
	
	//Application:
	//	doc=STRING? ("Application" name=ID "{"
	//	"basePackage" "=" basePackage=JavaIdentifier | "ApplicationPart" name=ID "{") (services+=Service | resources+=Resource
	//	| consumers+=Consumer | domainObjects+=SimpleDomainObject)*
	//	"}";
	public ApplicationElements getApplicationAccess() {
		return pApplication;
	}
	
	public ParserRule getApplicationRule() {
		return getApplicationAccess().getRule();
	}
	
	//Service:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	"Service" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
	//	webService?="webservice"? & subscribe=Subscribe?) dependencies+=Dependency*
	//	operations+=ServiceOperation*
	//	"}")?;
	public ServiceElements getServiceAccess() {
		return pService;
	}
	
	public ParserRule getServiceRule() {
		return getServiceAccess().getRule();
	}
	
	//Resource:
	//	doc=STRING?
	//	"Resource" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? & scaffold?="scaffold"?
	//	& ("path" "=" path=STRING)?) dependencies+=ServiceDependency*
	//	operations+=ResourceOperation*
	//	"}")?;
	public ResourceElements getResourceAccess() {
		return pResource;
	}
	
	public ParserRule getResourceRule() {
		return getResourceAccess().getRule();
	}
	
	//Consumer:
	//	doc=STRING?
	//	"Consumer" name=ID "{" ("hint" "=" hint=STRING)?
	//	dependencies+=Dependency* ("unmarshall to" "@"? messageRoot=[DomainObject])? ((("queueName" | "topicName") "="
	//	channel=ChannelIdentifier)? & subscribe=Subscribe?)
	//	"}";
	public ConsumerElements getConsumerAccess() {
		return pConsumer;
	}
	
	public ParserRule getConsumerRule() {
		return getConsumerAccess().getRule();
	}
	
	//Subscribe:
	//	"subscribe" "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
	public SubscribeElements getSubscribeAccess() {
		return pSubscribe;
	}
	
	public ParserRule getSubscribeRule() {
		return getSubscribeAccess().getRule();
	}
	
	//Publish:
	//	"publish" ("@"? eventType=[Event])? "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
	public PublishElements getPublishAccess() {
		return pPublish;
	}
	
	public ParserRule getPublishRule() {
		return getPublishAccess().getRule();
	}
	
	//Event:
	//	DomainEvent | CommandEvent;
	public EventElements getEventAccess() {
		return pEvent;
	}
	
	public ParserRule getEventRule() {
		return getEventAccess().getRule();
	}
	
	//DomainObjectTypedElement:
	//	ServiceOperation | RepositoryOperation | DomainObjectOperation | Parameter;
	public DomainObjectTypedElementElements getDomainObjectTypedElementAccess() {
		return pDomainObjectTypedElement;
	}
	
	public ParserRule getDomainObjectTypedElementRule() {
		return getDomainObjectTypedElementAccess().getRule();
	}
	
	//ServiceOperation:
	//	doc=STRING?
	//	visibility=Visibility? (returnType=ComplexType | "void")?
	//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
	//	"=" hint=STRING)? & publish=Publish?) delegateHolder=ServiceOperationDelegate? ";";
	public ServiceOperationElements getServiceOperationAccess() {
		return pServiceOperation;
	}
	
	public ParserRule getServiceOperationRule() {
		return getServiceOperationAccess().getRule();
	}
	
	//ServiceOperationDelegate:
	//	DELEGATE "@"? delegate=[ServiceRepositoryOption] "." delegateOperation=[ServiceRepositoryOperationOption];
	public ServiceOperationDelegateElements getServiceOperationDelegateAccess() {
		return pServiceOperationDelegate;
	}
	
	public ParserRule getServiceOperationDelegateRule() {
		return getServiceOperationDelegateAccess().getRule();
	}
	
	//ServiceRepositoryOption:
	//	Repository | Service;
	public ServiceRepositoryOptionElements getServiceRepositoryOptionAccess() {
		return pServiceRepositoryOption;
	}
	
	public ParserRule getServiceRepositoryOptionRule() {
		return getServiceRepositoryOptionAccess().getRule();
	}
	
	//ServiceRepositoryOperationOption:
	//	RepositoryOperation | ServiceOperation;
	public ServiceRepositoryOperationOptionElements getServiceRepositoryOperationOptionAccess() {
		return pServiceRepositoryOperationOption;
	}
	
	public ParserRule getServiceRepositoryOperationOptionRule() {
		return getServiceRepositoryOperationOptionAccess().getRule();
	}
	
	//ResourceOperation:
	//	doc=STRING?
	//	visibility=Visibility?
	//	returnType=ComplexType?
	//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
	//	"=" hint=STRING)? & httpMethod=HttpMethod? & ("path" "=" path=STRING)? & ("return" "=" returnString=STRING)?)
	//	delegateHolder=ResourceOperationDelegate? ";";
	public ResourceOperationElements getResourceOperationAccess() {
		return pResourceOperation;
	}
	
	public ParserRule getResourceOperationRule() {
		return getResourceOperationAccess().getRule();
	}
	
	//ResourceOperationDelegate:
	//	DELEGATE "@"? delegate=[Service] "." delegateOperation=[ServiceOperation];
	public ResourceOperationDelegateElements getResourceOperationDelegateAccess() {
		return pResourceOperationDelegate;
	}
	
	public ParserRule getResourceOperationDelegateRule() {
		return getResourceOperationDelegateAccess().getRule();
	}
	
	//enum HttpMethod:
	//	None | GET | POST | PUT | DELETE;
	public HttpMethodElements getHttpMethodAccess() {
		return eHttpMethod;
	}
	
	public EnumRule getHttpMethodRule() {
		return getHttpMethodAccess().getRule();
	}
	
	//RepositoryOperation:
	//	doc=STRING?
	//	visibility=Visibility? (returnType=ComplexType | "void")?
	//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
	//	"=" hint=STRING)? & cache?="cache"? & (gapOperation?="gap" | noGapOperation?="nogap")? & ("query" "=" query=STRING)? &
	//	("condition" "=" condition=STRING)? & ("select" "=" select=STRING)? & ("groupBy" "=" groupBy=STRING)? & ("orderBy" "="
	//	orderBy=STRING)? & construct?="construct"? & build?="build"? & map?="map"? & publish=Publish?)
	//	(delegateToAccessObject?=DELEGATE ("AccessObject" | accessObjectName=ID))? ";";
	public RepositoryOperationElements getRepositoryOperationAccess() {
		return pRepositoryOperation;
	}
	
	public ParserRule getRepositoryOperationRule() {
		return getRepositoryOperationAccess().getRule();
	}
	
	//Parameter:
	//	doc=STRING?
	//	parameterType=ComplexType name=ID;
	public ParameterElements getParameterAccess() {
		return pParameter;
	}
	
	public ParserRule getParameterRule() {
		return getParameterAccess().getRule();
	}
	
	//ComplexType:
	//	type=Type | type=Type "<" "@" domainObjectType=[SimpleDomainObject] ">" | "@" domainObjectType=[SimpleDomainObject] |
	//	collectionType=CollectionType "<" ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type "<" "@"
	//	domainObjectType=[SimpleDomainObject] ">") ">" | mapCollectionType=MAP_COLLECTION_TYPE "<" (mapKeyType=Type | "@"
	//	mapKeyDomainObjectType=[SimpleDomainObject]) "," ("@" domainObjectType=[SimpleDomainObject] | type=Type | type=Type
	//	"<" "@" domainObjectType=[SimpleDomainObject] ">") ">";
	public ComplexTypeElements getComplexTypeAccess() {
		return pComplexType;
	}
	
	public ParserRule getComplexTypeRule() {
		return getComplexTypeAccess().getRule();
	}
	
	//SimpleDomainObject:
	//	BasicType | Enum | DomainObject | DataTransferObject | Trait;
	public SimpleDomainObjectElements getSimpleDomainObjectAccess() {
		return pSimpleDomainObject;
	}
	
	public ParserRule getSimpleDomainObjectRule() {
		return getSimpleDomainObjectAccess().getRule();
	}
	
	//DomainObject:
	//	Entity | ValueObject | Event;
	public DomainObjectElements getDomainObjectAccess() {
		return pDomainObject;
	}
	
	public ParserRule getDomainObjectRule() {
		return getDomainObjectAccess().getRule();
	}
	
	//Entity:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	abstract?="abstract"? "Entity" name=ID ("extends" ("@" extends=[Entity] | extendsName=JavaIdentifier))? ("with" "@"?
	//	traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT "optimisticLocking" |
	//	"optimisticLocking")? & (notAuditable?=NOT "auditable" | "auditable")? & (cache?="cache" | NOT "cache")? &
	//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
	//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
	//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
	//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
	//	validate=STRING)? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
	//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
	//	repository=Repository?
	//	"}")?;
	public EntityElements getEntityAccess() {
		return pEntity;
	}
	
	public ParserRule getEntityRule() {
		return getEntityAccess().getRule();
	}
	
	//ValueObject:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	abstract?="abstract"? "ValueObject" name=ID ("extends" ("@" extends=[ValueObject] | extendsName=JavaIdentifier))?
	//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notOptimisticLocking?=NOT
	//	"optimisticLocking" | "optimisticLocking")? & (notImmutable?=NOT "immutable" | "immutable")? & (cache?="cache" | NOT
	//	"cache")? & (gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? &
	//	("databaseTable" "=" databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? &
	//	("discriminatorColumn" "=" discriminatorColumn=STRING)? & ("discriminatorType" "="
	//	discriminatorType=DiscriminatorType)? & ("discriminatorLength" "=" discriminatorLength=STRING)? & ("inheritanceType"
	//	"=" inheritanceType=InheritanceType)? & ("validate" "=" validate=STRING)? & (persistent?="persistent" |
	//	notPersistent?=NOT "persistent")? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"? belongsTo=[DomainObject]))?)
	//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
	//	repository=Repository?
	//	"}")?;
	public ValueObjectElements getValueObjectAccess() {
		return pValueObject;
	}
	
	public ParserRule getValueObjectRule() {
		return getValueObjectAccess().getRule();
	}
	
	//DomainEvent:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	abstract?="abstract"? "DomainEvent" name=ID ("extends" ("@" extends=[DomainEvent] | extendsName=JavaIdentifier))?
	//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? &
	//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
	//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
	//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
	//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
	//	validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
	//	belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
	//	repository=Repository?
	//	"}")?;
	public DomainEventElements getDomainEventAccess() {
		return pDomainEvent;
	}
	
	public ParserRule getDomainEventRule() {
		return getDomainEventAccess().getRule();
	}
	
	//CommandEvent:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	abstract?="abstract"? "CommandEvent" name=ID ("extends" ("@" extends=[CommandEvent] | extendsName=JavaIdentifier))?
	//	("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((cache?="cache" | NOT "cache")? &
	//	(gapClass?="gap" | noGapClass?="nogap")? & scaffold?="scaffold"? & ("hint" "=" hint=STRING)? & ("databaseTable" "="
	//	databaseTable=STRING)? & ("discriminatorValue" "=" discriminatorValue=STRING)? & ("discriminatorColumn" "="
	//	discriminatorColumn=STRING)? & ("discriminatorType" "=" discriminatorType=DiscriminatorType)? & ("discriminatorLength"
	//	"=" discriminatorLength=STRING)? & ("inheritanceType" "=" inheritanceType=InheritanceType)? & ("validate" "="
	//	validate=STRING)? & persistent?="persistent"? & aggregateRoot?="aggregateRoot"? & ("belongsTo" ("@"?
	//	belongsTo=[DomainObject]))?) (attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
	//	repository=Repository?
	//	"}")?;
	public CommandEventElements getCommandEventAccess() {
		return pCommandEvent;
	}
	
	public ParserRule getCommandEventRule() {
		return getCommandEventAccess().getRule();
	}
	
	//Trait:
	//	doc=STRING?
	//	"Trait" name=ID ("{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)? (attributes+=Attribute |
	//	references+=Reference | operations+=DomainObjectOperation)*
	//	"}")?;
	public TraitElements getTraitAccess() {
		return pTrait;
	}
	
	public ParserRule getTraitRule() {
		return getTraitAccess().getRule();
	}
	
	//DomainObjectOperation:
	//	doc=STRING? ("def" | '*') abstract?="abstract"? visibility=Visibility? (returnType=ComplexType | "void")?
	//	name=ID ("(" parameters+=Parameter? ("," parameters+=Parameter)* ")")? (("throws" throws=ThrowsIdentifier)? & ("hint"
	//	"=" hint=STRING)?)
	//	";";
	public DomainObjectOperationElements getDomainObjectOperationAccess() {
		return pDomainObjectOperation;
	}
	
	public ParserRule getDomainObjectOperationRule() {
		return getDomainObjectOperationAccess().getRule();
	}
	
	//DataTransferObject:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	abstract?="abstract"? "DataTransferObject" name=ID ("extends" ("@" extends=[DataTransferObject] |
	//	extendsName=JavaIdentifier))? ("{" ("package" "=" package=JavaIdentifier)? ((gapClass?="gap" | noGapClass?="nogap")? &
	//	("hint" "=" hint=STRING)? & ("validate" "=" validate=STRING)?) (attributes+=DtoAttribute | references+=DtoReference)*
	//	"}")?;
	public DataTransferObjectElements getDataTransferObjectAccess() {
		return pDataTransferObject;
	}
	
	public ParserRule getDataTransferObjectRule() {
		return getDataTransferObjectAccess().getRule();
	}
	
	//BasicType:
	//	doc=STRING?
	//	"BasicType" name=ID ("with" "@"? traits+=[Trait])* ("{" ("package" "=" package=JavaIdentifier)? ((notImmutable?=NOT
	//	"immutable" | "immutable")? & (gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)?)
	//	(attributes+=Attribute | references+=Reference | operations+=DomainObjectOperation)*
	//	"}")?;
	public BasicTypeElements getBasicTypeAccess() {
		return pBasicType;
	}
	
	public ParserRule getBasicTypeRule() {
		return getBasicTypeAccess().getRule();
	}
	
	//Attribute:
	//	doc=STRING?
	//	visibility=Visibility? (collectionType=CollectionType "<" type=Type ">" | type=Type) name=ID (key?="key"? &
	//	(notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable"
	//	| NOT "nullable") ("=" nullableMessage=STRING)?)? & index?="index"? & (assertFalse?="assertFalse" ("="
	//	assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? & ("hint" "="
	//	hint=STRING)? & (creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "="
	//	digits=STRING)? & (email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? &
	//	(past?="past" ("=" pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "="
	//	decimalMax=STRING)? & ("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? &
	//	(notBlank?="notBlank" ("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)?
	//	& ("size" "=" size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "="
	//	url=STRING)? & ("validate" "=" validate=STRING)? & transient?="transient"? & ("databaseColumn" "="
	//	databaseColumn=STRING)? & ("databaseType" "=" databaseType=STRING)?) ";"?;
	public AttributeElements getAttributeAccess() {
		return pAttribute;
	}
	
	public ParserRule getAttributeRule() {
		return getAttributeAccess().getRule();
	}
	
	//Reference:
	//	doc=STRING?
	//	REF visibility=Visibility? (collectionType=CollectionType "<" ("@"? domainObjectType=[SimpleDomainObject]) ">" | "@"?
	//	domainObjectType=[SimpleDomainObject]) name=ID (key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? &
	//	(required?="required" | NOT "required")? & ((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? &
	//	("hint" "=" hint=STRING)? & ("cascade" "=" cascade=STRING)? & ("fetch" "=" fetch=STRING)? & (cache?="cache" | NOT
	//	"cache")? & (inverse?="inverse" | NOT "inverse")? & ("databaseColumn" "=" databaseColumn=STRING)? &
	//	("databaseJoinTable" "=" databaseJoinTable=STRING)? & ("databaseJoinColumn" "=" databaseJoinColumn=STRING)? &
	//	(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
	//	validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & transient?="transient"? & ("orderby" "="
	//	orderBy=STRING)? & (orderColumn?="orderColumn" ("=" orderColumnName=STRING)?)? & oppositeHolder=OppositeHolder?) ";"?;
	public ReferenceElements getReferenceAccess() {
		return pReference;
	}
	
	public ParserRule getReferenceRule() {
		return getReferenceAccess().getRule();
	}
	
	//DtoAttribute:
	//	doc=STRING?
	//	visibility=Visibility? (collectionType=CollectionType "<")? type=Type ">"? name=ID (key?="key"? & (notChangeable?=NOT
	//	"changeable" | "changeable")? & (required?="required" | NOT "required")? & ((nullable?="nullable" | NOT "nullable")
	//	("=" nullableMessage=STRING)?)? & transient?="transient"? & (assertFalse?="assertFalse" ("="
	//	assertFalseMessage=STRING)?)? & (assertTrue?="assertTrue" ("=" assertTrueMessage=STRING)?)? &
	//	(creditCardNumber?="creditCardNumber" ("=" creditCardNumberMessage=STRING)?)? & ("digits" "=" digits=STRING)? &
	//	(email?="email" ("=" emailMessage=STRING)?)? & (future?="future" ("=" futureMessage=STRING)?)? & (past?="past" ("="
	//	pastMessage=STRING)?)? & ("max" "=" max=STRING)? & ("min" "=" min=STRING)? & ("decimalMax" "=" decimalMax=STRING)? &
	//	("decimalMin" "=" decimalMin=STRING)? & (notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & (notBlank?="notBlank"
	//	("=" notBlankMessage=STRING)?)? & ("pattern" "=" pattern=STRING)? & ("range" "=" range=STRING)? & ("size" "="
	//	size=STRING)? & ("length" "=" length=STRING)? & ("scriptAssert" "=" scriptAssert=STRING)? & ("url" "=" url=STRING)? &
	//	("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?;
	public DtoAttributeElements getDtoAttributeAccess() {
		return pDtoAttribute;
	}
	
	public ParserRule getDtoAttributeRule() {
		return getDtoAttributeAccess().getRule();
	}
	
	//DtoReference:
	//	doc=STRING?
	//	REF visibility=Visibility? (collectionType=CollectionType "<")? ("@"? domainObjectType=[SimpleDomainObject]) ">"?
	//	name=ID (key?="key"? & (notChangeable?=NOT "changeable" | "changeable")? & (required?="required" | NOT "required")? &
	//	((nullable?="nullable" | NOT "nullable") ("=" nullableMessage=STRING)?)? & transient?="transient"? &
	//	(notEmpty?="notEmpty" ("=" notEmptyMessage=STRING)?)? & ("size" "=" size=STRING)? & (valid?="valid" ("="
	//	validMessage=STRING)?)? & ("validate" "=" validate=STRING)? & ("hint" "=" hint=STRING)?) ";"?;
	public DtoReferenceElements getDtoReferenceAccess() {
		return pDtoReference;
	}
	
	public ParserRule getDtoReferenceRule() {
		return getDtoReferenceAccess().getRule();
	}
	
	//OppositeHolder:
	//	OPPOSITE opposite=[Reference];
	public OppositeHolderElements getOppositeHolderAccess() {
		return pOppositeHolder;
	}
	
	public ParserRule getOppositeHolderRule() {
		return getOppositeHolderAccess().getRule();
	}
	
	//Repository:
	//	doc=STRING?
	//	"Repository" name=ID ("{" ((gapClass?="gap" | noGapClass?="nogap")? & ("hint" "=" hint=STRING)? &
	//	subscribe=Subscribe?) dependencies+=Dependency*
	//	operations+=RepositoryOperation*
	//	"}")?;
	public RepositoryElements getRepositoryAccess() {
		return pRepository;
	}
	
	public ParserRule getRepositoryRule() {
		return getRepositoryAccess().getRule();
	}
	
	//ServiceDependency:
	//	('>' | 'inject') ("@" dependency=[Service]);
	public ServiceDependencyElements getServiceDependencyAccess() {
		return pServiceDependency;
	}
	
	public ParserRule getServiceDependencyRule() {
		return getServiceDependencyAccess().getRule();
	}
	
	//Dependency:
	//	('>' | 'inject') ("@" dependency=[ServiceRepositoryOption] | name=ID);
	public DependencyElements getDependencyAccess() {
		return pDependency;
	}
	
	public ParserRule getDependencyRule() {
		return getDependencyAccess().getRule();
	}
	
	//Enum:
	//	doc=STRING?
	//	"enum" name=ID "{" ("package" "=" package=JavaIdentifier)? ("hint" "=" hint=STRING)?
	//	ordinal?="ordinal"?
	//	attributes+=EnumAttribute*
	//	values+=EnumValue ("," values+=EnumValue)* ";"?
	//	"}";
	public EnumElements getEnumAccess() {
		return pEnum;
	}
	
	public ParserRule getEnumRule() {
		return getEnumAccess().getRule();
	}
	
	//EnumAttribute:
	//	doc=STRING?
	//	type=Type name=ID key?="key"? ";"?;
	public EnumAttributeElements getEnumAttributeAccess() {
		return pEnumAttribute;
	}
	
	public ParserRule getEnumAttributeRule() {
		return getEnumAttributeAccess().getRule();
	}
	
	//EnumValue:
	//	doc=STRING?
	//	name=ID ("(" parameters+=EnumParameter ("," parameters+=EnumParameter)* ")")?;
	public EnumValueElements getEnumValueAccess() {
		return pEnumValue;
	}
	
	public ParserRule getEnumValueRule() {
		return getEnumValueAccess().getRule();
	}
	
	//EnumParameter:
	//	value=STRING | integerValue=INT;
	public EnumParameterElements getEnumParameterAccess() {
		return pEnumParameter;
	}
	
	public ParserRule getEnumParameterRule() {
		return getEnumParameterAccess().getRule();
	}
	
	//AnyProperty:
	//	Property | DtoProperty;
	public AnyPropertyElements getAnyPropertyAccess() {
		return pAnyProperty;
	}
	
	public ParserRule getAnyPropertyRule() {
		return getAnyPropertyAccess().getRule();
	}
	
	//Property:
	//	Attribute | Reference;
	public PropertyElements getPropertyAccess() {
		return pProperty;
	}
	
	public ParserRule getPropertyRule() {
		return getPropertyAccess().getRule();
	}
	
	//DtoProperty:
	//	DtoAttribute | DtoReference;
	public DtoPropertyElements getDtoPropertyAccess() {
		return pDtoProperty;
	}
	
	public ParserRule getDtoPropertyRule() {
		return getDtoPropertyAccess().getRule();
	}
	
	//enum InheritanceType:
	//	JOINED | SINGLE_TABLE;
	public InheritanceTypeElements getInheritanceTypeAccess() {
		return eInheritanceType;
	}
	
	public EnumRule getInheritanceTypeRule() {
		return getInheritanceTypeAccess().getRule();
	}
	
	//enum DiscriminatorType:
	//	STRING | CHAR | INTEGER;
	public DiscriminatorTypeElements getDiscriminatorTypeAccess() {
		return eDiscriminatorType;
	}
	
	public EnumRule getDiscriminatorTypeRule() {
		return getDiscriminatorTypeAccess().getRule();
	}
	
	//Type:
	//	"String" | "int" | "Integer" | "long" | "Long" | "boolean" | "Boolean" | "Date" | "DateTime" | "Timestamp" |
	//	"BigDecimal" | "BigInteger" |
	//	"double" | "Double" | "float" | "Float" | "Key" | "PagingParameter" | "PagedResult" | "Blob" | "Clob" | "Object[]" |
	//	JavaIdentifier;
	public TypeElements getTypeAccess() {
		return pType;
	}
	
	public ParserRule getTypeRule() {
		return getTypeAccess().getRule();
	}
	
	//enum CollectionType:
	//	None | Set | List | Bag | Collection;
	public CollectionTypeElements getCollectionTypeAccess() {
		return eCollectionType;
	}
	
	public EnumRule getCollectionTypeRule() {
		return getCollectionTypeAccess().getRule();
	}
	
	//terminal MAP_COLLECTION_TYPE:
	//	"Map";
	public TerminalRule getMAP_COLLECTION_TYPERule() {
		return tMAP_COLLECTION_TYPE;
	}
	
	//enum Visibility:
	//	public | protected | private | package;
	public VisibilityElements getVisibilityAccess() {
		return eVisibility;
	}
	
	public EnumRule getVisibilityRule() {
		return getVisibilityAccess().getRule();
	}
	
	//JavaIdentifier:
	//	ID ("." ID)*;
	public JavaIdentifierElements getJavaIdentifierAccess() {
		return pJavaIdentifier;
	}
	
	public ParserRule getJavaIdentifierRule() {
		return getJavaIdentifierAccess().getRule();
	}
	
	//ChannelIdentifier:
	//	ID (("." | "/" | ":") ID)*;
	public ChannelIdentifierElements getChannelIdentifierAccess() {
		return pChannelIdentifier;
	}
	
	public ParserRule getChannelIdentifierRule() {
		return getChannelIdentifierAccess().getRule();
	}
	
	//ThrowsIdentifier:
	//	JavaIdentifier ("," JavaIdentifier)*;
	public ThrowsIdentifierElements getThrowsIdentifierAccess() {
		return pThrowsIdentifier;
	}
	
	public ParserRule getThrowsIdentifierRule() {
		return getThrowsIdentifierAccess().getRule();
	}
	
	//terminal NOT:
	//	'!' | 'not';
	public TerminalRule getNOTRule() {
		return tNOT;
	}
	
	//terminal DELEGATE:
	//	'=>' | 'delegates to';
	public TerminalRule getDELEGATERule() {
		return tDELEGATE;
	}
	
	//terminal OPPOSITE:
	//	'<->' | 'opposite';
	public TerminalRule getOPPOSITERule() {
		return tOPPOSITE;
	}
	
	//terminal REF:
	//	'-' | 'reference';
	public TerminalRule getREFRule() {
		return tREF;
	}
	
	//terminal ID:
	//	'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
	public TerminalRule getIDRule() {
		return gaTerminals.getIDRule();
	}
	
	//terminal INT returns ecore::EInt:
	//	'0'..'9'+;
	public TerminalRule getINTRule() {
		return gaTerminals.getINTRule();
	}
	
	//terminal STRING:
	//	'"' ('\\' . | !('\\' | '"'))* '"' |
	//	"'" ('\\' . | !('\\' | "'"))* "'";
	public TerminalRule getSTRINGRule() {
		return gaTerminals.getSTRINGRule();
	}
	
	//terminal ML_COMMENT:
	//	'/*'->'*/';
	public TerminalRule getML_COMMENTRule() {
		return gaTerminals.getML_COMMENTRule();
	}
	
	//terminal SL_COMMENT:
	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
	public TerminalRule getSL_COMMENTRule() {
		return gaTerminals.getSL_COMMENTRule();
	}
	
	//terminal WS:
	//	' ' | '\t' | '\r' | '\n'+;
	public TerminalRule getWSRule() {
		return gaTerminals.getWSRule();
	}
	
	//terminal ANY_OTHER:
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaTerminals.getANY_OTHERRule();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy