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

org.contextmapper.dsl.services.ContextMappingDSLGrammarAccess Maven / Gradle / Ivy

/*
 * generated by Xtext 2.21.0
 */
package org.contextmapper.dsl.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.contextmapper.tactic.dsl.services.TacticDDDLanguageGrammarAccess;
import org.eclipse.xtext.Action;
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 ContextMappingDSLGrammarAccess extends AbstractGrammarElementFinder {
	
	public class ContextMappingModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.ContextMappingModel");
		private final UnorderedGroup cUnorderedGroup = (UnorderedGroup)rule.eContents().get(1);
		private final Assignment cFirstLineCommentAssignment_0 = (Assignment)cUnorderedGroup.eContents().get(0);
		private final RuleCall cFirstLineCommentSL_COMMENTTerminalRuleCall_0_0 = (RuleCall)cFirstLineCommentAssignment_0.eContents().get(0);
		private final Assignment cImportsAssignment_1 = (Assignment)cUnorderedGroup.eContents().get(1);
		private final RuleCall cImportsImportParserRuleCall_1_0 = (RuleCall)cImportsAssignment_1.eContents().get(0);
		private final Assignment cMapAssignment_2 = (Assignment)cUnorderedGroup.eContents().get(2);
		private final RuleCall cMapContextMapParserRuleCall_2_0 = (RuleCall)cMapAssignment_2.eContents().get(0);
		private final Assignment cBoundedContextsAssignment_3 = (Assignment)cUnorderedGroup.eContents().get(3);
		private final RuleCall cBoundedContextsBoundedContextParserRuleCall_3_0 = (RuleCall)cBoundedContextsAssignment_3.eContents().get(0);
		private final Assignment cDomainsAssignment_4 = (Assignment)cUnorderedGroup.eContents().get(4);
		private final RuleCall cDomainsDomainParserRuleCall_4_0 = (RuleCall)cDomainsAssignment_4.eContents().get(0);
		private final Assignment cUserRequirementsAssignment_5 = (Assignment)cUnorderedGroup.eContents().get(5);
		private final RuleCall cUserRequirementsUserRequirementParserRuleCall_5_0 = (RuleCall)cUserRequirementsAssignment_5.eContents().get(0);
		
		//ContextMappingModel:
		//	firstLineComment=SL_COMMENT? & imports+=Import* & map=ContextMap? & boundedContexts+=BoundedContext* &
		//	domains+=Domain* & userRequirements+=UserRequirement*;
		@Override public ParserRule getRule() { return rule; }
		
		//firstLineComment=SL_COMMENT? & imports+=Import* & map=ContextMap? & boundedContexts+=BoundedContext* & domains+=Domain*
		//& userRequirements+=UserRequirement*
		public UnorderedGroup getUnorderedGroup() { return cUnorderedGroup; }
		
		//firstLineComment=SL_COMMENT?
		public Assignment getFirstLineCommentAssignment_0() { return cFirstLineCommentAssignment_0; }
		
		//SL_COMMENT
		public RuleCall getFirstLineCommentSL_COMMENTTerminalRuleCall_0_0() { return cFirstLineCommentSL_COMMENTTerminalRuleCall_0_0; }
		
		//imports+=Import*
		public Assignment getImportsAssignment_1() { return cImportsAssignment_1; }
		
		//Import
		public RuleCall getImportsImportParserRuleCall_1_0() { return cImportsImportParserRuleCall_1_0; }
		
		//map=ContextMap?
		public Assignment getMapAssignment_2() { return cMapAssignment_2; }
		
		//ContextMap
		public RuleCall getMapContextMapParserRuleCall_2_0() { return cMapContextMapParserRuleCall_2_0; }
		
		//boundedContexts+=BoundedContext*
		public Assignment getBoundedContextsAssignment_3() { return cBoundedContextsAssignment_3; }
		
		//BoundedContext
		public RuleCall getBoundedContextsBoundedContextParserRuleCall_3_0() { return cBoundedContextsBoundedContextParserRuleCall_3_0; }
		
		//domains+=Domain*
		public Assignment getDomainsAssignment_4() { return cDomainsAssignment_4; }
		
		//Domain
		public RuleCall getDomainsDomainParserRuleCall_4_0() { return cDomainsDomainParserRuleCall_4_0; }
		
		//userRequirements+=UserRequirement*
		public Assignment getUserRequirementsAssignment_5() { return cUserRequirementsAssignment_5; }
		
		//UserRequirement
		public RuleCall getUserRequirementsUserRequirementParserRuleCall_5_0() { return cUserRequirementsUserRequirementParserRuleCall_5_0; }
	}
	public class ImportElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Import");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cImportURIAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cImportURISTRINGTerminalRuleCall_1_0 = (RuleCall)cImportURIAssignment_1.eContents().get(0);
		
		//Import:
		//	'import' importURI=STRING;
		@Override public ParserRule getRule() { return rule; }
		
		//'import' importURI=STRING
		public Group getGroup() { return cGroup; }
		
		//'import'
		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
		
		//importURI=STRING
		public Assignment getImportURIAssignment_1() { return cImportURIAssignment_1; }
		
		//STRING
		public RuleCall getImportURISTRINGTerminalRuleCall_1_0() { return cImportURISTRINGTerminalRuleCall_1_0; }
	}
	public class ContextMapElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.ContextMap");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cContextMapAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cContextMapKeyword_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 RuleCall cOPENTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
		private final Keyword cTypeKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_0_1 = (Keyword)cGroup_4_0.eContents().get(1);
		private final Assignment cTypeAssignment_4_0_2 = (Assignment)cGroup_4_0.eContents().get(2);
		private final RuleCall cTypeContextMapTypeEnumRuleCall_4_0_2_0 = (RuleCall)cTypeAssignment_4_0_2.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
		private final Keyword cStateKeyword_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 cStateAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
		private final RuleCall cStateContextMapStateEnumRuleCall_4_1_2_0 = (RuleCall)cStateAssignment_4_1_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cContainsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cBoundedContextsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final CrossReference cBoundedContextsBoundedContextCrossReference_5_1_0 = (CrossReference)cBoundedContextsAssignment_5_1.eContents().get(0);
		private final RuleCall cBoundedContextsBoundedContextIDTerminalRuleCall_5_1_0_1 = (RuleCall)cBoundedContextsBoundedContextCrossReference_5_1_0.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cBoundedContextsAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final CrossReference cBoundedContextsBoundedContextCrossReference_5_2_1_0 = (CrossReference)cBoundedContextsAssignment_5_2_1.eContents().get(0);
		private final RuleCall cBoundedContextsBoundedContextIDTerminalRuleCall_5_2_1_0_1 = (RuleCall)cBoundedContextsBoundedContextCrossReference_5_2_1_0.eContents().get(1);
		private final Assignment cRelationshipsAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cRelationshipsRelationshipParserRuleCall_6_0 = (RuleCall)cRelationshipsAssignment_6.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_7 = (RuleCall)cGroup.eContents().get(7);
		
		//ContextMap:
		//	{ContextMap} // make sure there is always a context map
		//	'ContextMap' name=ID?
		//	OPEN (('type' '='? type=ContextMapType)? & ('state' '='? state=ContextMapState)?) ('contains'
		//	boundedContexts+=[BoundedContext] ("," boundedContexts+=[BoundedContext])*)*
		//	relationships+=Relationship*
		//	CLOSE;
		@Override public ParserRule getRule() { return rule; }
		
		//{ContextMap} // make sure there is always a context map
		//'ContextMap' name=ID? OPEN (('type' '='? type=ContextMapType)? & ('state' '='? state=ContextMapState)?) ('contains'
		//boundedContexts+=[BoundedContext] ("," boundedContexts+=[BoundedContext])*)* relationships+=Relationship* CLOSE
		public Group getGroup() { return cGroup; }
		
		//{ContextMap}
		public Action getContextMapAction_0() { return cContextMapAction_0; }
		
		//// make sure there is always a context map
		//'ContextMap'
		public Keyword getContextMapKeyword_1() { return cContextMapKeyword_1; }
		
		//name=ID?
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_3() { return cOPENTerminalRuleCall_3; }
		
		//(('type' '='? type=ContextMapType)? & ('state' '='? state=ContextMapState)?)
		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
		
		//('type' '='? type=ContextMapType)?
		public Group getGroup_4_0() { return cGroup_4_0; }
		
		//'type'
		public Keyword getTypeKeyword_4_0_0() { return cTypeKeyword_4_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_0_1() { return cEqualsSignKeyword_4_0_1; }
		
		//type=ContextMapType
		public Assignment getTypeAssignment_4_0_2() { return cTypeAssignment_4_0_2; }
		
		//ContextMapType
		public RuleCall getTypeContextMapTypeEnumRuleCall_4_0_2_0() { return cTypeContextMapTypeEnumRuleCall_4_0_2_0; }
		
		//('state' '='? state=ContextMapState)?
		public Group getGroup_4_1() { return cGroup_4_1; }
		
		//'state'
		public Keyword getStateKeyword_4_1_0() { return cStateKeyword_4_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
		
		//state=ContextMapState
		public Assignment getStateAssignment_4_1_2() { return cStateAssignment_4_1_2; }
		
		//ContextMapState
		public RuleCall getStateContextMapStateEnumRuleCall_4_1_2_0() { return cStateContextMapStateEnumRuleCall_4_1_2_0; }
		
		//('contains' boundedContexts+=[BoundedContext] ("," boundedContexts+=[BoundedContext])*)*
		public Group getGroup_5() { return cGroup_5; }
		
		//'contains'
		public Keyword getContainsKeyword_5_0() { return cContainsKeyword_5_0; }
		
		//boundedContexts+=[BoundedContext]
		public Assignment getBoundedContextsAssignment_5_1() { return cBoundedContextsAssignment_5_1; }
		
		//[BoundedContext]
		public CrossReference getBoundedContextsBoundedContextCrossReference_5_1_0() { return cBoundedContextsBoundedContextCrossReference_5_1_0; }
		
		//ID
		public RuleCall getBoundedContextsBoundedContextIDTerminalRuleCall_5_1_0_1() { return cBoundedContextsBoundedContextIDTerminalRuleCall_5_1_0_1; }
		
		//("," boundedContexts+=[BoundedContext])*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//","
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//boundedContexts+=[BoundedContext]
		public Assignment getBoundedContextsAssignment_5_2_1() { return cBoundedContextsAssignment_5_2_1; }
		
		//[BoundedContext]
		public CrossReference getBoundedContextsBoundedContextCrossReference_5_2_1_0() { return cBoundedContextsBoundedContextCrossReference_5_2_1_0; }
		
		//ID
		public RuleCall getBoundedContextsBoundedContextIDTerminalRuleCall_5_2_1_0_1() { return cBoundedContextsBoundedContextIDTerminalRuleCall_5_2_1_0_1; }
		
		//relationships+=Relationship*
		public Assignment getRelationshipsAssignment_6() { return cRelationshipsAssignment_6; }
		
		//Relationship
		public RuleCall getRelationshipsRelationshipParserRuleCall_6_0() { return cRelationshipsRelationshipParserRuleCall_6_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_7() { return cCLOSETerminalRuleCall_7; }
	}
	public class BoundedContextElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.BoundedContext");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCommentAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCommentSL_COMMENTTerminalRuleCall_0_0 = (RuleCall)cCommentAssignment_0.eContents().get(0);
		private final Keyword cBoundedContextKeyword_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 UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
		private final Group cGroup_3_0 = (Group)cUnorderedGroup_3.eContents().get(0);
		private final Keyword cImplementsKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
		private final Assignment cImplementedDomainPartsAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
		private final CrossReference cImplementedDomainPartsDomainPartCrossReference_3_0_1_0 = (CrossReference)cImplementedDomainPartsAssignment_3_0_1.eContents().get(0);
		private final RuleCall cImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_1_0_1 = (RuleCall)cImplementedDomainPartsDomainPartCrossReference_3_0_1_0.eContents().get(1);
		private final Group cGroup_3_0_2 = (Group)cGroup_3_0.eContents().get(2);
		private final Keyword cCommaKeyword_3_0_2_0 = (Keyword)cGroup_3_0_2.eContents().get(0);
		private final Assignment cImplementedDomainPartsAssignment_3_0_2_1 = (Assignment)cGroup_3_0_2.eContents().get(1);
		private final CrossReference cImplementedDomainPartsDomainPartCrossReference_3_0_2_1_0 = (CrossReference)cImplementedDomainPartsAssignment_3_0_2_1.eContents().get(0);
		private final RuleCall cImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_2_1_0_1 = (RuleCall)cImplementedDomainPartsDomainPartCrossReference_3_0_2_1_0.eContents().get(1);
		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
		private final Keyword cRealizesKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cRealizedBoundedContextsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final CrossReference cRealizedBoundedContextsBoundedContextCrossReference_3_1_1_0 = (CrossReference)cRealizedBoundedContextsAssignment_3_1_1.eContents().get(0);
		private final RuleCall cRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_1_0_1 = (RuleCall)cRealizedBoundedContextsBoundedContextCrossReference_3_1_1_0.eContents().get(1);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cRealizedBoundedContextsAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final CrossReference cRealizedBoundedContextsBoundedContextCrossReference_3_1_2_1_0 = (CrossReference)cRealizedBoundedContextsAssignment_3_1_2_1.eContents().get(0);
		private final RuleCall cRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_2_1_0_1 = (RuleCall)cRealizedBoundedContextsBoundedContextCrossReference_3_1_2_1_0.eContents().get(1);
		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
		private final Keyword cRefinesKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
		private final Assignment cRefinedBoundedContextAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
		private final CrossReference cRefinedBoundedContextBoundedContextCrossReference_3_2_1_0 = (CrossReference)cRefinedBoundedContextAssignment_3_2_1.eContents().get(0);
		private final RuleCall cRefinedBoundedContextBoundedContextIDTerminalRuleCall_3_2_1_0_1 = (RuleCall)cRefinedBoundedContextBoundedContextCrossReference_3_2_1_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final RuleCall cOPENTerminalRuleCall_4_0 = (RuleCall)cGroup_4.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4_1 = (UnorderedGroup)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cUnorderedGroup_4_1.eContents().get(0);
		private final Keyword cDomainVisionStatementKeyword_4_1_0_0 = (Keyword)cGroup_4_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Assignment cDomainVisionStatementAssignment_4_1_0_2 = (Assignment)cGroup_4_1_0.eContents().get(2);
		private final RuleCall cDomainVisionStatementSTRINGTerminalRuleCall_4_1_0_2_0 = (RuleCall)cDomainVisionStatementAssignment_4_1_0_2.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cUnorderedGroup_4_1.eContents().get(1);
		private final Keyword cTypeKeyword_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 cTypeAssignment_4_1_1_2 = (Assignment)cGroup_4_1_1.eContents().get(2);
		private final RuleCall cTypeBoundedContextTypeEnumRuleCall_4_1_1_2_0 = (RuleCall)cTypeAssignment_4_1_1_2.eContents().get(0);
		private final Group cGroup_4_1_2 = (Group)cUnorderedGroup_4_1.eContents().get(2);
		private final Group cGroup_4_1_2_0 = (Group)cGroup_4_1_2.eContents().get(0);
		private final Keyword cResponsibilitiesKeyword_4_1_2_0_0 = (Keyword)cGroup_4_1_2_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_2_0_1 = (Keyword)cGroup_4_1_2_0.eContents().get(1);
		private final Assignment cResponsibilitiesAssignment_4_1_2_0_2 = (Assignment)cGroup_4_1_2_0.eContents().get(2);
		private final RuleCall cResponsibilitiesSTRINGTerminalRuleCall_4_1_2_0_2_0 = (RuleCall)cResponsibilitiesAssignment_4_1_2_0_2.eContents().get(0);
		private final Group cGroup_4_1_2_1 = (Group)cGroup_4_1_2.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_2_1_0 = (Keyword)cGroup_4_1_2_1.eContents().get(0);
		private final Assignment cResponsibilitiesAssignment_4_1_2_1_1 = (Assignment)cGroup_4_1_2_1.eContents().get(1);
		private final RuleCall cResponsibilitiesSTRINGTerminalRuleCall_4_1_2_1_1_0 = (RuleCall)cResponsibilitiesAssignment_4_1_2_1_1.eContents().get(0);
		private final Group cGroup_4_1_3 = (Group)cUnorderedGroup_4_1.eContents().get(3);
		private final Keyword cImplementationTechnologyKeyword_4_1_3_0 = (Keyword)cGroup_4_1_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_3_1 = (Keyword)cGroup_4_1_3.eContents().get(1);
		private final Assignment cImplementationTechnologyAssignment_4_1_3_2 = (Assignment)cGroup_4_1_3.eContents().get(2);
		private final RuleCall cImplementationTechnologySTRINGTerminalRuleCall_4_1_3_2_0 = (RuleCall)cImplementationTechnologyAssignment_4_1_3_2.eContents().get(0);
		private final Group cGroup_4_1_4 = (Group)cUnorderedGroup_4_1.eContents().get(4);
		private final Keyword cKnowledgeLevelKeyword_4_1_4_0 = (Keyword)cGroup_4_1_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_4_1 = (Keyword)cGroup_4_1_4.eContents().get(1);
		private final Assignment cKnowledgeLevelAssignment_4_1_4_2 = (Assignment)cGroup_4_1_4.eContents().get(2);
		private final RuleCall cKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_4_2_0 = (RuleCall)cKnowledgeLevelAssignment_4_1_4_2.eContents().get(0);
		private final Assignment cModulesAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cModulesSculptorModuleParserRuleCall_4_2_0 = (RuleCall)cModulesAssignment_4_2.eContents().get(0);
		private final Assignment cAggregatesAssignment_4_3 = (Assignment)cGroup_4.eContents().get(3);
		private final RuleCall cAggregatesAggregateParserRuleCall_4_3_0 = (RuleCall)cAggregatesAssignment_4_3.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_4_4 = (RuleCall)cGroup_4.eContents().get(4);
		
		//BoundedContext:
		//	comment=SL_COMMENT?
		//	'BoundedContext' name=ID (('implements' implementedDomainParts+=[DomainPart] (","
		//	implementedDomainParts+=[DomainPart])*)? & ('realizes' realizedBoundedContexts+=[BoundedContext] (","
		//	realizedBoundedContexts+=[BoundedContext])*)? & ('refines' refinedBoundedContext=[BoundedContext])?) (OPEN
		//	(('domainVisionStatement' '='? domainVisionStatement=STRING)? & ('type' '='? type=BoundedContextType)? &
		//	(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ('implementationTechnology'
		//	'='? implementationTechnology=STRING)? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?)
		//	modules+=SculptorModule*
		//	aggregates+=Aggregate*
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=SL_COMMENT? 'BoundedContext' name=ID (('implements' implementedDomainParts+=[DomainPart] (","
		//implementedDomainParts+=[DomainPart])*)? & ('realizes' realizedBoundedContexts+=[BoundedContext] (","
		//realizedBoundedContexts+=[BoundedContext])*)? & ('refines' refinedBoundedContext=[BoundedContext])?) (OPEN
		//(('domainVisionStatement' '='? domainVisionStatement=STRING)? & ('type' '='? type=BoundedContextType)? &
		//(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ('implementationTechnology'
		//'='? implementationTechnology=STRING)? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?)
		//modules+=SculptorModule* aggregates+=Aggregate* CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//comment=SL_COMMENT?
		public Assignment getCommentAssignment_0() { return cCommentAssignment_0; }
		
		//SL_COMMENT
		public RuleCall getCommentSL_COMMENTTerminalRuleCall_0_0() { return cCommentSL_COMMENTTerminalRuleCall_0_0; }
		
		//'BoundedContext'
		public Keyword getBoundedContextKeyword_1() { return cBoundedContextKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//(('implements' implementedDomainParts+=[DomainPart] ("," implementedDomainParts+=[DomainPart])*)? & ('realizes'
		//realizedBoundedContexts+=[BoundedContext] ("," realizedBoundedContexts+=[BoundedContext])*)? & ('refines'
		//refinedBoundedContext=[BoundedContext])?)
		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
		
		//('implements' implementedDomainParts+=[DomainPart] ("," implementedDomainParts+=[DomainPart])*)?
		public Group getGroup_3_0() { return cGroup_3_0; }
		
		//'implements'
		public Keyword getImplementsKeyword_3_0_0() { return cImplementsKeyword_3_0_0; }
		
		//implementedDomainParts+=[DomainPart]
		public Assignment getImplementedDomainPartsAssignment_3_0_1() { return cImplementedDomainPartsAssignment_3_0_1; }
		
		//[DomainPart]
		public CrossReference getImplementedDomainPartsDomainPartCrossReference_3_0_1_0() { return cImplementedDomainPartsDomainPartCrossReference_3_0_1_0; }
		
		//ID
		public RuleCall getImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_1_0_1() { return cImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_1_0_1; }
		
		//("," implementedDomainParts+=[DomainPart])*
		public Group getGroup_3_0_2() { return cGroup_3_0_2; }
		
		//","
		public Keyword getCommaKeyword_3_0_2_0() { return cCommaKeyword_3_0_2_0; }
		
		//implementedDomainParts+=[DomainPart]
		public Assignment getImplementedDomainPartsAssignment_3_0_2_1() { return cImplementedDomainPartsAssignment_3_0_2_1; }
		
		//[DomainPart]
		public CrossReference getImplementedDomainPartsDomainPartCrossReference_3_0_2_1_0() { return cImplementedDomainPartsDomainPartCrossReference_3_0_2_1_0; }
		
		//ID
		public RuleCall getImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_2_1_0_1() { return cImplementedDomainPartsDomainPartIDTerminalRuleCall_3_0_2_1_0_1; }
		
		//('realizes' realizedBoundedContexts+=[BoundedContext] ("," realizedBoundedContexts+=[BoundedContext])*)?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'realizes'
		public Keyword getRealizesKeyword_3_1_0() { return cRealizesKeyword_3_1_0; }
		
		//realizedBoundedContexts+=[BoundedContext]
		public Assignment getRealizedBoundedContextsAssignment_3_1_1() { return cRealizedBoundedContextsAssignment_3_1_1; }
		
		//[BoundedContext]
		public CrossReference getRealizedBoundedContextsBoundedContextCrossReference_3_1_1_0() { return cRealizedBoundedContextsBoundedContextCrossReference_3_1_1_0; }
		
		//ID
		public RuleCall getRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_1_0_1() { return cRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_1_0_1; }
		
		//("," realizedBoundedContexts+=[BoundedContext])*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//","
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//realizedBoundedContexts+=[BoundedContext]
		public Assignment getRealizedBoundedContextsAssignment_3_1_2_1() { return cRealizedBoundedContextsAssignment_3_1_2_1; }
		
		//[BoundedContext]
		public CrossReference getRealizedBoundedContextsBoundedContextCrossReference_3_1_2_1_0() { return cRealizedBoundedContextsBoundedContextCrossReference_3_1_2_1_0; }
		
		//ID
		public RuleCall getRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_2_1_0_1() { return cRealizedBoundedContextsBoundedContextIDTerminalRuleCall_3_1_2_1_0_1; }
		
		//('refines' refinedBoundedContext=[BoundedContext])?
		public Group getGroup_3_2() { return cGroup_3_2; }
		
		//'refines'
		public Keyword getRefinesKeyword_3_2_0() { return cRefinesKeyword_3_2_0; }
		
		//refinedBoundedContext=[BoundedContext]
		public Assignment getRefinedBoundedContextAssignment_3_2_1() { return cRefinedBoundedContextAssignment_3_2_1; }
		
		//[BoundedContext]
		public CrossReference getRefinedBoundedContextBoundedContextCrossReference_3_2_1_0() { return cRefinedBoundedContextBoundedContextCrossReference_3_2_1_0; }
		
		//ID
		public RuleCall getRefinedBoundedContextBoundedContextIDTerminalRuleCall_3_2_1_0_1() { return cRefinedBoundedContextBoundedContextIDTerminalRuleCall_3_2_1_0_1; }
		
		//(OPEN (('domainVisionStatement' '='? domainVisionStatement=STRING)? & ('type' '='? type=BoundedContextType)? &
		//(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ('implementationTechnology'
		//'='? implementationTechnology=STRING)? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?)
		//modules+=SculptorModule* aggregates+=Aggregate* CLOSE)?
		public Group getGroup_4() { return cGroup_4; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_4_0() { return cOPENTerminalRuleCall_4_0; }
		
		//(('domainVisionStatement' '='? domainVisionStatement=STRING)? & ('type' '='? type=BoundedContextType)? &
		//(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ('implementationTechnology'
		//'='? implementationTechnology=STRING)? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?)
		public UnorderedGroup getUnorderedGroup_4_1() { return cUnorderedGroup_4_1; }
		
		//('domainVisionStatement' '='? domainVisionStatement=STRING)?
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//'domainVisionStatement'
		public Keyword getDomainVisionStatementKeyword_4_1_0_0() { return cDomainVisionStatementKeyword_4_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_0_1() { return cEqualsSignKeyword_4_1_0_1; }
		
		//domainVisionStatement=STRING
		public Assignment getDomainVisionStatementAssignment_4_1_0_2() { return cDomainVisionStatementAssignment_4_1_0_2; }
		
		//STRING
		public RuleCall getDomainVisionStatementSTRINGTerminalRuleCall_4_1_0_2_0() { return cDomainVisionStatementSTRINGTerminalRuleCall_4_1_0_2_0; }
		
		//('type' '='? type=BoundedContextType)?
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }
		
		//'type'
		public Keyword getTypeKeyword_4_1_1_0() { return cTypeKeyword_4_1_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_1_1() { return cEqualsSignKeyword_4_1_1_1; }
		
		//type=BoundedContextType
		public Assignment getTypeAssignment_4_1_1_2() { return cTypeAssignment_4_1_1_2; }
		
		//BoundedContextType
		public RuleCall getTypeBoundedContextTypeEnumRuleCall_4_1_1_2_0() { return cTypeBoundedContextTypeEnumRuleCall_4_1_1_2_0; }
		
		//(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)?
		public Group getGroup_4_1_2() { return cGroup_4_1_2; }
		
		//('responsibilities' '='? responsibilities+=STRING)
		public Group getGroup_4_1_2_0() { return cGroup_4_1_2_0; }
		
		//'responsibilities'
		public Keyword getResponsibilitiesKeyword_4_1_2_0_0() { return cResponsibilitiesKeyword_4_1_2_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_2_0_1() { return cEqualsSignKeyword_4_1_2_0_1; }
		
		//responsibilities+=STRING
		public Assignment getResponsibilitiesAssignment_4_1_2_0_2() { return cResponsibilitiesAssignment_4_1_2_0_2; }
		
		//STRING
		public RuleCall getResponsibilitiesSTRINGTerminalRuleCall_4_1_2_0_2_0() { return cResponsibilitiesSTRINGTerminalRuleCall_4_1_2_0_2_0; }
		
		//("," responsibilities+=STRING)*
		public Group getGroup_4_1_2_1() { return cGroup_4_1_2_1; }
		
		//","
		public Keyword getCommaKeyword_4_1_2_1_0() { return cCommaKeyword_4_1_2_1_0; }
		
		//responsibilities+=STRING
		public Assignment getResponsibilitiesAssignment_4_1_2_1_1() { return cResponsibilitiesAssignment_4_1_2_1_1; }
		
		//STRING
		public RuleCall getResponsibilitiesSTRINGTerminalRuleCall_4_1_2_1_1_0() { return cResponsibilitiesSTRINGTerminalRuleCall_4_1_2_1_1_0; }
		
		//('implementationTechnology' '='? implementationTechnology=STRING)?
		public Group getGroup_4_1_3() { return cGroup_4_1_3; }
		
		//'implementationTechnology'
		public Keyword getImplementationTechnologyKeyword_4_1_3_0() { return cImplementationTechnologyKeyword_4_1_3_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_3_1() { return cEqualsSignKeyword_4_1_3_1; }
		
		//implementationTechnology=STRING
		public Assignment getImplementationTechnologyAssignment_4_1_3_2() { return cImplementationTechnologyAssignment_4_1_3_2; }
		
		//STRING
		public RuleCall getImplementationTechnologySTRINGTerminalRuleCall_4_1_3_2_0() { return cImplementationTechnologySTRINGTerminalRuleCall_4_1_3_2_0; }
		
		//('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?
		public Group getGroup_4_1_4() { return cGroup_4_1_4; }
		
		//'knowledgeLevel'
		public Keyword getKnowledgeLevelKeyword_4_1_4_0() { return cKnowledgeLevelKeyword_4_1_4_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_4_1() { return cEqualsSignKeyword_4_1_4_1; }
		
		//knowledgeLevel=KnowledgeLevel
		public Assignment getKnowledgeLevelAssignment_4_1_4_2() { return cKnowledgeLevelAssignment_4_1_4_2; }
		
		//KnowledgeLevel
		public RuleCall getKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_4_2_0() { return cKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_4_2_0; }
		
		//modules+=SculptorModule*
		public Assignment getModulesAssignment_4_2() { return cModulesAssignment_4_2; }
		
		//SculptorModule
		public RuleCall getModulesSculptorModuleParserRuleCall_4_2_0() { return cModulesSculptorModuleParserRuleCall_4_2_0; }
		
		//aggregates+=Aggregate*
		public Assignment getAggregatesAssignment_4_3() { return cAggregatesAssignment_4_3; }
		
		//Aggregate
		public RuleCall getAggregatesAggregateParserRuleCall_4_3_0() { return cAggregatesAggregateParserRuleCall_4_3_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_4_4() { return cCLOSETerminalRuleCall_4_4; }
	}
	public class DomainPartElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.DomainPart");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cDomainParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSubdomainParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//DomainPart:
		//	Domain | Subdomain;
		@Override public ParserRule getRule() { return rule; }
		
		//Domain | Subdomain
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Domain
		public RuleCall getDomainParserRuleCall_0() { return cDomainParserRuleCall_0; }
		
		//Subdomain
		public RuleCall getSubdomainParserRuleCall_1() { return cSubdomainParserRuleCall_1; }
	}
	public class DomainElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Domain");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDomainKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_2_1 = (UnorderedGroup)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cUnorderedGroup_2_1.eContents().get(0);
		private final Keyword cDomainVisionStatementKeyword_2_1_0_0 = (Keyword)cGroup_2_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_0_1 = (Keyword)cGroup_2_1_0.eContents().get(1);
		private final Assignment cDomainVisionStatementAssignment_2_1_0_2 = (Assignment)cGroup_2_1_0.eContents().get(2);
		private final RuleCall cDomainVisionStatementSTRINGTerminalRuleCall_2_1_0_2_0 = (RuleCall)cDomainVisionStatementAssignment_2_1_0_2.eContents().get(0);
		private final Assignment cSubdomainsAssignment_2_1_1 = (Assignment)cUnorderedGroup_2_1.eContents().get(1);
		private final RuleCall cSubdomainsSubdomainParserRuleCall_2_1_1_0 = (RuleCall)cSubdomainsAssignment_2_1_1.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//Domain:
		//	'Domain' name=ID (OPEN (('domainVisionStatement' '='? domainVisionStatement=STRING)? & subdomains+=Subdomain*)
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//'Domain' name=ID (OPEN (('domainVisionStatement' '='? domainVisionStatement=STRING)? & subdomains+=Subdomain*) CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//'Domain'
		public Keyword getDomainKeyword_0() { return cDomainKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(OPEN (('domainVisionStatement' '='? domainVisionStatement=STRING)? & subdomains+=Subdomain*) CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//(('domainVisionStatement' '='? domainVisionStatement=STRING)? & subdomains+=Subdomain*)
		public UnorderedGroup getUnorderedGroup_2_1() { return cUnorderedGroup_2_1; }
		
		//('domainVisionStatement' '='? domainVisionStatement=STRING)?
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//'domainVisionStatement'
		public Keyword getDomainVisionStatementKeyword_2_1_0_0() { return cDomainVisionStatementKeyword_2_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_0_1() { return cEqualsSignKeyword_2_1_0_1; }
		
		//domainVisionStatement=STRING
		public Assignment getDomainVisionStatementAssignment_2_1_0_2() { return cDomainVisionStatementAssignment_2_1_0_2; }
		
		//STRING
		public RuleCall getDomainVisionStatementSTRINGTerminalRuleCall_2_1_0_2_0() { return cDomainVisionStatementSTRINGTerminalRuleCall_2_1_0_2_0; }
		
		//subdomains+=Subdomain*
		public Assignment getSubdomainsAssignment_2_1_1() { return cSubdomainsAssignment_2_1_1; }
		
		//Subdomain
		public RuleCall getSubdomainsSubdomainParserRuleCall_2_1_1_0() { return cSubdomainsSubdomainParserRuleCall_2_1_1_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class SubdomainElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Subdomain");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubdomainKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_2_1 = (UnorderedGroup)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cUnorderedGroup_2_1.eContents().get(0);
		private final Keyword cTypeKeyword_2_1_0_0 = (Keyword)cGroup_2_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_0_1 = (Keyword)cGroup_2_1_0.eContents().get(1);
		private final Assignment cTypeAssignment_2_1_0_2 = (Assignment)cGroup_2_1_0.eContents().get(2);
		private final RuleCall cTypeSubDomainTypeEnumRuleCall_2_1_0_2_0 = (RuleCall)cTypeAssignment_2_1_0_2.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cUnorderedGroup_2_1.eContents().get(1);
		private final Keyword cDomainVisionStatementKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1_1 = (Keyword)cGroup_2_1_1.eContents().get(1);
		private final Assignment cDomainVisionStatementAssignment_2_1_1_2 = (Assignment)cGroup_2_1_1.eContents().get(2);
		private final RuleCall cDomainVisionStatementSTRINGTerminalRuleCall_2_1_1_2_0 = (RuleCall)cDomainVisionStatementAssignment_2_1_1_2.eContents().get(0);
		private final Assignment cEntitiesAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final RuleCall cEntitiesEntityParserRuleCall_2_2_0 = (RuleCall)cEntitiesAssignment_2_2.eContents().get(0);
		private final Assignment cServicesAssignment_2_3 = (Assignment)cGroup_2.eContents().get(3);
		private final RuleCall cServicesServiceParserRuleCall_2_3_0 = (RuleCall)cServicesAssignment_2_3.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_4 = (RuleCall)cGroup_2.eContents().get(4);
		
		//Subdomain:
		//	'Subdomain' name=ID (OPEN (('type' '='? type=SubDomainType)? & ('domainVisionStatement' '='?
		//	domainVisionStatement=STRING)?) entities+=Entity*
		//	services+=Service*
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//'Subdomain' name=ID (OPEN (('type' '='? type=SubDomainType)? & ('domainVisionStatement' '='?
		//domainVisionStatement=STRING)?) entities+=Entity* services+=Service* CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//'Subdomain'
		public Keyword getSubdomainKeyword_0() { return cSubdomainKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(OPEN (('type' '='? type=SubDomainType)? & ('domainVisionStatement' '='? domainVisionStatement=STRING)?)
		//entities+=Entity* services+=Service* CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//(('type' '='? type=SubDomainType)? & ('domainVisionStatement' '='? domainVisionStatement=STRING)?)
		public UnorderedGroup getUnorderedGroup_2_1() { return cUnorderedGroup_2_1; }
		
		//('type' '='? type=SubDomainType)?
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//'type'
		public Keyword getTypeKeyword_2_1_0_0() { return cTypeKeyword_2_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_0_1() { return cEqualsSignKeyword_2_1_0_1; }
		
		//type=SubDomainType
		public Assignment getTypeAssignment_2_1_0_2() { return cTypeAssignment_2_1_0_2; }
		
		//SubDomainType
		public RuleCall getTypeSubDomainTypeEnumRuleCall_2_1_0_2_0() { return cTypeSubDomainTypeEnumRuleCall_2_1_0_2_0; }
		
		//('domainVisionStatement' '='? domainVisionStatement=STRING)?
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//'domainVisionStatement'
		public Keyword getDomainVisionStatementKeyword_2_1_1_0() { return cDomainVisionStatementKeyword_2_1_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1_1() { return cEqualsSignKeyword_2_1_1_1; }
		
		//domainVisionStatement=STRING
		public Assignment getDomainVisionStatementAssignment_2_1_1_2() { return cDomainVisionStatementAssignment_2_1_1_2; }
		
		//STRING
		public RuleCall getDomainVisionStatementSTRINGTerminalRuleCall_2_1_1_2_0() { return cDomainVisionStatementSTRINGTerminalRuleCall_2_1_1_2_0; }
		
		//entities+=Entity*
		public Assignment getEntitiesAssignment_2_2() { return cEntitiesAssignment_2_2; }
		
		//Entity
		public RuleCall getEntitiesEntityParserRuleCall_2_2_0() { return cEntitiesEntityParserRuleCall_2_2_0; }
		
		//services+=Service*
		public Assignment getServicesAssignment_2_3() { return cServicesAssignment_2_3; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_2_3_0() { return cServicesServiceParserRuleCall_2_3_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_4() { return cCLOSETerminalRuleCall_2_4; }
	}
	public class RelationshipElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Relationship");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSymmetricRelationshipParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cUpstreamDownstreamRelationshipParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//Relationship:
		//	SymmetricRelationship | UpstreamDownstreamRelationship;
		@Override public ParserRule getRule() { return rule; }
		
		//SymmetricRelationship | UpstreamDownstreamRelationship
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//SymmetricRelationship
		public RuleCall getSymmetricRelationshipParserRuleCall_0() { return cSymmetricRelationshipParserRuleCall_0; }
		
		//UpstreamDownstreamRelationship
		public RuleCall getUpstreamDownstreamRelationshipParserRuleCall_1() { return cUpstreamDownstreamRelationshipParserRuleCall_1; }
	}
	public class SymmetricRelationshipElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.SymmetricRelationship");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPartnershipParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSharedKernelParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//SymmetricRelationship:
		//	Partnership | SharedKernel;
		@Override public ParserRule getRule() { return rule; }
		
		//Partnership | SharedKernel
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Partnership
		public RuleCall getPartnershipParserRuleCall_0() { return cPartnershipParserRuleCall_0; }
		
		//SharedKernel
		public RuleCall getSharedKernelParserRuleCall_1() { return cSharedKernelParserRuleCall_1; }
	}
	public class PartnershipElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Partnership");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cParticipant1Assignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_0_0_0 = (CrossReference)cParticipant1Assignment_0_0_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_0_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cPKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Keyword cRightSquareBracketKeyword_0_0_3 = (Keyword)cGroup_0_0.eContents().get(3);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4 = (Keyword)cGroup_0_0.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_0_0_5 = (Keyword)cGroup_0_0.eContents().get(5);
		private final Keyword cPKeyword_0_0_6 = (Keyword)cGroup_0_0.eContents().get(6);
		private final Keyword cRightSquareBracketKeyword_0_0_7 = (Keyword)cGroup_0_0.eContents().get(7);
		private final Assignment cParticipant2Assignment_0_0_8 = (Assignment)cGroup_0_0.eContents().get(8);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_0_8_0 = (CrossReference)cParticipant2Assignment_0_0_8.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_0_8_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_1_0 = (Keyword)cGroup_0_1.eContents().get(0);
		private final Keyword cPKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_0_1_2 = (Keyword)cGroup_0_1.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_1_3 = (Assignment)cGroup_0_1.eContents().get(3);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_1_3_0 = (CrossReference)cParticipant1Assignment_0_1_3.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_1_3_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4 = (Keyword)cGroup_0_1.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_0_1_5 = (Keyword)cGroup_0_1.eContents().get(5);
		private final Keyword cPKeyword_0_1_6 = (Keyword)cGroup_0_1.eContents().get(6);
		private final Keyword cRightSquareBracketKeyword_0_1_7 = (Keyword)cGroup_0_1.eContents().get(7);
		private final Assignment cParticipant2Assignment_0_1_8 = (Assignment)cGroup_0_1.eContents().get(8);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_1_8_0 = (CrossReference)cParticipant2Assignment_0_1_8.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_1_8_0.eContents().get(1);
		private final Group cGroup_0_2 = (Group)cAlternatives_0.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_2_0 = (Assignment)cGroup_0_2.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_2_0_0 = (CrossReference)cParticipant1Assignment_0_2_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_2_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_2_1 = (Keyword)cGroup_0_2.eContents().get(1);
		private final Keyword cPKeyword_0_2_2 = (Keyword)cGroup_0_2.eContents().get(2);
		private final Keyword cRightSquareBracketKeyword_0_2_3 = (Keyword)cGroup_0_2.eContents().get(3);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4 = (Keyword)cGroup_0_2.eContents().get(4);
		private final Assignment cParticipant2Assignment_0_2_5 = (Assignment)cGroup_0_2.eContents().get(5);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_2_5_0 = (CrossReference)cParticipant2Assignment_0_2_5.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_2_5_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_2_6 = (Keyword)cGroup_0_2.eContents().get(6);
		private final Keyword cPKeyword_0_2_7 = (Keyword)cGroup_0_2.eContents().get(7);
		private final Keyword cRightSquareBracketKeyword_0_2_8 = (Keyword)cGroup_0_2.eContents().get(8);
		private final Group cGroup_0_3 = (Group)cAlternatives_0.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_0_3_0 = (Keyword)cGroup_0_3.eContents().get(0);
		private final Keyword cPKeyword_0_3_1 = (Keyword)cGroup_0_3.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_0_3_2 = (Keyword)cGroup_0_3.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_3_3 = (Assignment)cGroup_0_3.eContents().get(3);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_3_3_0 = (CrossReference)cParticipant1Assignment_0_3_3.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_3_3_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4 = (Keyword)cGroup_0_3.eContents().get(4);
		private final Assignment cParticipant2Assignment_0_3_5 = (Assignment)cGroup_0_3.eContents().get(5);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_3_5_0 = (CrossReference)cParticipant2Assignment_0_3_5.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_3_5_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_3_6 = (Keyword)cGroup_0_3.eContents().get(6);
		private final Keyword cPKeyword_0_3_7 = (Keyword)cGroup_0_3.eContents().get(7);
		private final Keyword cRightSquareBracketKeyword_0_3_8 = (Keyword)cGroup_0_3.eContents().get(8);
		private final Group cGroup_0_4 = (Group)cAlternatives_0.eContents().get(4);
		private final Assignment cParticipant1Assignment_0_4_0 = (Assignment)cGroup_0_4.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_4_0_0 = (CrossReference)cParticipant1Assignment_0_4_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_4_0_0.eContents().get(1);
		private final Keyword cPartnershipKeyword_0_4_1 = (Keyword)cGroup_0_4.eContents().get(1);
		private final Assignment cParticipant2Assignment_0_4_2 = (Assignment)cGroup_0_4.eContents().get(2);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_4_2_0 = (CrossReference)cParticipant2Assignment_0_4_2.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_4_2_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cColonKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cImplementationTechnologyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
		private final Assignment cImplementationTechnologyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
		private final RuleCall cImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0 = (RuleCall)cImplementationTechnologyAssignment_2_1_2.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//Partnership:
		//	(participant1=[BoundedContext] '[' 'P' ']' '<->' '[' 'P' ']' participant2=[BoundedContext] | '[' 'P' ']'
		//	participant1=[BoundedContext] '<->' '[' 'P' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'P'
		//	']' '<->' participant2=[BoundedContext] '[' 'P' ']' | '[' 'P' ']' participant1=[BoundedContext] '<->'
		//	participant2=[BoundedContext] '[' 'P' ']' | participant1=[BoundedContext] 'Partnership' participant2=[BoundedContext])
		//	(':' name=ID)? (OPEN ('implementationTechnology' '='? implementationTechnology=STRING)?
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//(participant1=[BoundedContext] '[' 'P' ']' '<->' '[' 'P' ']' participant2=[BoundedContext] | '[' 'P' ']'
		//participant1=[BoundedContext] '<->' '[' 'P' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'P'
		//']' '<->' participant2=[BoundedContext] '[' 'P' ']' | '[' 'P' ']' participant1=[BoundedContext] '<->'
		//participant2=[BoundedContext] '[' 'P' ']' | participant1=[BoundedContext] 'Partnership' participant2=[BoundedContext])
		//(':' name=ID)? (OPEN ('implementationTechnology' '='? implementationTechnology=STRING)? CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//(participant1=[BoundedContext] '[' 'P' ']' '<->' '[' 'P' ']' participant2=[BoundedContext] | '[' 'P' ']'
		//participant1=[BoundedContext] '<->' '[' 'P' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'P'
		//']' '<->' participant2=[BoundedContext] '[' 'P' ']' | '[' 'P' ']' participant1=[BoundedContext] '<->'
		//participant2=[BoundedContext] '[' 'P' ']' | participant1=[BoundedContext] 'Partnership' participant2=[BoundedContext])
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//participant1=[BoundedContext] '[' 'P' ']' '<->' '[' 'P' ']' participant2=[BoundedContext]
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_0_0() { return cParticipant1Assignment_0_0_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_0_0_0() { return cParticipant1BoundedContextCrossReference_0_0_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_1() { return cLeftSquareBracketKeyword_0_0_1; }
		
		//'P'
		public Keyword getPKeyword_0_0_2() { return cPKeyword_0_0_2; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_3() { return cRightSquareBracketKeyword_0_0_3; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_5() { return cLeftSquareBracketKeyword_0_0_5; }
		
		//'P'
		public Keyword getPKeyword_0_0_6() { return cPKeyword_0_0_6; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_7() { return cRightSquareBracketKeyword_0_0_7; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_0_8() { return cParticipant2Assignment_0_0_8; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_0_8_0() { return cParticipant2BoundedContextCrossReference_0_0_8_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1; }
		
		//'[' 'P' ']' participant1=[BoundedContext] '<->' '[' 'P' ']' participant2=[BoundedContext]
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_0() { return cLeftSquareBracketKeyword_0_1_0; }
		
		//'P'
		public Keyword getPKeyword_0_1_1() { return cPKeyword_0_1_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_2() { return cRightSquareBracketKeyword_0_1_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_1_3() { return cParticipant1Assignment_0_1_3; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_1_3_0() { return cParticipant1BoundedContextCrossReference_0_1_3_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_5() { return cLeftSquareBracketKeyword_0_1_5; }
		
		//'P'
		public Keyword getPKeyword_0_1_6() { return cPKeyword_0_1_6; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_7() { return cRightSquareBracketKeyword_0_1_7; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_1_8() { return cParticipant2Assignment_0_1_8; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_1_8_0() { return cParticipant2BoundedContextCrossReference_0_1_8_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1; }
		
		//participant1=[BoundedContext] '[' 'P' ']' '<->' participant2=[BoundedContext] '[' 'P' ']'
		public Group getGroup_0_2() { return cGroup_0_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_2_0() { return cParticipant1Assignment_0_2_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_2_0_0() { return cParticipant1BoundedContextCrossReference_0_2_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_1() { return cLeftSquareBracketKeyword_0_2_1; }
		
		//'P'
		public Keyword getPKeyword_0_2_2() { return cPKeyword_0_2_2; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_3() { return cRightSquareBracketKeyword_0_2_3; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_2_5() { return cParticipant2Assignment_0_2_5; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_2_5_0() { return cParticipant2BoundedContextCrossReference_0_2_5_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_6() { return cLeftSquareBracketKeyword_0_2_6; }
		
		//'P'
		public Keyword getPKeyword_0_2_7() { return cPKeyword_0_2_7; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_8() { return cRightSquareBracketKeyword_0_2_8; }
		
		//'[' 'P' ']' participant1=[BoundedContext] '<->' participant2=[BoundedContext] '[' 'P' ']'
		public Group getGroup_0_3() { return cGroup_0_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_0() { return cLeftSquareBracketKeyword_0_3_0; }
		
		//'P'
		public Keyword getPKeyword_0_3_1() { return cPKeyword_0_3_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_2() { return cRightSquareBracketKeyword_0_3_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_3_3() { return cParticipant1Assignment_0_3_3; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_3_3_0() { return cParticipant1BoundedContextCrossReference_0_3_3_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_3_5() { return cParticipant2Assignment_0_3_5; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_3_5_0() { return cParticipant2BoundedContextCrossReference_0_3_5_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_6() { return cLeftSquareBracketKeyword_0_3_6; }
		
		//'P'
		public Keyword getPKeyword_0_3_7() { return cPKeyword_0_3_7; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_8() { return cRightSquareBracketKeyword_0_3_8; }
		
		//participant1=[BoundedContext] 'Partnership' participant2=[BoundedContext]
		public Group getGroup_0_4() { return cGroup_0_4; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_4_0() { return cParticipant1Assignment_0_4_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_4_0_0() { return cParticipant1BoundedContextCrossReference_0_4_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1; }
		
		//'Partnership'
		public Keyword getPartnershipKeyword_0_4_1() { return cPartnershipKeyword_0_4_1; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_4_2() { return cParticipant2Assignment_0_4_2; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_4_2_0() { return cParticipant2BoundedContextCrossReference_0_4_2_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1; }
		
		//(':' name=ID)?
		public Group getGroup_1() { return cGroup_1; }
		
		//':'
		public Keyword getColonKeyword_1_0() { return cColonKeyword_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_1_0() { return cNameIDTerminalRuleCall_1_1_0; }
		
		//(OPEN ('implementationTechnology' '='? implementationTechnology=STRING)? CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//('implementationTechnology' '='? implementationTechnology=STRING)?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'implementationTechnology'
		public Keyword getImplementationTechnologyKeyword_2_1_0() { return cImplementationTechnologyKeyword_2_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
		
		//implementationTechnology=STRING
		public Assignment getImplementationTechnologyAssignment_2_1_2() { return cImplementationTechnologyAssignment_2_1_2; }
		
		//STRING
		public RuleCall getImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0() { return cImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class SharedKernelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.SharedKernel");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cParticipant1Assignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_0_0_0 = (CrossReference)cParticipant1Assignment_0_0_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_0_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cSKKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Keyword cRightSquareBracketKeyword_0_0_3 = (Keyword)cGroup_0_0.eContents().get(3);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4 = (Keyword)cGroup_0_0.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_0_0_5 = (Keyword)cGroup_0_0.eContents().get(5);
		private final Keyword cSKKeyword_0_0_6 = (Keyword)cGroup_0_0.eContents().get(6);
		private final Keyword cRightSquareBracketKeyword_0_0_7 = (Keyword)cGroup_0_0.eContents().get(7);
		private final Assignment cParticipant2Assignment_0_0_8 = (Assignment)cGroup_0_0.eContents().get(8);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_0_8_0 = (CrossReference)cParticipant2Assignment_0_0_8.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_0_8_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_1_0 = (Keyword)cGroup_0_1.eContents().get(0);
		private final Keyword cSKKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_0_1_2 = (Keyword)cGroup_0_1.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_1_3 = (Assignment)cGroup_0_1.eContents().get(3);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_1_3_0 = (CrossReference)cParticipant1Assignment_0_1_3.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_1_3_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4 = (Keyword)cGroup_0_1.eContents().get(4);
		private final Keyword cLeftSquareBracketKeyword_0_1_5 = (Keyword)cGroup_0_1.eContents().get(5);
		private final Keyword cSKKeyword_0_1_6 = (Keyword)cGroup_0_1.eContents().get(6);
		private final Keyword cRightSquareBracketKeyword_0_1_7 = (Keyword)cGroup_0_1.eContents().get(7);
		private final Assignment cParticipant2Assignment_0_1_8 = (Assignment)cGroup_0_1.eContents().get(8);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_1_8_0 = (CrossReference)cParticipant2Assignment_0_1_8.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_1_8_0.eContents().get(1);
		private final Group cGroup_0_2 = (Group)cAlternatives_0.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_2_0 = (Assignment)cGroup_0_2.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_2_0_0 = (CrossReference)cParticipant1Assignment_0_2_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_2_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_2_1 = (Keyword)cGroup_0_2.eContents().get(1);
		private final Keyword cSKKeyword_0_2_2 = (Keyword)cGroup_0_2.eContents().get(2);
		private final Keyword cRightSquareBracketKeyword_0_2_3 = (Keyword)cGroup_0_2.eContents().get(3);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4 = (Keyword)cGroup_0_2.eContents().get(4);
		private final Assignment cParticipant2Assignment_0_2_5 = (Assignment)cGroup_0_2.eContents().get(5);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_2_5_0 = (CrossReference)cParticipant2Assignment_0_2_5.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_2_5_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_2_6 = (Keyword)cGroup_0_2.eContents().get(6);
		private final Keyword cSKKeyword_0_2_7 = (Keyword)cGroup_0_2.eContents().get(7);
		private final Keyword cRightSquareBracketKeyword_0_2_8 = (Keyword)cGroup_0_2.eContents().get(8);
		private final Group cGroup_0_3 = (Group)cAlternatives_0.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_0_3_0 = (Keyword)cGroup_0_3.eContents().get(0);
		private final Keyword cSKKeyword_0_3_1 = (Keyword)cGroup_0_3.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_0_3_2 = (Keyword)cGroup_0_3.eContents().get(2);
		private final Assignment cParticipant1Assignment_0_3_3 = (Assignment)cGroup_0_3.eContents().get(3);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_3_3_0 = (CrossReference)cParticipant1Assignment_0_3_3.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_3_3_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4 = (Keyword)cGroup_0_3.eContents().get(4);
		private final Assignment cParticipant2Assignment_0_3_5 = (Assignment)cGroup_0_3.eContents().get(5);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_3_5_0 = (CrossReference)cParticipant2Assignment_0_3_5.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_3_5_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_3_6 = (Keyword)cGroup_0_3.eContents().get(6);
		private final Keyword cSKKeyword_0_3_7 = (Keyword)cGroup_0_3.eContents().get(7);
		private final Keyword cRightSquareBracketKeyword_0_3_8 = (Keyword)cGroup_0_3.eContents().get(8);
		private final Group cGroup_0_4 = (Group)cAlternatives_0.eContents().get(4);
		private final Assignment cParticipant1Assignment_0_4_0 = (Assignment)cGroup_0_4.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_4_0_0 = (CrossReference)cParticipant1Assignment_0_4_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_4_0_0.eContents().get(1);
		private final Keyword cSharedKernelKeyword_0_4_1 = (Keyword)cGroup_0_4.eContents().get(1);
		private final Assignment cParticipant2Assignment_0_4_2 = (Assignment)cGroup_0_4.eContents().get(2);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_4_2_0 = (CrossReference)cParticipant2Assignment_0_4_2.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_4_2_0.eContents().get(1);
		private final Group cGroup_0_5 = (Group)cAlternatives_0.eContents().get(5);
		private final Assignment cParticipant1Assignment_0_5_0 = (Assignment)cGroup_0_5.eContents().get(0);
		private final CrossReference cParticipant1BoundedContextCrossReference_0_5_0_0 = (CrossReference)cParticipant1Assignment_0_5_0.eContents().get(0);
		private final RuleCall cParticipant1BoundedContextIDTerminalRuleCall_0_5_0_0_1 = (RuleCall)cParticipant1BoundedContextCrossReference_0_5_0_0.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusGreaterThanSignKeyword_0_5_1 = (Keyword)cGroup_0_5.eContents().get(1);
		private final Assignment cParticipant2Assignment_0_5_2 = (Assignment)cGroup_0_5.eContents().get(2);
		private final CrossReference cParticipant2BoundedContextCrossReference_0_5_2_0 = (CrossReference)cParticipant2Assignment_0_5_2.eContents().get(0);
		private final RuleCall cParticipant2BoundedContextIDTerminalRuleCall_0_5_2_0_1 = (RuleCall)cParticipant2BoundedContextCrossReference_0_5_2_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cColonKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cImplementationTechnologyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
		private final Assignment cImplementationTechnologyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
		private final RuleCall cImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0 = (RuleCall)cImplementationTechnologyAssignment_2_1_2.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//SharedKernel:
		//	(participant1=[BoundedContext] '[' 'SK' ']' '<->' '[' 'SK' ']' participant2=[BoundedContext] | '[' 'SK' ']'
		//	participant1=[BoundedContext] '<->' '[' 'SK' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '['
		//	'SK' ']' '<->' participant2=[BoundedContext] '[' 'SK' ']' | '[' 'SK' ']' participant1=[BoundedContext] '<->'
		//	participant2=[BoundedContext] '[' 'SK' ']' | participant1=[BoundedContext] 'Shared-Kernel'
		//	participant2=[BoundedContext] | participant1=[BoundedContext] '<->' participant2=[BoundedContext]) (':' name=ID)?
		//	(OPEN ('implementationTechnology' '='? implementationTechnology=STRING)?
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//(participant1=[BoundedContext] '[' 'SK' ']' '<->' '[' 'SK' ']' participant2=[BoundedContext] | '[' 'SK' ']'
		//participant1=[BoundedContext] '<->' '[' 'SK' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'SK'
		//']' '<->' participant2=[BoundedContext] '[' 'SK' ']' | '[' 'SK' ']' participant1=[BoundedContext] '<->'
		//participant2=[BoundedContext] '[' 'SK' ']' | participant1=[BoundedContext] 'Shared-Kernel'
		//participant2=[BoundedContext] | participant1=[BoundedContext] '<->' participant2=[BoundedContext]) (':' name=ID)? (OPEN
		//('implementationTechnology' '='? implementationTechnology=STRING)? CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//(participant1=[BoundedContext] '[' 'SK' ']' '<->' '[' 'SK' ']' participant2=[BoundedContext] | '[' 'SK' ']'
		//participant1=[BoundedContext] '<->' '[' 'SK' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'SK'
		//']' '<->' participant2=[BoundedContext] '[' 'SK' ']' | '[' 'SK' ']' participant1=[BoundedContext] '<->'
		//participant2=[BoundedContext] '[' 'SK' ']' | participant1=[BoundedContext] 'Shared-Kernel'
		//participant2=[BoundedContext] | participant1=[BoundedContext] '<->' participant2=[BoundedContext])
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//participant1=[BoundedContext] '[' 'SK' ']' '<->' '[' 'SK' ']' participant2=[BoundedContext]
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_0_0() { return cParticipant1Assignment_0_0_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_0_0_0() { return cParticipant1BoundedContextCrossReference_0_0_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_0_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_1() { return cLeftSquareBracketKeyword_0_0_1; }
		
		//'SK'
		public Keyword getSKKeyword_0_0_2() { return cSKKeyword_0_0_2; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_3() { return cRightSquareBracketKeyword_0_0_3; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_5() { return cLeftSquareBracketKeyword_0_0_5; }
		
		//'SK'
		public Keyword getSKKeyword_0_0_6() { return cSKKeyword_0_0_6; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_7() { return cRightSquareBracketKeyword_0_0_7; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_0_8() { return cParticipant2Assignment_0_0_8; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_0_8_0() { return cParticipant2BoundedContextCrossReference_0_0_8_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_0_8_0_1; }
		
		//'[' 'SK' ']' participant1=[BoundedContext] '<->' '[' 'SK' ']' participant2=[BoundedContext]
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_0() { return cLeftSquareBracketKeyword_0_1_0; }
		
		//'SK'
		public Keyword getSKKeyword_0_1_1() { return cSKKeyword_0_1_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_2() { return cRightSquareBracketKeyword_0_1_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_1_3() { return cParticipant1Assignment_0_1_3; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_1_3_0() { return cParticipant1BoundedContextCrossReference_0_1_3_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_1_3_0_1; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_1_4; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_5() { return cLeftSquareBracketKeyword_0_1_5; }
		
		//'SK'
		public Keyword getSKKeyword_0_1_6() { return cSKKeyword_0_1_6; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_7() { return cRightSquareBracketKeyword_0_1_7; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_1_8() { return cParticipant2Assignment_0_1_8; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_1_8_0() { return cParticipant2BoundedContextCrossReference_0_1_8_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_1_8_0_1; }
		
		//participant1=[BoundedContext] '[' 'SK' ']' '<->' participant2=[BoundedContext] '[' 'SK' ']'
		public Group getGroup_0_2() { return cGroup_0_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_2_0() { return cParticipant1Assignment_0_2_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_2_0_0() { return cParticipant1BoundedContextCrossReference_0_2_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_2_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_1() { return cLeftSquareBracketKeyword_0_2_1; }
		
		//'SK'
		public Keyword getSKKeyword_0_2_2() { return cSKKeyword_0_2_2; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_3() { return cRightSquareBracketKeyword_0_2_3; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_2_4; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_2_5() { return cParticipant2Assignment_0_2_5; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_2_5_0() { return cParticipant2BoundedContextCrossReference_0_2_5_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_2_5_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_6() { return cLeftSquareBracketKeyword_0_2_6; }
		
		//'SK'
		public Keyword getSKKeyword_0_2_7() { return cSKKeyword_0_2_7; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_8() { return cRightSquareBracketKeyword_0_2_8; }
		
		//'[' 'SK' ']' participant1=[BoundedContext] '<->' participant2=[BoundedContext] '[' 'SK' ']'
		public Group getGroup_0_3() { return cGroup_0_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_0() { return cLeftSquareBracketKeyword_0_3_0; }
		
		//'SK'
		public Keyword getSKKeyword_0_3_1() { return cSKKeyword_0_3_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_2() { return cRightSquareBracketKeyword_0_3_2; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_3_3() { return cParticipant1Assignment_0_3_3; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_3_3_0() { return cParticipant1BoundedContextCrossReference_0_3_3_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_3_3_0_1; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_3_4; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_3_5() { return cParticipant2Assignment_0_3_5; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_3_5_0() { return cParticipant2BoundedContextCrossReference_0_3_5_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_3_5_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_6() { return cLeftSquareBracketKeyword_0_3_6; }
		
		//'SK'
		public Keyword getSKKeyword_0_3_7() { return cSKKeyword_0_3_7; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_8() { return cRightSquareBracketKeyword_0_3_8; }
		
		//participant1=[BoundedContext] 'Shared-Kernel' participant2=[BoundedContext]
		public Group getGroup_0_4() { return cGroup_0_4; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_4_0() { return cParticipant1Assignment_0_4_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_4_0_0() { return cParticipant1BoundedContextCrossReference_0_4_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_4_0_0_1; }
		
		//'Shared-Kernel'
		public Keyword getSharedKernelKeyword_0_4_1() { return cSharedKernelKeyword_0_4_1; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_4_2() { return cParticipant2Assignment_0_4_2; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_4_2_0() { return cParticipant2BoundedContextCrossReference_0_4_2_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_4_2_0_1; }
		
		//participant1=[BoundedContext] '<->' participant2=[BoundedContext]
		public Group getGroup_0_5() { return cGroup_0_5; }
		
		//participant1=[BoundedContext]
		public Assignment getParticipant1Assignment_0_5_0() { return cParticipant1Assignment_0_5_0; }
		
		//[BoundedContext]
		public CrossReference getParticipant1BoundedContextCrossReference_0_5_0_0() { return cParticipant1BoundedContextCrossReference_0_5_0_0; }
		
		//ID
		public RuleCall getParticipant1BoundedContextIDTerminalRuleCall_0_5_0_0_1() { return cParticipant1BoundedContextIDTerminalRuleCall_0_5_0_0_1; }
		
		//'<->'
		public Keyword getLessThanSignHyphenMinusGreaterThanSignKeyword_0_5_1() { return cLessThanSignHyphenMinusGreaterThanSignKeyword_0_5_1; }
		
		//participant2=[BoundedContext]
		public Assignment getParticipant2Assignment_0_5_2() { return cParticipant2Assignment_0_5_2; }
		
		//[BoundedContext]
		public CrossReference getParticipant2BoundedContextCrossReference_0_5_2_0() { return cParticipant2BoundedContextCrossReference_0_5_2_0; }
		
		//ID
		public RuleCall getParticipant2BoundedContextIDTerminalRuleCall_0_5_2_0_1() { return cParticipant2BoundedContextIDTerminalRuleCall_0_5_2_0_1; }
		
		//(':' name=ID)?
		public Group getGroup_1() { return cGroup_1; }
		
		//':'
		public Keyword getColonKeyword_1_0() { return cColonKeyword_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_1_0() { return cNameIDTerminalRuleCall_1_1_0; }
		
		//(OPEN ('implementationTechnology' '='? implementationTechnology=STRING)? CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//('implementationTechnology' '='? implementationTechnology=STRING)?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'implementationTechnology'
		public Keyword getImplementationTechnologyKeyword_2_1_0() { return cImplementationTechnologyKeyword_2_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
		
		//implementationTechnology=STRING
		public Assignment getImplementationTechnologyAssignment_2_1_2() { return cImplementationTechnologyAssignment_2_1_2; }
		
		//STRING
		public RuleCall getImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0() { return cImplementationTechnologySTRINGTerminalRuleCall_2_1_2_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class UpstreamDownstreamRelationshipElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UpstreamDownstreamRelationship");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cCustomerSupplierRelationshipParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0);
		private final Assignment cUpstreamAssignment_1_0_0_0 = (Assignment)cGroup_1_0_0.eContents().get(0);
		private final CrossReference cUpstreamBoundedContextCrossReference_1_0_0_0_0 = (CrossReference)cUpstreamAssignment_1_0_0_0.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_1_0_0_0_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_1_0_0_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1_0_0_1 = (Alternatives)cGroup_1_0_0.eContents().get(1);
		private final Group cGroup_1_0_0_1_0 = (Group)cAlternatives_1_0_0_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_0_1_0_0 = (Keyword)cGroup_1_0_0_1_0.eContents().get(0);
		private final Keyword cUKeyword_1_0_0_1_0_1 = (Keyword)cGroup_1_0_0_1_0.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_1_0_0_1_0_2 = (Keyword)cGroup_1_0_0_1_0.eContents().get(2);
		private final Group cGroup_1_0_0_1_1 = (Group)cAlternatives_1_0_0_1.eContents().get(1);
		private final Group cGroup_1_0_0_1_1_0 = (Group)cGroup_1_0_0_1_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_0_1_1_0_0 = (Keyword)cGroup_1_0_0_1_1_0.eContents().get(0);
		private final Group cGroup_1_0_0_1_1_0_1 = (Group)cGroup_1_0_0_1_1_0.eContents().get(1);
		private final Keyword cUKeyword_1_0_0_1_1_0_1_0 = (Keyword)cGroup_1_0_0_1_1_0_1.eContents().get(0);
		private final Keyword cCommaKeyword_1_0_0_1_1_0_1_1 = (Keyword)cGroup_1_0_0_1_1_0_1.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_1_0_0_1_1_0_2 = (Assignment)cGroup_1_0_0_1_1_0.eContents().get(2);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_2_0 = (RuleCall)cUpstreamRolesAssignment_1_0_0_1_1_0_2.eContents().get(0);
		private final Group cGroup_1_0_0_1_1_0_3 = (Group)cGroup_1_0_0_1_1_0.eContents().get(3);
		private final Keyword cCommaKeyword_1_0_0_1_1_0_3_0 = (Keyword)cGroup_1_0_0_1_1_0_3.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_1_0_0_1_1_0_3_1 = (Assignment)cGroup_1_0_0_1_1_0_3.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_3_1_0 = (RuleCall)cUpstreamRolesAssignment_1_0_0_1_1_0_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_0_1_1_1 = (Keyword)cGroup_1_0_0_1_1.eContents().get(1);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_1_0_0_2 = (Keyword)cGroup_1_0_0.eContents().get(2);
		private final Alternatives cAlternatives_1_0_0_3 = (Alternatives)cGroup_1_0_0.eContents().get(3);
		private final Group cGroup_1_0_0_3_0 = (Group)cAlternatives_1_0_0_3.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_0_3_0_0 = (Keyword)cGroup_1_0_0_3_0.eContents().get(0);
		private final Keyword cDKeyword_1_0_0_3_0_1 = (Keyword)cGroup_1_0_0_3_0.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_1_0_0_3_0_2 = (Keyword)cGroup_1_0_0_3_0.eContents().get(2);
		private final Group cGroup_1_0_0_3_1 = (Group)cAlternatives_1_0_0_3.eContents().get(1);
		private final Group cGroup_1_0_0_3_1_0 = (Group)cGroup_1_0_0_3_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_0_3_1_0_0 = (Keyword)cGroup_1_0_0_3_1_0.eContents().get(0);
		private final Group cGroup_1_0_0_3_1_0_1 = (Group)cGroup_1_0_0_3_1_0.eContents().get(1);
		private final Keyword cDKeyword_1_0_0_3_1_0_1_0 = (Keyword)cGroup_1_0_0_3_1_0_1.eContents().get(0);
		private final Keyword cCommaKeyword_1_0_0_3_1_0_1_1 = (Keyword)cGroup_1_0_0_3_1_0_1.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_1_0_0_3_1_0_2 = (Assignment)cGroup_1_0_0_3_1_0.eContents().get(2);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_2_0 = (RuleCall)cDownstreamRolesAssignment_1_0_0_3_1_0_2.eContents().get(0);
		private final Group cGroup_1_0_0_3_1_0_3 = (Group)cGroup_1_0_0_3_1_0.eContents().get(3);
		private final Keyword cCommaKeyword_1_0_0_3_1_0_3_0 = (Keyword)cGroup_1_0_0_3_1_0_3.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_1_0_0_3_1_0_3_1 = (Assignment)cGroup_1_0_0_3_1_0_3.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_3_1_0 = (RuleCall)cDownstreamRolesAssignment_1_0_0_3_1_0_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_0_3_1_1 = (Keyword)cGroup_1_0_0_3_1.eContents().get(1);
		private final Assignment cDownstreamAssignment_1_0_0_4 = (Assignment)cGroup_1_0_0.eContents().get(4);
		private final CrossReference cDownstreamBoundedContextCrossReference_1_0_0_4_0 = (CrossReference)cDownstreamAssignment_1_0_0_4.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_1_0_0_4_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_1_0_0_4_0.eContents().get(1);
		private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1);
		private final Assignment cDownstreamAssignment_1_0_1_0 = (Assignment)cGroup_1_0_1.eContents().get(0);
		private final CrossReference cDownstreamBoundedContextCrossReference_1_0_1_0_0 = (CrossReference)cDownstreamAssignment_1_0_1_0.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_1_0_1_0_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_1_0_1_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1_0_1_1 = (Alternatives)cGroup_1_0_1.eContents().get(1);
		private final Group cGroup_1_0_1_1_0 = (Group)cAlternatives_1_0_1_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_1_1_0_0 = (Keyword)cGroup_1_0_1_1_0.eContents().get(0);
		private final Keyword cDKeyword_1_0_1_1_0_1 = (Keyword)cGroup_1_0_1_1_0.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_1_0_1_1_0_2 = (Keyword)cGroup_1_0_1_1_0.eContents().get(2);
		private final Group cGroup_1_0_1_1_1 = (Group)cAlternatives_1_0_1_1.eContents().get(1);
		private final Group cGroup_1_0_1_1_1_0 = (Group)cGroup_1_0_1_1_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_1_1_1_0_0 = (Keyword)cGroup_1_0_1_1_1_0.eContents().get(0);
		private final Group cGroup_1_0_1_1_1_0_1 = (Group)cGroup_1_0_1_1_1_0.eContents().get(1);
		private final Keyword cDKeyword_1_0_1_1_1_0_1_0 = (Keyword)cGroup_1_0_1_1_1_0_1.eContents().get(0);
		private final Keyword cCommaKeyword_1_0_1_1_1_0_1_1 = (Keyword)cGroup_1_0_1_1_1_0_1.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_1_0_1_1_1_0_2 = (Assignment)cGroup_1_0_1_1_1_0.eContents().get(2);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_2_0 = (RuleCall)cDownstreamRolesAssignment_1_0_1_1_1_0_2.eContents().get(0);
		private final Group cGroup_1_0_1_1_1_0_3 = (Group)cGroup_1_0_1_1_1_0.eContents().get(3);
		private final Keyword cCommaKeyword_1_0_1_1_1_0_3_0 = (Keyword)cGroup_1_0_1_1_1_0_3.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_1_0_1_1_1_0_3_1 = (Assignment)cGroup_1_0_1_1_1_0_3.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_3_1_0 = (RuleCall)cDownstreamRolesAssignment_1_0_1_1_1_0_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_1_1_1_1 = (Keyword)cGroup_1_0_1_1_1.eContents().get(1);
		private final Keyword cLessThanSignHyphenMinusKeyword_1_0_1_2 = (Keyword)cGroup_1_0_1.eContents().get(2);
		private final Alternatives cAlternatives_1_0_1_3 = (Alternatives)cGroup_1_0_1.eContents().get(3);
		private final Group cGroup_1_0_1_3_0 = (Group)cAlternatives_1_0_1_3.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_1_3_0_0 = (Keyword)cGroup_1_0_1_3_0.eContents().get(0);
		private final Keyword cUKeyword_1_0_1_3_0_1 = (Keyword)cGroup_1_0_1_3_0.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_1_0_1_3_0_2 = (Keyword)cGroup_1_0_1_3_0.eContents().get(2);
		private final Group cGroup_1_0_1_3_1 = (Group)cAlternatives_1_0_1_3.eContents().get(1);
		private final Group cGroup_1_0_1_3_1_0 = (Group)cGroup_1_0_1_3_1.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1_0_1_3_1_0_0 = (Keyword)cGroup_1_0_1_3_1_0.eContents().get(0);
		private final Group cGroup_1_0_1_3_1_0_1 = (Group)cGroup_1_0_1_3_1_0.eContents().get(1);
		private final Keyword cUKeyword_1_0_1_3_1_0_1_0 = (Keyword)cGroup_1_0_1_3_1_0_1.eContents().get(0);
		private final Keyword cCommaKeyword_1_0_1_3_1_0_1_1 = (Keyword)cGroup_1_0_1_3_1_0_1.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_1_0_1_3_1_0_2 = (Assignment)cGroup_1_0_1_3_1_0.eContents().get(2);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_2_0 = (RuleCall)cUpstreamRolesAssignment_1_0_1_3_1_0_2.eContents().get(0);
		private final Group cGroup_1_0_1_3_1_0_3 = (Group)cGroup_1_0_1_3_1_0.eContents().get(3);
		private final Keyword cCommaKeyword_1_0_1_3_1_0_3_0 = (Keyword)cGroup_1_0_1_3_1_0_3.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_1_0_1_3_1_0_3_1 = (Assignment)cGroup_1_0_1_3_1_0_3.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_3_1_0 = (RuleCall)cUpstreamRolesAssignment_1_0_1_3_1_0_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_1_3_1_1 = (Keyword)cGroup_1_0_1_3_1.eContents().get(1);
		private final Assignment cUpstreamAssignment_1_0_1_4 = (Assignment)cGroup_1_0_1.eContents().get(4);
		private final CrossReference cUpstreamBoundedContextCrossReference_1_0_1_4_0 = (CrossReference)cUpstreamAssignment_1_0_1_4.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_1_0_1_4_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_1_0_1_4_0.eContents().get(1);
		private final Group cGroup_1_0_2 = (Group)cAlternatives_1_0.eContents().get(2);
		private final Assignment cUpstreamAssignment_1_0_2_0 = (Assignment)cGroup_1_0_2.eContents().get(0);
		private final CrossReference cUpstreamBoundedContextCrossReference_1_0_2_0_0 = (CrossReference)cUpstreamAssignment_1_0_2_0.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_1_0_2_0_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_1_0_2_0_0.eContents().get(1);
		private final Group cGroup_1_0_2_1 = (Group)cGroup_1_0_2.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_1_0_2_1_0 = (Keyword)cGroup_1_0_2_1.eContents().get(0);
		private final Group cGroup_1_0_2_1_1 = (Group)cGroup_1_0_2_1.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_1_0_2_1_1_0 = (Assignment)cGroup_1_0_2_1_1.eContents().get(0);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_0_0 = (RuleCall)cUpstreamRolesAssignment_1_0_2_1_1_0.eContents().get(0);
		private final Group cGroup_1_0_2_1_1_1 = (Group)cGroup_1_0_2_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_0_2_1_1_1_0 = (Keyword)cGroup_1_0_2_1_1_1.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_1_0_2_1_1_1_1 = (Assignment)cGroup_1_0_2_1_1_1.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_1_1_0 = (RuleCall)cUpstreamRolesAssignment_1_0_2_1_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_2_1_2 = (Keyword)cGroup_1_0_2_1.eContents().get(2);
		private final Keyword cUpstreamDownstreamKeyword_1_0_2_2 = (Keyword)cGroup_1_0_2.eContents().get(2);
		private final Group cGroup_1_0_2_3 = (Group)cGroup_1_0_2.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_1_0_2_3_0 = (Keyword)cGroup_1_0_2_3.eContents().get(0);
		private final Group cGroup_1_0_2_3_1 = (Group)cGroup_1_0_2_3.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_1_0_2_3_1_0 = (Assignment)cGroup_1_0_2_3_1.eContents().get(0);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_0_0 = (RuleCall)cDownstreamRolesAssignment_1_0_2_3_1_0.eContents().get(0);
		private final Group cGroup_1_0_2_3_1_1 = (Group)cGroup_1_0_2_3_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_0_2_3_1_1_0 = (Keyword)cGroup_1_0_2_3_1_1.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_1_0_2_3_1_1_1 = (Assignment)cGroup_1_0_2_3_1_1.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_1_1_0 = (RuleCall)cDownstreamRolesAssignment_1_0_2_3_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_2_3_2 = (Keyword)cGroup_1_0_2_3.eContents().get(2);
		private final Assignment cDownstreamAssignment_1_0_2_4 = (Assignment)cGroup_1_0_2.eContents().get(4);
		private final CrossReference cDownstreamBoundedContextCrossReference_1_0_2_4_0 = (CrossReference)cDownstreamAssignment_1_0_2_4.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_1_0_2_4_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_1_0_2_4_0.eContents().get(1);
		private final Group cGroup_1_0_3 = (Group)cAlternatives_1_0.eContents().get(3);
		private final Assignment cDownstreamAssignment_1_0_3_0 = (Assignment)cGroup_1_0_3.eContents().get(0);
		private final CrossReference cDownstreamBoundedContextCrossReference_1_0_3_0_0 = (CrossReference)cDownstreamAssignment_1_0_3_0.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_1_0_3_0_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_1_0_3_0_0.eContents().get(1);
		private final Group cGroup_1_0_3_1 = (Group)cGroup_1_0_3.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_1_0_3_1_0 = (Keyword)cGroup_1_0_3_1.eContents().get(0);
		private final Group cGroup_1_0_3_1_1 = (Group)cGroup_1_0_3_1.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_1_0_3_1_1_0 = (Assignment)cGroup_1_0_3_1_1.eContents().get(0);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_0_0 = (RuleCall)cDownstreamRolesAssignment_1_0_3_1_1_0.eContents().get(0);
		private final Group cGroup_1_0_3_1_1_1 = (Group)cGroup_1_0_3_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_0_3_1_1_1_0 = (Keyword)cGroup_1_0_3_1_1_1.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_1_0_3_1_1_1_1 = (Assignment)cGroup_1_0_3_1_1_1.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_1_1_0 = (RuleCall)cDownstreamRolesAssignment_1_0_3_1_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_3_1_2 = (Keyword)cGroup_1_0_3_1.eContents().get(2);
		private final Keyword cDownstreamUpstreamKeyword_1_0_3_2 = (Keyword)cGroup_1_0_3.eContents().get(2);
		private final Group cGroup_1_0_3_3 = (Group)cGroup_1_0_3.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_1_0_3_3_0 = (Keyword)cGroup_1_0_3_3.eContents().get(0);
		private final Group cGroup_1_0_3_3_1 = (Group)cGroup_1_0_3_3.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_1_0_3_3_1_0 = (Assignment)cGroup_1_0_3_3_1.eContents().get(0);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_0_0 = (RuleCall)cUpstreamRolesAssignment_1_0_3_3_1_0.eContents().get(0);
		private final Group cGroup_1_0_3_3_1_1 = (Group)cGroup_1_0_3_3_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_0_3_3_1_1_0 = (Keyword)cGroup_1_0_3_3_1_1.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_1_0_3_3_1_1_1 = (Assignment)cGroup_1_0_3_3_1_1.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_1_1_0 = (RuleCall)cUpstreamRolesAssignment_1_0_3_3_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_1_0_3_3_2 = (Keyword)cGroup_1_0_3_3.eContents().get(2);
		private final Assignment cUpstreamAssignment_1_0_3_4 = (Assignment)cGroup_1_0_3.eContents().get(4);
		private final CrossReference cUpstreamBoundedContextCrossReference_1_0_3_4_0 = (CrossReference)cUpstreamAssignment_1_0_3_4.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_1_0_3_4_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_1_0_3_4_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cGroup_1.eContents().get(1);
		private final Keyword cColonKeyword_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 Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_1_2_0 = (RuleCall)cGroup_1_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_1_2_1 = (UnorderedGroup)cGroup_1_2.eContents().get(1);
		private final Group cGroup_1_2_1_0 = (Group)cUnorderedGroup_1_2_1.eContents().get(0);
		private final Keyword cImplementationTechnologyKeyword_1_2_1_0_0 = (Keyword)cGroup_1_2_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1_2_1_0_1 = (Keyword)cGroup_1_2_1_0.eContents().get(1);
		private final Assignment cImplementationTechnologyAssignment_1_2_1_0_2 = (Assignment)cGroup_1_2_1_0.eContents().get(2);
		private final RuleCall cImplementationTechnologySTRINGTerminalRuleCall_1_2_1_0_2_0 = (RuleCall)cImplementationTechnologyAssignment_1_2_1_0_2.eContents().get(0);
		private final Group cGroup_1_2_1_1 = (Group)cUnorderedGroup_1_2_1.eContents().get(1);
		private final Group cGroup_1_2_1_1_0 = (Group)cGroup_1_2_1_1.eContents().get(0);
		private final Keyword cExposedAggregatesKeyword_1_2_1_1_0_0 = (Keyword)cGroup_1_2_1_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1_2_1_1_0_1 = (Keyword)cGroup_1_2_1_1_0.eContents().get(1);
		private final Assignment cUpstreamExposedAggregatesAssignment_1_2_1_1_0_2 = (Assignment)cGroup_1_2_1_1_0.eContents().get(2);
		private final CrossReference cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_0_2_0 = (CrossReference)cUpstreamExposedAggregatesAssignment_1_2_1_1_0_2.eContents().get(0);
		private final RuleCall cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_0_2_0_1 = (RuleCall)cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_0_2_0.eContents().get(1);
		private final Group cGroup_1_2_1_1_1 = (Group)cGroup_1_2_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_1_2_1_1_1_0 = (Keyword)cGroup_1_2_1_1_1.eContents().get(0);
		private final Assignment cUpstreamExposedAggregatesAssignment_1_2_1_1_1_1 = (Assignment)cGroup_1_2_1_1_1.eContents().get(1);
		private final CrossReference cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_1_1_0 = (CrossReference)cUpstreamExposedAggregatesAssignment_1_2_1_1_1_1.eContents().get(0);
		private final RuleCall cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_1_1_0_1 = (RuleCall)cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_1_1_0.eContents().get(1);
		private final Assignment cExposedAggregatesCommentAssignment_1_2_1_1_2 = (Assignment)cGroup_1_2_1_1.eContents().get(2);
		private final RuleCall cExposedAggregatesCommentSL_COMMENTTerminalRuleCall_1_2_1_1_2_0 = (RuleCall)cExposedAggregatesCommentAssignment_1_2_1_1_2.eContents().get(0);
		private final Group cGroup_1_2_1_2 = (Group)cUnorderedGroup_1_2_1.eContents().get(2);
		private final Keyword cDownstreamRightsKeyword_1_2_1_2_0 = (Keyword)cGroup_1_2_1_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_1_2_1_2_1 = (Keyword)cGroup_1_2_1_2.eContents().get(1);
		private final Assignment cDownstreamGovernanceRightsAssignment_1_2_1_2_2 = (Assignment)cGroup_1_2_1_2.eContents().get(2);
		private final RuleCall cDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_1_2_1_2_2_0 = (RuleCall)cDownstreamGovernanceRightsAssignment_1_2_1_2_2.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_1_2_2 = (RuleCall)cGroup_1_2.eContents().get(2);
		
		//UpstreamDownstreamRelationship:
		//	CustomerSupplierRelationship | (upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole
		//	("," upstreamRoles+=UpstreamRole)*) ']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
		//	downstreamRoles+=DownstreamRole)*) ']')? downstream=[BoundedContext] | downstream=[BoundedContext] ('[' 'D' ']' | ('['
		//	('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U'
		//	',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext] |
		//	upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//	'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//	downstream=[BoundedContext] | downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole (","
		//	downstreamRoles+=DownstreamRole)*)? ']')? 'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole (","
		//	upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology'
		//	'='? implementationTechnology=STRING)? & (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) (","
		//	upstreamExposedAggregates+=[Aggregate])* exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//	downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//CustomerSupplierRelationship | (upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole
		//("," upstreamRoles+=UpstreamRole)*) ']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*) ']')? downstream=[BoundedContext] | downstream=[BoundedContext] ('[' 'D' ']' | ('['
		//('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U'
		//',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext] |
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext] | downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']')? 'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology' '='?
		//implementationTechnology=STRING)? & (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) (","
		//upstreamExposedAggregates+=[Aggregate])* exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//CustomerSupplierRelationship
		public RuleCall getCustomerSupplierRelationshipParserRuleCall_0() { return cCustomerSupplierRelationshipParserRuleCall_0; }
		
		//(upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*) ']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*) ']')? downstream=[BoundedContext] | downstream=[BoundedContext] ('[' 'D' ']' | ('['
		//('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U'
		//',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext] |
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext] | downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']')? 'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology' '='?
		//implementationTechnology=STRING)? & (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) (","
		//upstreamExposedAggregates+=[Aggregate])* exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?
		public Group getGroup_1() { return cGroup_1; }
		
		//(upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*) ']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*) ']')? downstream=[BoundedContext] | downstream=[BoundedContext] ('[' 'D' ']' | ('['
		//('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U'
		//',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext] |
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext] | downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']')? 'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext])
		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
		
		//upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)
		//']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')?
		//downstream=[BoundedContext]
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_1_0_0_0() { return cUpstreamAssignment_1_0_0_0; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_1_0_0_0_0() { return cUpstreamBoundedContextCrossReference_1_0_0_0_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_1_0_0_0_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_1_0_0_0_0_1; }
		
		//('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')?
		public Alternatives getAlternatives_1_0_0_1() { return cAlternatives_1_0_0_1; }
		
		//'[' 'U' ']'
		public Group getGroup_1_0_0_1_0() { return cGroup_1_0_0_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_0_1_0_0() { return cLeftSquareBracketKeyword_1_0_0_1_0_0; }
		
		//'U'
		public Keyword getUKeyword_1_0_0_1_0_1() { return cUKeyword_1_0_0_1_0_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_0_1_0_2() { return cRightSquareBracketKeyword_1_0_0_1_0_2; }
		
		//('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']'
		public Group getGroup_1_0_0_1_1() { return cGroup_1_0_0_1_1; }
		
		//('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)
		public Group getGroup_1_0_0_1_1_0() { return cGroup_1_0_0_1_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_0_1_1_0_0() { return cLeftSquareBracketKeyword_1_0_0_1_1_0_0; }
		
		//('U' ',')?
		public Group getGroup_1_0_0_1_1_0_1() { return cGroup_1_0_0_1_1_0_1; }
		
		//'U'
		public Keyword getUKeyword_1_0_0_1_1_0_1_0() { return cUKeyword_1_0_0_1_1_0_1_0; }
		
		//','
		public Keyword getCommaKeyword_1_0_0_1_1_0_1_1() { return cCommaKeyword_1_0_0_1_1_0_1_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_0_1_1_0_2() { return cUpstreamRolesAssignment_1_0_0_1_1_0_2; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_2_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_2_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_1_0_0_1_1_0_3() { return cGroup_1_0_0_1_1_0_3; }
		
		//","
		public Keyword getCommaKeyword_1_0_0_1_1_0_3_0() { return cCommaKeyword_1_0_0_1_1_0_3_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_0_1_1_0_3_1() { return cUpstreamRolesAssignment_1_0_0_1_1_0_3_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_3_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_0_1_1_0_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_0_1_1_1() { return cRightSquareBracketKeyword_1_0_0_1_1_1; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_1_0_0_2() { return cHyphenMinusGreaterThanSignKeyword_1_0_0_2; }
		
		//('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')?
		public Alternatives getAlternatives_1_0_0_3() { return cAlternatives_1_0_0_3; }
		
		//'[' 'D' ']'
		public Group getGroup_1_0_0_3_0() { return cGroup_1_0_0_3_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_0_3_0_0() { return cLeftSquareBracketKeyword_1_0_0_3_0_0; }
		
		//'D'
		public Keyword getDKeyword_1_0_0_3_0_1() { return cDKeyword_1_0_0_3_0_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_0_3_0_2() { return cRightSquareBracketKeyword_1_0_0_3_0_2; }
		
		//('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']'
		public Group getGroup_1_0_0_3_1() { return cGroup_1_0_0_3_1; }
		
		//('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)
		public Group getGroup_1_0_0_3_1_0() { return cGroup_1_0_0_3_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_0_3_1_0_0() { return cLeftSquareBracketKeyword_1_0_0_3_1_0_0; }
		
		//('D' ',')?
		public Group getGroup_1_0_0_3_1_0_1() { return cGroup_1_0_0_3_1_0_1; }
		
		//'D'
		public Keyword getDKeyword_1_0_0_3_1_0_1_0() { return cDKeyword_1_0_0_3_1_0_1_0; }
		
		//','
		public Keyword getCommaKeyword_1_0_0_3_1_0_1_1() { return cCommaKeyword_1_0_0_3_1_0_1_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_0_3_1_0_2() { return cDownstreamRolesAssignment_1_0_0_3_1_0_2; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_2_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_2_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_1_0_0_3_1_0_3() { return cGroup_1_0_0_3_1_0_3; }
		
		//","
		public Keyword getCommaKeyword_1_0_0_3_1_0_3_0() { return cCommaKeyword_1_0_0_3_1_0_3_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_0_3_1_0_3_1() { return cDownstreamRolesAssignment_1_0_0_3_1_0_3_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_3_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_0_3_1_0_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_0_3_1_1() { return cRightSquareBracketKeyword_1_0_0_3_1_1; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_1_0_0_4() { return cDownstreamAssignment_1_0_0_4; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_1_0_0_4_0() { return cDownstreamBoundedContextCrossReference_1_0_0_4_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_1_0_0_4_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_1_0_0_4_0_1; }
		
		//downstream=[BoundedContext] ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext]
		public Group getGroup_1_0_1() { return cGroup_1_0_1; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_1_0_1_0() { return cDownstreamAssignment_1_0_1_0; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_1_0_1_0_0() { return cDownstreamBoundedContextCrossReference_1_0_1_0_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_1_0_1_0_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_1_0_1_0_0_1; }
		
		//('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')?
		public Alternatives getAlternatives_1_0_1_1() { return cAlternatives_1_0_1_1; }
		
		//'[' 'D' ']'
		public Group getGroup_1_0_1_1_0() { return cGroup_1_0_1_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_1_1_0_0() { return cLeftSquareBracketKeyword_1_0_1_1_0_0; }
		
		//'D'
		public Keyword getDKeyword_1_0_1_1_0_1() { return cDKeyword_1_0_1_1_0_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_1_1_0_2() { return cRightSquareBracketKeyword_1_0_1_1_0_2; }
		
		//('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']'
		public Group getGroup_1_0_1_1_1() { return cGroup_1_0_1_1_1; }
		
		//('[' ('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)
		public Group getGroup_1_0_1_1_1_0() { return cGroup_1_0_1_1_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_1_1_1_0_0() { return cLeftSquareBracketKeyword_1_0_1_1_1_0_0; }
		
		//('D' ',')?
		public Group getGroup_1_0_1_1_1_0_1() { return cGroup_1_0_1_1_1_0_1; }
		
		//'D'
		public Keyword getDKeyword_1_0_1_1_1_0_1_0() { return cDKeyword_1_0_1_1_1_0_1_0; }
		
		//','
		public Keyword getCommaKeyword_1_0_1_1_1_0_1_1() { return cCommaKeyword_1_0_1_1_1_0_1_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_1_1_1_0_2() { return cDownstreamRolesAssignment_1_0_1_1_1_0_2; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_2_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_2_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_1_0_1_1_1_0_3() { return cGroup_1_0_1_1_1_0_3; }
		
		//","
		public Keyword getCommaKeyword_1_0_1_1_1_0_3_0() { return cCommaKeyword_1_0_1_1_1_0_3_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_1_1_1_0_3_1() { return cDownstreamRolesAssignment_1_0_1_1_1_0_3_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_3_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_1_1_1_0_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_1_1_1_1() { return cRightSquareBracketKeyword_1_0_1_1_1_1; }
		
		//'<-'
		public Keyword getLessThanSignHyphenMinusKeyword_1_0_1_2() { return cLessThanSignHyphenMinusKeyword_1_0_1_2; }
		
		//('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')?
		public Alternatives getAlternatives_1_0_1_3() { return cAlternatives_1_0_1_3; }
		
		//'[' 'U' ']'
		public Group getGroup_1_0_1_3_0() { return cGroup_1_0_1_3_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_1_3_0_0() { return cLeftSquareBracketKeyword_1_0_1_3_0_0; }
		
		//'U'
		public Keyword getUKeyword_1_0_1_3_0_1() { return cUKeyword_1_0_1_3_0_1; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_1_3_0_2() { return cRightSquareBracketKeyword_1_0_1_3_0_2; }
		
		//('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']'
		public Group getGroup_1_0_1_3_1() { return cGroup_1_0_1_3_1; }
		
		//('[' ('U' ',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)
		public Group getGroup_1_0_1_3_1_0() { return cGroup_1_0_1_3_1_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_1_3_1_0_0() { return cLeftSquareBracketKeyword_1_0_1_3_1_0_0; }
		
		//('U' ',')?
		public Group getGroup_1_0_1_3_1_0_1() { return cGroup_1_0_1_3_1_0_1; }
		
		//'U'
		public Keyword getUKeyword_1_0_1_3_1_0_1_0() { return cUKeyword_1_0_1_3_1_0_1_0; }
		
		//','
		public Keyword getCommaKeyword_1_0_1_3_1_0_1_1() { return cCommaKeyword_1_0_1_3_1_0_1_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_1_3_1_0_2() { return cUpstreamRolesAssignment_1_0_1_3_1_0_2; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_2_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_2_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_1_0_1_3_1_0_3() { return cGroup_1_0_1_3_1_0_3; }
		
		//","
		public Keyword getCommaKeyword_1_0_1_3_1_0_3_0() { return cCommaKeyword_1_0_1_3_1_0_3_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_1_3_1_0_3_1() { return cUpstreamRolesAssignment_1_0_1_3_1_0_3_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_3_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_1_3_1_0_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_1_3_1_1() { return cRightSquareBracketKeyword_1_0_1_3_1_1; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_1_0_1_4() { return cUpstreamAssignment_1_0_1_4; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_1_0_1_4_0() { return cUpstreamBoundedContextCrossReference_1_0_1_4_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_1_0_1_4_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_1_0_1_4_0_1; }
		
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext]
		public Group getGroup_1_0_2() { return cGroup_1_0_2; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_1_0_2_0() { return cUpstreamAssignment_1_0_2_0; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_1_0_2_0_0() { return cUpstreamBoundedContextCrossReference_1_0_2_0_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_1_0_2_0_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_1_0_2_0_0_1; }
		
		//('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		public Group getGroup_1_0_2_1() { return cGroup_1_0_2_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_2_1_0() { return cLeftSquareBracketKeyword_1_0_2_1_0; }
		
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_1_0_2_1_1() { return cGroup_1_0_2_1_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_2_1_1_0() { return cUpstreamRolesAssignment_1_0_2_1_1_0; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_0_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_0_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_1_0_2_1_1_1() { return cGroup_1_0_2_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_1_0_2_1_1_1_0() { return cCommaKeyword_1_0_2_1_1_1_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_2_1_1_1_1() { return cUpstreamRolesAssignment_1_0_2_1_1_1_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_1_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_2_1_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_2_1_2() { return cRightSquareBracketKeyword_1_0_2_1_2; }
		
		//'Upstream-Downstream'
		public Keyword getUpstreamDownstreamKeyword_1_0_2_2() { return cUpstreamDownstreamKeyword_1_0_2_2; }
		
		//('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		public Group getGroup_1_0_2_3() { return cGroup_1_0_2_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_2_3_0() { return cLeftSquareBracketKeyword_1_0_2_3_0; }
		
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_1_0_2_3_1() { return cGroup_1_0_2_3_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_2_3_1_0() { return cDownstreamRolesAssignment_1_0_2_3_1_0; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_0_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_0_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_1_0_2_3_1_1() { return cGroup_1_0_2_3_1_1; }
		
		//","
		public Keyword getCommaKeyword_1_0_2_3_1_1_0() { return cCommaKeyword_1_0_2_3_1_1_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_2_3_1_1_1() { return cDownstreamRolesAssignment_1_0_2_3_1_1_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_1_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_2_3_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_2_3_2() { return cRightSquareBracketKeyword_1_0_2_3_2; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_1_0_2_4() { return cDownstreamAssignment_1_0_2_4; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_1_0_2_4_0() { return cDownstreamBoundedContextCrossReference_1_0_2_4_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_1_0_2_4_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_1_0_2_4_0_1; }
		
		//downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//upstream=[BoundedContext]
		public Group getGroup_1_0_3() { return cGroup_1_0_3; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_1_0_3_0() { return cDownstreamAssignment_1_0_3_0; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_1_0_3_0_0() { return cDownstreamBoundedContextCrossReference_1_0_3_0_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_1_0_3_0_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_1_0_3_0_0_1; }
		
		//('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		public Group getGroup_1_0_3_1() { return cGroup_1_0_3_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_3_1_0() { return cLeftSquareBracketKeyword_1_0_3_1_0; }
		
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_1_0_3_1_1() { return cGroup_1_0_3_1_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_3_1_1_0() { return cDownstreamRolesAssignment_1_0_3_1_1_0; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_0_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_0_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_1_0_3_1_1_1() { return cGroup_1_0_3_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_1_0_3_1_1_1_0() { return cCommaKeyword_1_0_3_1_1_1_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_1_0_3_1_1_1_1() { return cDownstreamRolesAssignment_1_0_3_1_1_1_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_1_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_1_0_3_1_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_3_1_2() { return cRightSquareBracketKeyword_1_0_3_1_2; }
		
		//'Downstream-Upstream'
		public Keyword getDownstreamUpstreamKeyword_1_0_3_2() { return cDownstreamUpstreamKeyword_1_0_3_2; }
		
		//('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		public Group getGroup_1_0_3_3() { return cGroup_1_0_3_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1_0_3_3_0() { return cLeftSquareBracketKeyword_1_0_3_3_0; }
		
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_1_0_3_3_1() { return cGroup_1_0_3_3_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_3_3_1_0() { return cUpstreamRolesAssignment_1_0_3_3_1_0; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_0_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_0_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_1_0_3_3_1_1() { return cGroup_1_0_3_3_1_1; }
		
		//","
		public Keyword getCommaKeyword_1_0_3_3_1_1_0() { return cCommaKeyword_1_0_3_3_1_1_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_1_0_3_3_1_1_1() { return cUpstreamRolesAssignment_1_0_3_3_1_1_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_1_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_1_0_3_3_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_1_0_3_3_2() { return cRightSquareBracketKeyword_1_0_3_3_2; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_1_0_3_4() { return cUpstreamAssignment_1_0_3_4; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_1_0_3_4_0() { return cUpstreamBoundedContextCrossReference_1_0_3_4_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_1_0_3_4_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_1_0_3_4_0_1; }
		
		//(':' name=ID)?
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//':'
		public Keyword getColonKeyword_1_1_0() { return cColonKeyword_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; }
		
		//(OPEN (('implementationTechnology' '='? implementationTechnology=STRING)? & (('exposedAggregates' '='?
		//upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?
		public Group getGroup_1_2() { return cGroup_1_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_1_2_0() { return cOPENTerminalRuleCall_1_2_0; }
		
		//(('implementationTechnology' '='? implementationTechnology=STRING)? & (('exposedAggregates' '='?
		//upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?)
		public UnorderedGroup getUnorderedGroup_1_2_1() { return cUnorderedGroup_1_2_1; }
		
		//('implementationTechnology' '='? implementationTechnology=STRING)?
		public Group getGroup_1_2_1_0() { return cGroup_1_2_1_0; }
		
		//'implementationTechnology'
		public Keyword getImplementationTechnologyKeyword_1_2_1_0_0() { return cImplementationTechnologyKeyword_1_2_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_1_2_1_0_1() { return cEqualsSignKeyword_1_2_1_0_1; }
		
		//implementationTechnology=STRING
		public Assignment getImplementationTechnologyAssignment_1_2_1_0_2() { return cImplementationTechnologyAssignment_1_2_1_0_2; }
		
		//STRING
		public RuleCall getImplementationTechnologySTRINGTerminalRuleCall_1_2_1_0_2_0() { return cImplementationTechnologySTRINGTerminalRuleCall_1_2_1_0_2_0; }
		
		//(('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)?
		public Group getGroup_1_2_1_1() { return cGroup_1_2_1_1; }
		
		//('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate])
		public Group getGroup_1_2_1_1_0() { return cGroup_1_2_1_1_0; }
		
		//'exposedAggregates'
		public Keyword getExposedAggregatesKeyword_1_2_1_1_0_0() { return cExposedAggregatesKeyword_1_2_1_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_1_2_1_1_0_1() { return cEqualsSignKeyword_1_2_1_1_0_1; }
		
		//upstreamExposedAggregates+=[Aggregate]
		public Assignment getUpstreamExposedAggregatesAssignment_1_2_1_1_0_2() { return cUpstreamExposedAggregatesAssignment_1_2_1_1_0_2; }
		
		//[Aggregate]
		public CrossReference getUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_0_2_0() { return cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_0_2_0; }
		
		//ID
		public RuleCall getUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_0_2_0_1() { return cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_0_2_0_1; }
		
		//("," upstreamExposedAggregates+=[Aggregate])*
		public Group getGroup_1_2_1_1_1() { return cGroup_1_2_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_1_2_1_1_1_0() { return cCommaKeyword_1_2_1_1_1_0; }
		
		//upstreamExposedAggregates+=[Aggregate]
		public Assignment getUpstreamExposedAggregatesAssignment_1_2_1_1_1_1() { return cUpstreamExposedAggregatesAssignment_1_2_1_1_1_1; }
		
		//[Aggregate]
		public CrossReference getUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_1_1_0() { return cUpstreamExposedAggregatesAggregateCrossReference_1_2_1_1_1_1_0; }
		
		//ID
		public RuleCall getUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_1_1_0_1() { return cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_1_2_1_1_1_1_0_1; }
		
		//exposedAggregatesComment=SL_COMMENT?
		public Assignment getExposedAggregatesCommentAssignment_1_2_1_1_2() { return cExposedAggregatesCommentAssignment_1_2_1_1_2; }
		
		//SL_COMMENT
		public RuleCall getExposedAggregatesCommentSL_COMMENTTerminalRuleCall_1_2_1_1_2_0() { return cExposedAggregatesCommentSL_COMMENTTerminalRuleCall_1_2_1_1_2_0; }
		
		//('downstreamRights' '='? downstreamGovernanceRights=DownstreamGovernanceRights)?
		public Group getGroup_1_2_1_2() { return cGroup_1_2_1_2; }
		
		//'downstreamRights'
		public Keyword getDownstreamRightsKeyword_1_2_1_2_0() { return cDownstreamRightsKeyword_1_2_1_2_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_1_2_1_2_1() { return cEqualsSignKeyword_1_2_1_2_1; }
		
		//downstreamGovernanceRights=DownstreamGovernanceRights
		public Assignment getDownstreamGovernanceRightsAssignment_1_2_1_2_2() { return cDownstreamGovernanceRightsAssignment_1_2_1_2_2; }
		
		//DownstreamGovernanceRights
		public RuleCall getDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_1_2_1_2_2_0() { return cDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_1_2_1_2_2_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_1_2_2() { return cCLOSETerminalRuleCall_1_2_2; }
	}
	public class CustomerSupplierRelationshipElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.CustomerSupplierRelationship");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cUpstreamAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final CrossReference cUpstreamBoundedContextCrossReference_0_0_0_0 = (CrossReference)cUpstreamAssignment_0_0_0.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_0_0_0_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_0_0_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_0_2 = (Group)cGroup_0_0.eContents().get(2);
		private final Keyword cUKeyword_0_0_2_0 = (Keyword)cGroup_0_0_2.eContents().get(0);
		private final Keyword cCommaKeyword_0_0_2_1 = (Keyword)cGroup_0_0_2.eContents().get(1);
		private final Keyword cSKeyword_0_0_3 = (Keyword)cGroup_0_0.eContents().get(3);
		private final Group cGroup_0_0_4 = (Group)cGroup_0_0.eContents().get(4);
		private final Keyword cCommaKeyword_0_0_4_0 = (Keyword)cGroup_0_0_4.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_0_4_1 = (Assignment)cGroup_0_0_4.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_1_0 = (RuleCall)cUpstreamRolesAssignment_0_0_4_1.eContents().get(0);
		private final Group cGroup_0_0_4_2 = (Group)cGroup_0_0_4.eContents().get(2);
		private final Keyword cCommaKeyword_0_0_4_2_0 = (Keyword)cGroup_0_0_4_2.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_0_4_2_1 = (Assignment)cGroup_0_0_4_2.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_2_1_0 = (RuleCall)cUpstreamRolesAssignment_0_0_4_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_0_5 = (Keyword)cGroup_0_0.eContents().get(5);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_6 = (Keyword)cGroup_0_0.eContents().get(6);
		private final Keyword cLeftSquareBracketKeyword_0_0_7 = (Keyword)cGroup_0_0.eContents().get(7);
		private final Group cGroup_0_0_8 = (Group)cGroup_0_0.eContents().get(8);
		private final Keyword cDKeyword_0_0_8_0 = (Keyword)cGroup_0_0_8.eContents().get(0);
		private final Keyword cCommaKeyword_0_0_8_1 = (Keyword)cGroup_0_0_8.eContents().get(1);
		private final Keyword cCKeyword_0_0_9 = (Keyword)cGroup_0_0.eContents().get(9);
		private final Group cGroup_0_0_10 = (Group)cGroup_0_0.eContents().get(10);
		private final Keyword cCommaKeyword_0_0_10_0 = (Keyword)cGroup_0_0_10.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_0_10_1 = (Assignment)cGroup_0_0_10.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_1_0 = (RuleCall)cDownstreamRolesAssignment_0_0_10_1.eContents().get(0);
		private final Group cGroup_0_0_10_2 = (Group)cGroup_0_0_10.eContents().get(2);
		private final Keyword cCommaKeyword_0_0_10_2_0 = (Keyword)cGroup_0_0_10_2.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_0_10_2_1 = (Assignment)cGroup_0_0_10_2.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_2_1_0 = (RuleCall)cDownstreamRolesAssignment_0_0_10_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_0_11 = (Keyword)cGroup_0_0.eContents().get(11);
		private final Assignment cDownstreamAssignment_0_0_12 = (Assignment)cGroup_0_0.eContents().get(12);
		private final CrossReference cDownstreamBoundedContextCrossReference_0_0_12_0 = (CrossReference)cDownstreamAssignment_0_0_12.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_0_0_12_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_0_0_12_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cDownstreamAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cDownstreamBoundedContextCrossReference_0_1_0_0 = (CrossReference)cDownstreamAssignment_0_1_0.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_0_1_0_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final Group cGroup_0_1_2 = (Group)cGroup_0_1.eContents().get(2);
		private final Keyword cDKeyword_0_1_2_0 = (Keyword)cGroup_0_1_2.eContents().get(0);
		private final Keyword cCommaKeyword_0_1_2_1 = (Keyword)cGroup_0_1_2.eContents().get(1);
		private final Keyword cCKeyword_0_1_3 = (Keyword)cGroup_0_1.eContents().get(3);
		private final Group cGroup_0_1_4 = (Group)cGroup_0_1.eContents().get(4);
		private final Keyword cCommaKeyword_0_1_4_0 = (Keyword)cGroup_0_1_4.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_1_4_1 = (Assignment)cGroup_0_1_4.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_1_0 = (RuleCall)cDownstreamRolesAssignment_0_1_4_1.eContents().get(0);
		private final Group cGroup_0_1_4_2 = (Group)cGroup_0_1_4.eContents().get(2);
		private final Keyword cCommaKeyword_0_1_4_2_0 = (Keyword)cGroup_0_1_4_2.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_1_4_2_1 = (Assignment)cGroup_0_1_4_2.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_2_1_0 = (RuleCall)cDownstreamRolesAssignment_0_1_4_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_1_5 = (Keyword)cGroup_0_1.eContents().get(5);
		private final Keyword cLessThanSignHyphenMinusKeyword_0_1_6 = (Keyword)cGroup_0_1.eContents().get(6);
		private final Keyword cLeftSquareBracketKeyword_0_1_7 = (Keyword)cGroup_0_1.eContents().get(7);
		private final Group cGroup_0_1_8 = (Group)cGroup_0_1.eContents().get(8);
		private final Keyword cUKeyword_0_1_8_0 = (Keyword)cGroup_0_1_8.eContents().get(0);
		private final Keyword cCommaKeyword_0_1_8_1 = (Keyword)cGroup_0_1_8.eContents().get(1);
		private final Keyword cSKeyword_0_1_9 = (Keyword)cGroup_0_1.eContents().get(9);
		private final Group cGroup_0_1_10 = (Group)cGroup_0_1.eContents().get(10);
		private final Keyword cCommaKeyword_0_1_10_0 = (Keyword)cGroup_0_1_10.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_1_10_1 = (Assignment)cGroup_0_1_10.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_1_0 = (RuleCall)cUpstreamRolesAssignment_0_1_10_1.eContents().get(0);
		private final Group cGroup_0_1_10_2 = (Group)cGroup_0_1_10.eContents().get(2);
		private final Keyword cCommaKeyword_0_1_10_2_0 = (Keyword)cGroup_0_1_10_2.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_1_10_2_1 = (Assignment)cGroup_0_1_10_2.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_2_1_0 = (RuleCall)cUpstreamRolesAssignment_0_1_10_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_1_11 = (Keyword)cGroup_0_1.eContents().get(11);
		private final Assignment cUpstreamAssignment_0_1_12 = (Assignment)cGroup_0_1.eContents().get(12);
		private final CrossReference cUpstreamBoundedContextCrossReference_0_1_12_0 = (CrossReference)cUpstreamAssignment_0_1_12.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_0_1_12_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_0_1_12_0.eContents().get(1);
		private final Group cGroup_0_2 = (Group)cAlternatives_0.eContents().get(2);
		private final Assignment cDownstreamAssignment_0_2_0 = (Assignment)cGroup_0_2.eContents().get(0);
		private final CrossReference cDownstreamBoundedContextCrossReference_0_2_0_0 = (CrossReference)cDownstreamAssignment_0_2_0.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_0_2_0_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_0_2_0_0.eContents().get(1);
		private final Group cGroup_0_2_1 = (Group)cGroup_0_2.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_2_1_0 = (Keyword)cGroup_0_2_1.eContents().get(0);
		private final Group cGroup_0_2_1_1 = (Group)cGroup_0_2_1.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_0_2_1_1_0 = (Assignment)cGroup_0_2_1_1.eContents().get(0);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_0_0 = (RuleCall)cDownstreamRolesAssignment_0_2_1_1_0.eContents().get(0);
		private final Group cGroup_0_2_1_1_1 = (Group)cGroup_0_2_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_2_1_1_1_0 = (Keyword)cGroup_0_2_1_1_1.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_2_1_1_1_1 = (Assignment)cGroup_0_2_1_1_1.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_1_1_0 = (RuleCall)cDownstreamRolesAssignment_0_2_1_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_2_1_2 = (Keyword)cGroup_0_2_1.eContents().get(2);
		private final Keyword cCustomerSupplierKeyword_0_2_2 = (Keyword)cGroup_0_2.eContents().get(2);
		private final Group cGroup_0_2_3 = (Group)cGroup_0_2.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_0_2_3_0 = (Keyword)cGroup_0_2_3.eContents().get(0);
		private final Group cGroup_0_2_3_1 = (Group)cGroup_0_2_3.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_0_2_3_1_0 = (Assignment)cGroup_0_2_3_1.eContents().get(0);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_0_0 = (RuleCall)cUpstreamRolesAssignment_0_2_3_1_0.eContents().get(0);
		private final Group cGroup_0_2_3_1_1 = (Group)cGroup_0_2_3_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_2_3_1_1_0 = (Keyword)cGroup_0_2_3_1_1.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_2_3_1_1_1 = (Assignment)cGroup_0_2_3_1_1.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_1_1_0 = (RuleCall)cUpstreamRolesAssignment_0_2_3_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_2_3_2 = (Keyword)cGroup_0_2_3.eContents().get(2);
		private final Assignment cUpstreamAssignment_0_2_4 = (Assignment)cGroup_0_2.eContents().get(4);
		private final CrossReference cUpstreamBoundedContextCrossReference_0_2_4_0 = (CrossReference)cUpstreamAssignment_0_2_4.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_0_2_4_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_0_2_4_0.eContents().get(1);
		private final Group cGroup_0_3 = (Group)cAlternatives_0.eContents().get(3);
		private final Assignment cUpstreamAssignment_0_3_0 = (Assignment)cGroup_0_3.eContents().get(0);
		private final CrossReference cUpstreamBoundedContextCrossReference_0_3_0_0 = (CrossReference)cUpstreamAssignment_0_3_0.eContents().get(0);
		private final RuleCall cUpstreamBoundedContextIDTerminalRuleCall_0_3_0_0_1 = (RuleCall)cUpstreamBoundedContextCrossReference_0_3_0_0.eContents().get(1);
		private final Group cGroup_0_3_1 = (Group)cGroup_0_3.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0_3_1_0 = (Keyword)cGroup_0_3_1.eContents().get(0);
		private final Group cGroup_0_3_1_1 = (Group)cGroup_0_3_1.eContents().get(1);
		private final Assignment cUpstreamRolesAssignment_0_3_1_1_0 = (Assignment)cGroup_0_3_1_1.eContents().get(0);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_0_0 = (RuleCall)cUpstreamRolesAssignment_0_3_1_1_0.eContents().get(0);
		private final Group cGroup_0_3_1_1_1 = (Group)cGroup_0_3_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_3_1_1_1_0 = (Keyword)cGroup_0_3_1_1_1.eContents().get(0);
		private final Assignment cUpstreamRolesAssignment_0_3_1_1_1_1 = (Assignment)cGroup_0_3_1_1_1.eContents().get(1);
		private final RuleCall cUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_1_1_0 = (RuleCall)cUpstreamRolesAssignment_0_3_1_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_3_1_2 = (Keyword)cGroup_0_3_1.eContents().get(2);
		private final Keyword cSupplierCustomerKeyword_0_3_2 = (Keyword)cGroup_0_3.eContents().get(2);
		private final Group cGroup_0_3_3 = (Group)cGroup_0_3.eContents().get(3);
		private final Keyword cLeftSquareBracketKeyword_0_3_3_0 = (Keyword)cGroup_0_3_3.eContents().get(0);
		private final Group cGroup_0_3_3_1 = (Group)cGroup_0_3_3.eContents().get(1);
		private final Assignment cDownstreamRolesAssignment_0_3_3_1_0 = (Assignment)cGroup_0_3_3_1.eContents().get(0);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_0_0 = (RuleCall)cDownstreamRolesAssignment_0_3_3_1_0.eContents().get(0);
		private final Group cGroup_0_3_3_1_1 = (Group)cGroup_0_3_3_1.eContents().get(1);
		private final Keyword cCommaKeyword_0_3_3_1_1_0 = (Keyword)cGroup_0_3_3_1_1.eContents().get(0);
		private final Assignment cDownstreamRolesAssignment_0_3_3_1_1_1 = (Assignment)cGroup_0_3_3_1_1.eContents().get(1);
		private final RuleCall cDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_1_1_0 = (RuleCall)cDownstreamRolesAssignment_0_3_3_1_1_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_0_3_3_2 = (Keyword)cGroup_0_3_3.eContents().get(2);
		private final Assignment cDownstreamAssignment_0_3_4 = (Assignment)cGroup_0_3.eContents().get(4);
		private final CrossReference cDownstreamBoundedContextCrossReference_0_3_4_0 = (CrossReference)cDownstreamAssignment_0_3_4.eContents().get(0);
		private final RuleCall cDownstreamBoundedContextIDTerminalRuleCall_0_3_4_0_1 = (RuleCall)cDownstreamBoundedContextCrossReference_0_3_4_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cColonKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_2_1 = (UnorderedGroup)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cUnorderedGroup_2_1.eContents().get(0);
		private final Keyword cImplementationTechnologyKeyword_2_1_0_0 = (Keyword)cGroup_2_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_0_1 = (Keyword)cGroup_2_1_0.eContents().get(1);
		private final Assignment cImplementationTechnologyAssignment_2_1_0_2 = (Assignment)cGroup_2_1_0.eContents().get(2);
		private final RuleCall cImplementationTechnologySTRINGTerminalRuleCall_2_1_0_2_0 = (RuleCall)cImplementationTechnologyAssignment_2_1_0_2.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cUnorderedGroup_2_1.eContents().get(1);
		private final Group cGroup_2_1_1_0 = (Group)cGroup_2_1_1.eContents().get(0);
		private final Keyword cExposedAggregatesKeyword_2_1_1_0_0 = (Keyword)cGroup_2_1_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1_0_1 = (Keyword)cGroup_2_1_1_0.eContents().get(1);
		private final Assignment cUpstreamExposedAggregatesAssignment_2_1_1_0_2 = (Assignment)cGroup_2_1_1_0.eContents().get(2);
		private final CrossReference cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_0_2_0 = (CrossReference)cUpstreamExposedAggregatesAssignment_2_1_1_0_2.eContents().get(0);
		private final RuleCall cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_0_2_0_1 = (RuleCall)cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_0_2_0.eContents().get(1);
		private final Group cGroup_2_1_1_1 = (Group)cGroup_2_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_1_1_0 = (Keyword)cGroup_2_1_1_1.eContents().get(0);
		private final Assignment cUpstreamExposedAggregatesAssignment_2_1_1_1_1 = (Assignment)cGroup_2_1_1_1.eContents().get(1);
		private final CrossReference cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_1_1_0 = (CrossReference)cUpstreamExposedAggregatesAssignment_2_1_1_1_1.eContents().get(0);
		private final RuleCall cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_1_1_0_1 = (RuleCall)cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_1_1_0.eContents().get(1);
		private final Assignment cExposedAggregatesCommentAssignment_2_1_1_2 = (Assignment)cGroup_2_1_1.eContents().get(2);
		private final RuleCall cExposedAggregatesCommentSL_COMMENTTerminalRuleCall_2_1_1_2_0 = (RuleCall)cExposedAggregatesCommentAssignment_2_1_1_2.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cUnorderedGroup_2_1.eContents().get(2);
		private final Keyword cDownstreamRightsKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_2_1 = (Keyword)cGroup_2_1_2.eContents().get(1);
		private final Assignment cDownstreamGovernanceRightsAssignment_2_1_2_2 = (Assignment)cGroup_2_1_2.eContents().get(2);
		private final RuleCall cDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_2_1_2_2_0 = (RuleCall)cDownstreamGovernanceRightsAssignment_2_1_2_2.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//CustomerSupplierRelationship:
		//	(upstream=[BoundedContext] '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		//	']' '->' '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']'
		//	downstream=[BoundedContext] | downstream=[BoundedContext] '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole (","
		//	downstreamRoles+=DownstreamRole)*)? ']' '<-' '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole (","
		//	upstreamRoles+=UpstreamRole)*)? ']' upstream=[BoundedContext] | downstream=[BoundedContext] ('['
		//	(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')? 'Customer-Supplier' ('['
		//	(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext] |
		//	upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//	'Supplier-Customer' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//	downstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology' '='? implementationTechnology=STRING)?
		//	& (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//	exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//	downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//(upstream=[BoundedContext] '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']'
		//'->' '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']'
		//downstream=[BoundedContext] | downstream=[BoundedContext] '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']' '<-' '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']' upstream=[BoundedContext] | downstream=[BoundedContext] ('['
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')? 'Customer-Supplier' ('['
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext] |
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Supplier-Customer' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology' '='? implementationTechnology=STRING)? &
		//(('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//(upstream=[BoundedContext] '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']'
		//'->' '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']'
		//downstream=[BoundedContext] | downstream=[BoundedContext] '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']' '<-' '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']' upstream=[BoundedContext] | downstream=[BoundedContext] ('['
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')? 'Customer-Supplier' ('['
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext] |
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Supplier-Customer' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext])
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//upstream=[BoundedContext] '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']'
		//'->' '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']'
		//downstream=[BoundedContext]
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_0_0_0() { return cUpstreamAssignment_0_0_0; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_0_0_0_0() { return cUpstreamBoundedContextCrossReference_0_0_0_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_0_0_0_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_0_0_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_1() { return cLeftSquareBracketKeyword_0_0_1; }
		
		//('U' ',')?
		public Group getGroup_0_0_2() { return cGroup_0_0_2; }
		
		//'U'
		public Keyword getUKeyword_0_0_2_0() { return cUKeyword_0_0_2_0; }
		
		//','
		public Keyword getCommaKeyword_0_0_2_1() { return cCommaKeyword_0_0_2_1; }
		
		//'S'
		public Keyword getSKeyword_0_0_3() { return cSKeyword_0_0_3; }
		
		//(',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_0_0_4() { return cGroup_0_0_4; }
		
		//','
		public Keyword getCommaKeyword_0_0_4_0() { return cCommaKeyword_0_0_4_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_0_4_1() { return cUpstreamRolesAssignment_0_0_4_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_1_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_0_0_4_2() { return cGroup_0_0_4_2; }
		
		//","
		public Keyword getCommaKeyword_0_0_4_2_0() { return cCommaKeyword_0_0_4_2_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_0_4_2_1() { return cUpstreamRolesAssignment_0_0_4_2_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_2_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_0_4_2_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_5() { return cRightSquareBracketKeyword_0_0_5; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_6() { return cHyphenMinusGreaterThanSignKeyword_0_0_6; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_0_7() { return cLeftSquareBracketKeyword_0_0_7; }
		
		//('D' ',')?
		public Group getGroup_0_0_8() { return cGroup_0_0_8; }
		
		//'D'
		public Keyword getDKeyword_0_0_8_0() { return cDKeyword_0_0_8_0; }
		
		//','
		public Keyword getCommaKeyword_0_0_8_1() { return cCommaKeyword_0_0_8_1; }
		
		//'C'
		public Keyword getCKeyword_0_0_9() { return cCKeyword_0_0_9; }
		
		//(',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_0_0_10() { return cGroup_0_0_10; }
		
		//','
		public Keyword getCommaKeyword_0_0_10_0() { return cCommaKeyword_0_0_10_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_0_10_1() { return cDownstreamRolesAssignment_0_0_10_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_1_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_0_0_10_2() { return cGroup_0_0_10_2; }
		
		//","
		public Keyword getCommaKeyword_0_0_10_2_0() { return cCommaKeyword_0_0_10_2_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_0_10_2_1() { return cDownstreamRolesAssignment_0_0_10_2_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_2_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_0_10_2_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_0_11() { return cRightSquareBracketKeyword_0_0_11; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_0_0_12() { return cDownstreamAssignment_0_0_12; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_0_0_12_0() { return cDownstreamBoundedContextCrossReference_0_0_12_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_0_0_12_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_0_0_12_0_1; }
		
		//downstream=[BoundedContext] '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole (","
		//downstreamRoles+=DownstreamRole)*)? ']' '<-' '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole (","
		//upstreamRoles+=UpstreamRole)*)? ']' upstream=[BoundedContext]
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_0_1_0() { return cDownstreamAssignment_0_1_0; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_0_1_0_0() { return cDownstreamBoundedContextCrossReference_0_1_0_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_0_1_0_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_0_1_0_0_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_1() { return cLeftSquareBracketKeyword_0_1_1; }
		
		//('D' ',')?
		public Group getGroup_0_1_2() { return cGroup_0_1_2; }
		
		//'D'
		public Keyword getDKeyword_0_1_2_0() { return cDKeyword_0_1_2_0; }
		
		//','
		public Keyword getCommaKeyword_0_1_2_1() { return cCommaKeyword_0_1_2_1; }
		
		//'C'
		public Keyword getCKeyword_0_1_3() { return cCKeyword_0_1_3; }
		
		//(',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_0_1_4() { return cGroup_0_1_4; }
		
		//','
		public Keyword getCommaKeyword_0_1_4_0() { return cCommaKeyword_0_1_4_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_1_4_1() { return cDownstreamRolesAssignment_0_1_4_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_1_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_0_1_4_2() { return cGroup_0_1_4_2; }
		
		//","
		public Keyword getCommaKeyword_0_1_4_2_0() { return cCommaKeyword_0_1_4_2_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_1_4_2_1() { return cDownstreamRolesAssignment_0_1_4_2_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_2_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_1_4_2_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_5() { return cRightSquareBracketKeyword_0_1_5; }
		
		//'<-'
		public Keyword getLessThanSignHyphenMinusKeyword_0_1_6() { return cLessThanSignHyphenMinusKeyword_0_1_6; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_1_7() { return cLeftSquareBracketKeyword_0_1_7; }
		
		//('U' ',')?
		public Group getGroup_0_1_8() { return cGroup_0_1_8; }
		
		//'U'
		public Keyword getUKeyword_0_1_8_0() { return cUKeyword_0_1_8_0; }
		
		//','
		public Keyword getCommaKeyword_0_1_8_1() { return cCommaKeyword_0_1_8_1; }
		
		//'S'
		public Keyword getSKeyword_0_1_9() { return cSKeyword_0_1_9; }
		
		//(',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_0_1_10() { return cGroup_0_1_10; }
		
		//','
		public Keyword getCommaKeyword_0_1_10_0() { return cCommaKeyword_0_1_10_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_1_10_1() { return cUpstreamRolesAssignment_0_1_10_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_1_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_0_1_10_2() { return cGroup_0_1_10_2; }
		
		//","
		public Keyword getCommaKeyword_0_1_10_2_0() { return cCommaKeyword_0_1_10_2_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_1_10_2_1() { return cUpstreamRolesAssignment_0_1_10_2_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_2_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_1_10_2_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_1_11() { return cRightSquareBracketKeyword_0_1_11; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_0_1_12() { return cUpstreamAssignment_0_1_12; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_0_1_12_0() { return cUpstreamBoundedContextCrossReference_0_1_12_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_0_1_12_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_0_1_12_0_1; }
		
		//downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//'Customer-Supplier' ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//upstream=[BoundedContext]
		public Group getGroup_0_2() { return cGroup_0_2; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_0_2_0() { return cDownstreamAssignment_0_2_0; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_0_2_0_0() { return cDownstreamBoundedContextCrossReference_0_2_0_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_0_2_0_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_0_2_0_0_1; }
		
		//('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		public Group getGroup_0_2_1() { return cGroup_0_2_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_1_0() { return cLeftSquareBracketKeyword_0_2_1_0; }
		
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_0_2_1_1() { return cGroup_0_2_1_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_2_1_1_0() { return cDownstreamRolesAssignment_0_2_1_1_0; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_0_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_0_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_0_2_1_1_1() { return cGroup_0_2_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_0_2_1_1_1_0() { return cCommaKeyword_0_2_1_1_1_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_2_1_1_1_1() { return cDownstreamRolesAssignment_0_2_1_1_1_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_1_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_2_1_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_1_2() { return cRightSquareBracketKeyword_0_2_1_2; }
		
		//'Customer-Supplier'
		public Keyword getCustomerSupplierKeyword_0_2_2() { return cCustomerSupplierKeyword_0_2_2; }
		
		//('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		public Group getGroup_0_2_3() { return cGroup_0_2_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_2_3_0() { return cLeftSquareBracketKeyword_0_2_3_0; }
		
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_0_2_3_1() { return cGroup_0_2_3_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_2_3_1_0() { return cUpstreamRolesAssignment_0_2_3_1_0; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_0_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_0_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_0_2_3_1_1() { return cGroup_0_2_3_1_1; }
		
		//","
		public Keyword getCommaKeyword_0_2_3_1_1_0() { return cCommaKeyword_0_2_3_1_1_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_2_3_1_1_1() { return cUpstreamRolesAssignment_0_2_3_1_1_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_1_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_2_3_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_2_3_2() { return cRightSquareBracketKeyword_0_2_3_2; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_0_2_4() { return cUpstreamAssignment_0_2_4; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_0_2_4_0() { return cUpstreamBoundedContextCrossReference_0_2_4_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_0_2_4_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_0_2_4_0_1; }
		
		//upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		//'Supplier-Customer' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		//downstream=[BoundedContext]
		public Group getGroup_0_3() { return cGroup_0_3; }
		
		//upstream=[BoundedContext]
		public Assignment getUpstreamAssignment_0_3_0() { return cUpstreamAssignment_0_3_0; }
		
		//[BoundedContext]
		public CrossReference getUpstreamBoundedContextCrossReference_0_3_0_0() { return cUpstreamBoundedContextCrossReference_0_3_0_0; }
		
		//ID
		public RuleCall getUpstreamBoundedContextIDTerminalRuleCall_0_3_0_0_1() { return cUpstreamBoundedContextIDTerminalRuleCall_0_3_0_0_1; }
		
		//('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
		public Group getGroup_0_3_1() { return cGroup_0_3_1; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_1_0() { return cLeftSquareBracketKeyword_0_3_1_0; }
		
		//(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
		public Group getGroup_0_3_1_1() { return cGroup_0_3_1_1; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_3_1_1_0() { return cUpstreamRolesAssignment_0_3_1_1_0; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_0_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_0_0; }
		
		//("," upstreamRoles+=UpstreamRole)*
		public Group getGroup_0_3_1_1_1() { return cGroup_0_3_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_0_3_1_1_1_0() { return cCommaKeyword_0_3_1_1_1_0; }
		
		//upstreamRoles+=UpstreamRole
		public Assignment getUpstreamRolesAssignment_0_3_1_1_1_1() { return cUpstreamRolesAssignment_0_3_1_1_1_1; }
		
		//UpstreamRole
		public RuleCall getUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_1_1_0() { return cUpstreamRolesUpstreamRoleEnumRuleCall_0_3_1_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_1_2() { return cRightSquareBracketKeyword_0_3_1_2; }
		
		//'Supplier-Customer'
		public Keyword getSupplierCustomerKeyword_0_3_2() { return cSupplierCustomerKeyword_0_3_2; }
		
		//('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
		public Group getGroup_0_3_3() { return cGroup_0_3_3; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_0_3_3_0() { return cLeftSquareBracketKeyword_0_3_3_0; }
		
		//(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)?
		public Group getGroup_0_3_3_1() { return cGroup_0_3_3_1; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_3_3_1_0() { return cDownstreamRolesAssignment_0_3_3_1_0; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_0_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_0_0; }
		
		//("," downstreamRoles+=DownstreamRole)*
		public Group getGroup_0_3_3_1_1() { return cGroup_0_3_3_1_1; }
		
		//","
		public Keyword getCommaKeyword_0_3_3_1_1_0() { return cCommaKeyword_0_3_3_1_1_0; }
		
		//downstreamRoles+=DownstreamRole
		public Assignment getDownstreamRolesAssignment_0_3_3_1_1_1() { return cDownstreamRolesAssignment_0_3_3_1_1_1; }
		
		//DownstreamRole
		public RuleCall getDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_1_1_0() { return cDownstreamRolesDownstreamRoleEnumRuleCall_0_3_3_1_1_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_0_3_3_2() { return cRightSquareBracketKeyword_0_3_3_2; }
		
		//downstream=[BoundedContext]
		public Assignment getDownstreamAssignment_0_3_4() { return cDownstreamAssignment_0_3_4; }
		
		//[BoundedContext]
		public CrossReference getDownstreamBoundedContextCrossReference_0_3_4_0() { return cDownstreamBoundedContextCrossReference_0_3_4_0; }
		
		//ID
		public RuleCall getDownstreamBoundedContextIDTerminalRuleCall_0_3_4_0_1() { return cDownstreamBoundedContextIDTerminalRuleCall_0_3_4_0_1; }
		
		//(':' name=ID)?
		public Group getGroup_1() { return cGroup_1; }
		
		//':'
		public Keyword getColonKeyword_1_0() { return cColonKeyword_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_1_0() { return cNameIDTerminalRuleCall_1_1_0; }
		
		//(OPEN (('implementationTechnology' '='? implementationTechnology=STRING)? & (('exposedAggregates' '='?
		//upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//(('implementationTechnology' '='? implementationTechnology=STRING)? & (('exposedAggregates' '='?
		//upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
		//downstreamGovernanceRights=DownstreamGovernanceRights)?)
		public UnorderedGroup getUnorderedGroup_2_1() { return cUnorderedGroup_2_1; }
		
		//('implementationTechnology' '='? implementationTechnology=STRING)?
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//'implementationTechnology'
		public Keyword getImplementationTechnologyKeyword_2_1_0_0() { return cImplementationTechnologyKeyword_2_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_0_1() { return cEqualsSignKeyword_2_1_0_1; }
		
		//implementationTechnology=STRING
		public Assignment getImplementationTechnologyAssignment_2_1_0_2() { return cImplementationTechnologyAssignment_2_1_0_2; }
		
		//STRING
		public RuleCall getImplementationTechnologySTRINGTerminalRuleCall_2_1_0_2_0() { return cImplementationTechnologySTRINGTerminalRuleCall_2_1_0_2_0; }
		
		//(('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
		//exposedAggregatesComment=SL_COMMENT?)?
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate])
		public Group getGroup_2_1_1_0() { return cGroup_2_1_1_0; }
		
		//'exposedAggregates'
		public Keyword getExposedAggregatesKeyword_2_1_1_0_0() { return cExposedAggregatesKeyword_2_1_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1_0_1() { return cEqualsSignKeyword_2_1_1_0_1; }
		
		//upstreamExposedAggregates+=[Aggregate]
		public Assignment getUpstreamExposedAggregatesAssignment_2_1_1_0_2() { return cUpstreamExposedAggregatesAssignment_2_1_1_0_2; }
		
		//[Aggregate]
		public CrossReference getUpstreamExposedAggregatesAggregateCrossReference_2_1_1_0_2_0() { return cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_0_2_0; }
		
		//ID
		public RuleCall getUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_0_2_0_1() { return cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_0_2_0_1; }
		
		//("," upstreamExposedAggregates+=[Aggregate])*
		public Group getGroup_2_1_1_1() { return cGroup_2_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_2_1_1_1_0() { return cCommaKeyword_2_1_1_1_0; }
		
		//upstreamExposedAggregates+=[Aggregate]
		public Assignment getUpstreamExposedAggregatesAssignment_2_1_1_1_1() { return cUpstreamExposedAggregatesAssignment_2_1_1_1_1; }
		
		//[Aggregate]
		public CrossReference getUpstreamExposedAggregatesAggregateCrossReference_2_1_1_1_1_0() { return cUpstreamExposedAggregatesAggregateCrossReference_2_1_1_1_1_0; }
		
		//ID
		public RuleCall getUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_1_1_0_1() { return cUpstreamExposedAggregatesAggregateIDTerminalRuleCall_2_1_1_1_1_0_1; }
		
		//exposedAggregatesComment=SL_COMMENT?
		public Assignment getExposedAggregatesCommentAssignment_2_1_1_2() { return cExposedAggregatesCommentAssignment_2_1_1_2; }
		
		//SL_COMMENT
		public RuleCall getExposedAggregatesCommentSL_COMMENTTerminalRuleCall_2_1_1_2_0() { return cExposedAggregatesCommentSL_COMMENTTerminalRuleCall_2_1_1_2_0; }
		
		//('downstreamRights' '='? downstreamGovernanceRights=DownstreamGovernanceRights)?
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//'downstreamRights'
		public Keyword getDownstreamRightsKeyword_2_1_2_0() { return cDownstreamRightsKeyword_2_1_2_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_2_1() { return cEqualsSignKeyword_2_1_2_1; }
		
		//downstreamGovernanceRights=DownstreamGovernanceRights
		public Assignment getDownstreamGovernanceRightsAssignment_2_1_2_2() { return cDownstreamGovernanceRightsAssignment_2_1_2_2; }
		
		//DownstreamGovernanceRights
		public RuleCall getDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_2_1_2_2_0() { return cDownstreamGovernanceRightsDownstreamGovernanceRightsEnumRuleCall_2_1_2_2_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class AggregateElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Aggregate");
		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 cAggregateKeyword_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 RuleCall cOPENTerminalRuleCall_4_0 = (RuleCall)cGroup_4.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4_1 = (UnorderedGroup)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cUnorderedGroup_4_1.eContents().get(0);
		private final Group cGroup_4_1_0_0 = (Group)cGroup_4_1_0.eContents().get(0);
		private final Keyword cResponsibilitiesKeyword_4_1_0_0_0 = (Keyword)cGroup_4_1_0_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_0_0_1 = (Keyword)cGroup_4_1_0_0.eContents().get(1);
		private final Assignment cResponsibilitiesAssignment_4_1_0_0_2 = (Assignment)cGroup_4_1_0_0.eContents().get(2);
		private final RuleCall cResponsibilitiesSTRINGTerminalRuleCall_4_1_0_0_2_0 = (RuleCall)cResponsibilitiesAssignment_4_1_0_0_2.eContents().get(0);
		private final Group cGroup_4_1_0_1 = (Group)cGroup_4_1_0.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_0_1_0 = (Keyword)cGroup_4_1_0_1.eContents().get(0);
		private final Assignment cResponsibilitiesAssignment_4_1_0_1_1 = (Assignment)cGroup_4_1_0_1.eContents().get(1);
		private final RuleCall cResponsibilitiesSTRINGTerminalRuleCall_4_1_0_1_1_0 = (RuleCall)cResponsibilitiesAssignment_4_1_0_1_1.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cUnorderedGroup_4_1.eContents().get(1);
		private final Group cGroup_4_1_1_0 = (Group)cGroup_4_1_1.eContents().get(0);
		private final Alternatives cAlternatives_4_1_1_0_0 = (Alternatives)cGroup_4_1_1_0.eContents().get(0);
		private final Keyword cUseCasesKeyword_4_1_1_0_0_0 = (Keyword)cAlternatives_4_1_1_0_0.eContents().get(0);
		private final Keyword cUserRequirementsKeyword_4_1_1_0_0_1 = (Keyword)cAlternatives_4_1_1_0_0.eContents().get(1);
		private final Keyword cEqualsSignKeyword_4_1_1_0_1 = (Keyword)cGroup_4_1_1_0.eContents().get(1);
		private final Assignment cUserRequirementsAssignment_4_1_1_0_2 = (Assignment)cGroup_4_1_1_0.eContents().get(2);
		private final CrossReference cUserRequirementsUserRequirementCrossReference_4_1_1_0_2_0 = (CrossReference)cUserRequirementsAssignment_4_1_1_0_2.eContents().get(0);
		private final RuleCall cUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_0_2_0_1 = (RuleCall)cUserRequirementsUserRequirementCrossReference_4_1_1_0_2_0.eContents().get(1);
		private final Group cGroup_4_1_1_1 = (Group)cGroup_4_1_1.eContents().get(1);
		private final Keyword cCommaKeyword_4_1_1_1_0 = (Keyword)cGroup_4_1_1_1.eContents().get(0);
		private final Assignment cUserRequirementsAssignment_4_1_1_1_1 = (Assignment)cGroup_4_1_1_1.eContents().get(1);
		private final CrossReference cUserRequirementsUserRequirementCrossReference_4_1_1_1_1_0 = (CrossReference)cUserRequirementsAssignment_4_1_1_1_1.eContents().get(0);
		private final RuleCall cUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_1_1_0_1 = (RuleCall)cUserRequirementsUserRequirementCrossReference_4_1_1_1_1_0.eContents().get(1);
		private final Group cGroup_4_1_2 = (Group)cUnorderedGroup_4_1.eContents().get(2);
		private final Keyword cOwnerKeyword_4_1_2_0 = (Keyword)cGroup_4_1_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_2_1 = (Keyword)cGroup_4_1_2.eContents().get(1);
		private final Assignment cOwnerAssignment_4_1_2_2 = (Assignment)cGroup_4_1_2.eContents().get(2);
		private final CrossReference cOwnerBoundedContextCrossReference_4_1_2_2_0 = (CrossReference)cOwnerAssignment_4_1_2_2.eContents().get(0);
		private final RuleCall cOwnerBoundedContextIDTerminalRuleCall_4_1_2_2_0_1 = (RuleCall)cOwnerBoundedContextCrossReference_4_1_2_2_0.eContents().get(1);
		private final Group cGroup_4_1_3 = (Group)cUnorderedGroup_4_1.eContents().get(3);
		private final Keyword cKnowledgeLevelKeyword_4_1_3_0 = (Keyword)cGroup_4_1_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_3_1 = (Keyword)cGroup_4_1_3.eContents().get(1);
		private final Assignment cKnowledgeLevelAssignment_4_1_3_2 = (Assignment)cGroup_4_1_3.eContents().get(2);
		private final RuleCall cKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_3_2_0 = (RuleCall)cKnowledgeLevelAssignment_4_1_3_2.eContents().get(0);
		private final Group cGroup_4_1_4 = (Group)cUnorderedGroup_4_1.eContents().get(4);
		private final Keyword cLikelihoodForChangeKeyword_4_1_4_0 = (Keyword)cGroup_4_1_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_4_1_4_1 = (Keyword)cGroup_4_1_4.eContents().get(1);
		private final Assignment cLikelihoodForChangeAssignment_4_1_4_2 = (Assignment)cGroup_4_1_4.eContents().get(2);
		private final RuleCall cLikelihoodForChangeLikelihoodForChangeEnumRuleCall_4_1_4_2_0 = (RuleCall)cLikelihoodForChangeAssignment_4_1_4_2.eContents().get(0);
		private final Alternatives cAlternatives_4_2 = (Alternatives)cGroup_4.eContents().get(2);
		private final Assignment cServicesAssignment_4_2_0 = (Assignment)cAlternatives_4_2.eContents().get(0);
		private final RuleCall cServicesServiceParserRuleCall_4_2_0_0 = (RuleCall)cServicesAssignment_4_2_0.eContents().get(0);
		private final Assignment cResourcesAssignment_4_2_1 = (Assignment)cAlternatives_4_2.eContents().get(1);
		private final RuleCall cResourcesResourceParserRuleCall_4_2_1_0 = (RuleCall)cResourcesAssignment_4_2_1.eContents().get(0);
		private final Assignment cConsumersAssignment_4_2_2 = (Assignment)cAlternatives_4_2.eContents().get(2);
		private final RuleCall cConsumersConsumerParserRuleCall_4_2_2_0 = (RuleCall)cConsumersAssignment_4_2_2.eContents().get(0);
		private final Assignment cDomainObjectsAssignment_4_2_3 = (Assignment)cAlternatives_4_2.eContents().get(3);
		private final RuleCall cDomainObjectsSimpleDomainObjectParserRuleCall_4_2_3_0 = (RuleCall)cDomainObjectsAssignment_4_2_3.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_4_3 = (RuleCall)cGroup_4.eContents().get(3);
		
		//Aggregate:
		//	comment=ML_COMMENT?
		//	doc=STRING?
		//	"Aggregate" name=ID (OPEN ((('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? &
		//	((('useCases' | 'userRequirements') '='? userRequirements+=[UserRequirement]) (","
		//	userRequirements+=[UserRequirement])*)? & ('owner' '='? owner=[BoundedContext])? & ('knowledgeLevel' '='?
		//	knowledgeLevel=KnowledgeLevel)? & ('likelihoodForChange' '='? likelihoodForChange=LikelihoodForChange)?)
		//	(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)*
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//comment=ML_COMMENT? doc=STRING? "Aggregate" name=ID (OPEN ((('responsibilities' '='? responsibilities+=STRING) (","
		//responsibilities+=STRING)*)? & ((('useCases' | 'userRequirements') '='? userRequirements+=[UserRequirement]) (","
		//userRequirements+=[UserRequirement])*)? & ('owner' '='? owner=[BoundedContext])? & ('knowledgeLevel' '='?
		//knowledgeLevel=KnowledgeLevel)? & ('likelihoodForChange' '='? likelihoodForChange=LikelihoodForChange)?)
		//(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)* CLOSE)?
		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; }
		
		//"Aggregate"
		public Keyword getAggregateKeyword_2() { return cAggregateKeyword_2; }
		
		//name=ID
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
		
		//(OPEN ((('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ((('useCases' |
		//'userRequirements') '='? userRequirements+=[UserRequirement]) ("," userRequirements+=[UserRequirement])*)? & ('owner'
		//'='? owner=[BoundedContext])? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)? & ('likelihoodForChange' '='?
		//likelihoodForChange=LikelihoodForChange)?) (services+=Service | resources+=Resource | consumers+=Consumer |
		//domainObjects+=SimpleDomainObject)* CLOSE)?
		public Group getGroup_4() { return cGroup_4; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_4_0() { return cOPENTerminalRuleCall_4_0; }
		
		//((('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ((('useCases' |
		//'userRequirements') '='? userRequirements+=[UserRequirement]) ("," userRequirements+=[UserRequirement])*)? & ('owner'
		//'='? owner=[BoundedContext])? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)? & ('likelihoodForChange' '='?
		//likelihoodForChange=LikelihoodForChange)?)
		public UnorderedGroup getUnorderedGroup_4_1() { return cUnorderedGroup_4_1; }
		
		//(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)?
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//('responsibilities' '='? responsibilities+=STRING)
		public Group getGroup_4_1_0_0() { return cGroup_4_1_0_0; }
		
		//'responsibilities'
		public Keyword getResponsibilitiesKeyword_4_1_0_0_0() { return cResponsibilitiesKeyword_4_1_0_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_0_0_1() { return cEqualsSignKeyword_4_1_0_0_1; }
		
		//responsibilities+=STRING
		public Assignment getResponsibilitiesAssignment_4_1_0_0_2() { return cResponsibilitiesAssignment_4_1_0_0_2; }
		
		//STRING
		public RuleCall getResponsibilitiesSTRINGTerminalRuleCall_4_1_0_0_2_0() { return cResponsibilitiesSTRINGTerminalRuleCall_4_1_0_0_2_0; }
		
		//("," responsibilities+=STRING)*
		public Group getGroup_4_1_0_1() { return cGroup_4_1_0_1; }
		
		//","
		public Keyword getCommaKeyword_4_1_0_1_0() { return cCommaKeyword_4_1_0_1_0; }
		
		//responsibilities+=STRING
		public Assignment getResponsibilitiesAssignment_4_1_0_1_1() { return cResponsibilitiesAssignment_4_1_0_1_1; }
		
		//STRING
		public RuleCall getResponsibilitiesSTRINGTerminalRuleCall_4_1_0_1_1_0() { return cResponsibilitiesSTRINGTerminalRuleCall_4_1_0_1_1_0; }
		
		//((('useCases' | 'userRequirements') '='? userRequirements+=[UserRequirement]) (","
		//userRequirements+=[UserRequirement])*)?
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }
		
		//(('useCases' | 'userRequirements') '='? userRequirements+=[UserRequirement])
		public Group getGroup_4_1_1_0() { return cGroup_4_1_1_0; }
		
		//('useCases' | 'userRequirements')
		public Alternatives getAlternatives_4_1_1_0_0() { return cAlternatives_4_1_1_0_0; }
		
		//'useCases'
		public Keyword getUseCasesKeyword_4_1_1_0_0_0() { return cUseCasesKeyword_4_1_1_0_0_0; }
		
		//'userRequirements'
		public Keyword getUserRequirementsKeyword_4_1_1_0_0_1() { return cUserRequirementsKeyword_4_1_1_0_0_1; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_1_0_1() { return cEqualsSignKeyword_4_1_1_0_1; }
		
		//userRequirements+=[UserRequirement]
		public Assignment getUserRequirementsAssignment_4_1_1_0_2() { return cUserRequirementsAssignment_4_1_1_0_2; }
		
		//[UserRequirement]
		public CrossReference getUserRequirementsUserRequirementCrossReference_4_1_1_0_2_0() { return cUserRequirementsUserRequirementCrossReference_4_1_1_0_2_0; }
		
		//ID
		public RuleCall getUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_0_2_0_1() { return cUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_0_2_0_1; }
		
		//("," userRequirements+=[UserRequirement])*
		public Group getGroup_4_1_1_1() { return cGroup_4_1_1_1; }
		
		//","
		public Keyword getCommaKeyword_4_1_1_1_0() { return cCommaKeyword_4_1_1_1_0; }
		
		//userRequirements+=[UserRequirement]
		public Assignment getUserRequirementsAssignment_4_1_1_1_1() { return cUserRequirementsAssignment_4_1_1_1_1; }
		
		//[UserRequirement]
		public CrossReference getUserRequirementsUserRequirementCrossReference_4_1_1_1_1_0() { return cUserRequirementsUserRequirementCrossReference_4_1_1_1_1_0; }
		
		//ID
		public RuleCall getUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_1_1_0_1() { return cUserRequirementsUserRequirementIDTerminalRuleCall_4_1_1_1_1_0_1; }
		
		//('owner' '='? owner=[BoundedContext])?
		public Group getGroup_4_1_2() { return cGroup_4_1_2; }
		
		//'owner'
		public Keyword getOwnerKeyword_4_1_2_0() { return cOwnerKeyword_4_1_2_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_2_1() { return cEqualsSignKeyword_4_1_2_1; }
		
		//owner=[BoundedContext]
		public Assignment getOwnerAssignment_4_1_2_2() { return cOwnerAssignment_4_1_2_2; }
		
		//[BoundedContext]
		public CrossReference getOwnerBoundedContextCrossReference_4_1_2_2_0() { return cOwnerBoundedContextCrossReference_4_1_2_2_0; }
		
		//ID
		public RuleCall getOwnerBoundedContextIDTerminalRuleCall_4_1_2_2_0_1() { return cOwnerBoundedContextIDTerminalRuleCall_4_1_2_2_0_1; }
		
		//('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?
		public Group getGroup_4_1_3() { return cGroup_4_1_3; }
		
		//'knowledgeLevel'
		public Keyword getKnowledgeLevelKeyword_4_1_3_0() { return cKnowledgeLevelKeyword_4_1_3_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_3_1() { return cEqualsSignKeyword_4_1_3_1; }
		
		//knowledgeLevel=KnowledgeLevel
		public Assignment getKnowledgeLevelAssignment_4_1_3_2() { return cKnowledgeLevelAssignment_4_1_3_2; }
		
		//KnowledgeLevel
		public RuleCall getKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_3_2_0() { return cKnowledgeLevelKnowledgeLevelEnumRuleCall_4_1_3_2_0; }
		
		//('likelihoodForChange' '='? likelihoodForChange=LikelihoodForChange)?
		public Group getGroup_4_1_4() { return cGroup_4_1_4; }
		
		//'likelihoodForChange'
		public Keyword getLikelihoodForChangeKeyword_4_1_4_0() { return cLikelihoodForChangeKeyword_4_1_4_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_4_1_4_1() { return cEqualsSignKeyword_4_1_4_1; }
		
		//likelihoodForChange=LikelihoodForChange
		public Assignment getLikelihoodForChangeAssignment_4_1_4_2() { return cLikelihoodForChangeAssignment_4_1_4_2; }
		
		//LikelihoodForChange
		public RuleCall getLikelihoodForChangeLikelihoodForChangeEnumRuleCall_4_1_4_2_0() { return cLikelihoodForChangeLikelihoodForChangeEnumRuleCall_4_1_4_2_0; }
		
		//(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)*
		public Alternatives getAlternatives_4_2() { return cAlternatives_4_2; }
		
		//services+=Service
		public Assignment getServicesAssignment_4_2_0() { return cServicesAssignment_4_2_0; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_4_2_0_0() { return cServicesServiceParserRuleCall_4_2_0_0; }
		
		//resources+=Resource
		public Assignment getResourcesAssignment_4_2_1() { return cResourcesAssignment_4_2_1; }
		
		//Resource
		public RuleCall getResourcesResourceParserRuleCall_4_2_1_0() { return cResourcesResourceParserRuleCall_4_2_1_0; }
		
		//consumers+=Consumer
		public Assignment getConsumersAssignment_4_2_2() { return cConsumersAssignment_4_2_2; }
		
		//Consumer
		public RuleCall getConsumersConsumerParserRuleCall_4_2_2_0() { return cConsumersConsumerParserRuleCall_4_2_2_0; }
		
		//domainObjects+=SimpleDomainObject
		public Assignment getDomainObjectsAssignment_4_2_3() { return cDomainObjectsAssignment_4_2_3; }
		
		//SimpleDomainObject
		public RuleCall getDomainObjectsSimpleDomainObjectParserRuleCall_4_2_3_0() { return cDomainObjectsSimpleDomainObjectParserRuleCall_4_2_3_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_4_3() { return cCLOSETerminalRuleCall_4_3; }
	}
	public class UserRequirementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UserRequirement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cUseCaseParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cUserStoryParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//UserRequirement:
		//	UseCase | UserStory;
		@Override public ParserRule getRule() { return rule; }
		
		//UseCase | UserStory
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//UseCase
		public RuleCall getUseCaseParserRuleCall_0() { return cUseCaseParserRuleCall_0; }
		
		//UserStory
		public RuleCall getUserStoryParserRuleCall_1() { return cUserStoryParserRuleCall_1; }
	}
	public class UseCaseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UseCase");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUseCaseKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_2_1 = (UnorderedGroup)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cUnorderedGroup_2_1.eContents().get(0);
		private final Keyword cActorKeyword_2_1_0_0 = (Keyword)cGroup_2_1_0.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_0_1 = (Keyword)cGroup_2_1_0.eContents().get(1);
		private final Assignment cRoleAssignment_2_1_0_2 = (Assignment)cGroup_2_1_0.eContents().get(2);
		private final RuleCall cRoleSTRINGTerminalRuleCall_2_1_0_2_0 = (RuleCall)cRoleAssignment_2_1_0_2.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cUnorderedGroup_2_1.eContents().get(1);
		private final Keyword cInteractionsKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1_1 = (Keyword)cGroup_2_1_1.eContents().get(1);
		private final Assignment cFeaturesAssignment_2_1_1_2 = (Assignment)cGroup_2_1_1.eContents().get(2);
		private final RuleCall cFeaturesFeatureParserRuleCall_2_1_1_2_0 = (RuleCall)cFeaturesAssignment_2_1_1_2.eContents().get(0);
		private final Group cGroup_2_1_1_3 = (Group)cGroup_2_1_1.eContents().get(3);
		private final Keyword cCommaKeyword_2_1_1_3_0 = (Keyword)cGroup_2_1_1_3.eContents().get(0);
		private final Assignment cFeaturesAssignment_2_1_1_3_1 = (Assignment)cGroup_2_1_1_3.eContents().get(1);
		private final RuleCall cFeaturesFeatureParserRuleCall_2_1_1_3_1_0 = (RuleCall)cFeaturesAssignment_2_1_1_3_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cUnorderedGroup_2_1.eContents().get(2);
		private final Keyword cBenefitKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_2_1 = (Keyword)cGroup_2_1_2.eContents().get(1);
		private final Assignment cBenefitAssignment_2_1_2_2 = (Assignment)cGroup_2_1_2.eContents().get(2);
		private final RuleCall cBenefitSTRINGTerminalRuleCall_2_1_2_2_0 = (RuleCall)cBenefitAssignment_2_1_2_2.eContents().get(0);
		private final Group cGroup_2_1_3 = (Group)cUnorderedGroup_2_1.eContents().get(3);
		private final Keyword cScopeKeyword_2_1_3_0 = (Keyword)cGroup_2_1_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_3_1 = (Keyword)cGroup_2_1_3.eContents().get(1);
		private final Assignment cScopeAssignment_2_1_3_2 = (Assignment)cGroup_2_1_3.eContents().get(2);
		private final RuleCall cScopeSTRINGTerminalRuleCall_2_1_3_2_0 = (RuleCall)cScopeAssignment_2_1_3_2.eContents().get(0);
		private final Group cGroup_2_1_4 = (Group)cUnorderedGroup_2_1.eContents().get(4);
		private final Keyword cLevelKeyword_2_1_4_0 = (Keyword)cGroup_2_1_4.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_4_1 = (Keyword)cGroup_2_1_4.eContents().get(1);
		private final Assignment cLevelAssignment_2_1_4_2 = (Assignment)cGroup_2_1_4.eContents().get(2);
		private final RuleCall cLevelSTRINGTerminalRuleCall_2_1_4_2_0 = (RuleCall)cLevelAssignment_2_1_4_2.eContents().get(0);
		private final Group cGroup_2_1_5 = (Group)cUnorderedGroup_2_1.eContents().get(5);
		private final Keyword cIsLatencyCriticalKeyword_2_1_5_0 = (Keyword)cGroup_2_1_5.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_5_1 = (Keyword)cGroup_2_1_5.eContents().get(1);
		private final Assignment cIsLatencyCriticalAssignment_2_1_5_2 = (Assignment)cGroup_2_1_5.eContents().get(2);
		private final Keyword cIsLatencyCriticalTrueKeyword_2_1_5_2_0 = (Keyword)cIsLatencyCriticalAssignment_2_1_5_2.eContents().get(0);
		private final Group cGroup_2_1_6 = (Group)cUnorderedGroup_2_1.eContents().get(6);
		private final Group cGroup_2_1_6_0 = (Group)cGroup_2_1_6.eContents().get(0);
		private final Keyword cReadsKeyword_2_1_6_0_0 = (Keyword)cGroup_2_1_6_0.eContents().get(0);
		private final Assignment cNanoentitiesReadAssignment_2_1_6_0_1 = (Assignment)cGroup_2_1_6_0.eContents().get(1);
		private final RuleCall cNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_0_1_0 = (RuleCall)cNanoentitiesReadAssignment_2_1_6_0_1.eContents().get(0);
		private final Group cGroup_2_1_6_1 = (Group)cGroup_2_1_6.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_6_1_0 = (Keyword)cGroup_2_1_6_1.eContents().get(0);
		private final Assignment cNanoentitiesReadAssignment_2_1_6_1_1 = (Assignment)cGroup_2_1_6_1.eContents().get(1);
		private final RuleCall cNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_1_1_0 = (RuleCall)cNanoentitiesReadAssignment_2_1_6_1_1.eContents().get(0);
		private final Group cGroup_2_1_7 = (Group)cUnorderedGroup_2_1.eContents().get(7);
		private final Group cGroup_2_1_7_0 = (Group)cGroup_2_1_7.eContents().get(0);
		private final Keyword cWritesKeyword_2_1_7_0_0 = (Keyword)cGroup_2_1_7_0.eContents().get(0);
		private final Assignment cNanoentitiesWrittenAssignment_2_1_7_0_1 = (Assignment)cGroup_2_1_7_0.eContents().get(1);
		private final RuleCall cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_0_1_0 = (RuleCall)cNanoentitiesWrittenAssignment_2_1_7_0_1.eContents().get(0);
		private final Group cGroup_2_1_7_1 = (Group)cGroup_2_1_7.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_7_1_0 = (Keyword)cGroup_2_1_7_1.eContents().get(0);
		private final Assignment cNanoentitiesWrittenAssignment_2_1_7_1_1 = (Assignment)cGroup_2_1_7_1.eContents().get(1);
		private final RuleCall cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_1_1_0 = (RuleCall)cNanoentitiesWrittenAssignment_2_1_7_1_1.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//UseCase:
		//	'UseCase' name=ID (OPEN (('actor' '='? role=STRING)? & ('interactions' '='? features+=Feature (","
		//	features+=Feature)*)? & ('benefit' '='? benefit=STRING)? & ('scope' '='? scope=STRING)? & ('level' '='? level=STRING)?
		//	& ('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
		//	nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//'UseCase' name=ID (OPEN (('actor' '='? role=STRING)? & ('interactions' '='? features+=Feature ("," features+=Feature)*)?
		//& ('benefit' '='? benefit=STRING)? & ('scope' '='? scope=STRING)? & ('level' '='? level=STRING)? & ('isLatencyCritical'
		//'='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)? & (('writes'
		//nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//'UseCase'
		public Keyword getUseCaseKeyword_0() { return cUseCaseKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(OPEN (('actor' '='? role=STRING)? & ('interactions' '='? features+=Feature ("," features+=Feature)*)? & ('benefit' '='?
		//benefit=STRING)? & ('scope' '='? scope=STRING)? & ('level' '='? level=STRING)? & ('isLatencyCritical' '='?
		//isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)? & (('writes'
		//nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//(('actor' '='? role=STRING)? & ('interactions' '='? features+=Feature ("," features+=Feature)*)? & ('benefit' '='?
		//benefit=STRING)? & ('scope' '='? scope=STRING)? & ('level' '='? level=STRING)? & ('isLatencyCritical' '='?
		//isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)? & (('writes'
		//nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?)
		public UnorderedGroup getUnorderedGroup_2_1() { return cUnorderedGroup_2_1; }
		
		//('actor' '='? role=STRING)?
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//'actor'
		public Keyword getActorKeyword_2_1_0_0() { return cActorKeyword_2_1_0_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_0_1() { return cEqualsSignKeyword_2_1_0_1; }
		
		//role=STRING
		public Assignment getRoleAssignment_2_1_0_2() { return cRoleAssignment_2_1_0_2; }
		
		//STRING
		public RuleCall getRoleSTRINGTerminalRuleCall_2_1_0_2_0() { return cRoleSTRINGTerminalRuleCall_2_1_0_2_0; }
		
		//('interactions' '='? features+=Feature ("," features+=Feature)*)?
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//'interactions'
		public Keyword getInteractionsKeyword_2_1_1_0() { return cInteractionsKeyword_2_1_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1_1() { return cEqualsSignKeyword_2_1_1_1; }
		
		//features+=Feature
		public Assignment getFeaturesAssignment_2_1_1_2() { return cFeaturesAssignment_2_1_1_2; }
		
		//Feature
		public RuleCall getFeaturesFeatureParserRuleCall_2_1_1_2_0() { return cFeaturesFeatureParserRuleCall_2_1_1_2_0; }
		
		//("," features+=Feature)*
		public Group getGroup_2_1_1_3() { return cGroup_2_1_1_3; }
		
		//","
		public Keyword getCommaKeyword_2_1_1_3_0() { return cCommaKeyword_2_1_1_3_0; }
		
		//features+=Feature
		public Assignment getFeaturesAssignment_2_1_1_3_1() { return cFeaturesAssignment_2_1_1_3_1; }
		
		//Feature
		public RuleCall getFeaturesFeatureParserRuleCall_2_1_1_3_1_0() { return cFeaturesFeatureParserRuleCall_2_1_1_3_1_0; }
		
		//('benefit' '='? benefit=STRING)?
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//'benefit'
		public Keyword getBenefitKeyword_2_1_2_0() { return cBenefitKeyword_2_1_2_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_2_1() { return cEqualsSignKeyword_2_1_2_1; }
		
		//benefit=STRING
		public Assignment getBenefitAssignment_2_1_2_2() { return cBenefitAssignment_2_1_2_2; }
		
		//STRING
		public RuleCall getBenefitSTRINGTerminalRuleCall_2_1_2_2_0() { return cBenefitSTRINGTerminalRuleCall_2_1_2_2_0; }
		
		//('scope' '='? scope=STRING)?
		public Group getGroup_2_1_3() { return cGroup_2_1_3; }
		
		//'scope'
		public Keyword getScopeKeyword_2_1_3_0() { return cScopeKeyword_2_1_3_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_3_1() { return cEqualsSignKeyword_2_1_3_1; }
		
		//scope=STRING
		public Assignment getScopeAssignment_2_1_3_2() { return cScopeAssignment_2_1_3_2; }
		
		//STRING
		public RuleCall getScopeSTRINGTerminalRuleCall_2_1_3_2_0() { return cScopeSTRINGTerminalRuleCall_2_1_3_2_0; }
		
		//('level' '='? level=STRING)?
		public Group getGroup_2_1_4() { return cGroup_2_1_4; }
		
		//'level'
		public Keyword getLevelKeyword_2_1_4_0() { return cLevelKeyword_2_1_4_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_4_1() { return cEqualsSignKeyword_2_1_4_1; }
		
		//level=STRING
		public Assignment getLevelAssignment_2_1_4_2() { return cLevelAssignment_2_1_4_2; }
		
		//STRING
		public RuleCall getLevelSTRINGTerminalRuleCall_2_1_4_2_0() { return cLevelSTRINGTerminalRuleCall_2_1_4_2_0; }
		
		//('isLatencyCritical' '='? isLatencyCritical?='true')?
		public Group getGroup_2_1_5() { return cGroup_2_1_5; }
		
		//'isLatencyCritical'
		public Keyword getIsLatencyCriticalKeyword_2_1_5_0() { return cIsLatencyCriticalKeyword_2_1_5_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_5_1() { return cEqualsSignKeyword_2_1_5_1; }
		
		//isLatencyCritical?='true'
		public Assignment getIsLatencyCriticalAssignment_2_1_5_2() { return cIsLatencyCriticalAssignment_2_1_5_2; }
		
		//'true'
		public Keyword getIsLatencyCriticalTrueKeyword_2_1_5_2_0() { return cIsLatencyCriticalTrueKeyword_2_1_5_2_0; }
		
		//(('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)?
		public Group getGroup_2_1_6() { return cGroup_2_1_6; }
		
		//('reads' nanoentitiesRead+=STRING*)
		public Group getGroup_2_1_6_0() { return cGroup_2_1_6_0; }
		
		//'reads'
		public Keyword getReadsKeyword_2_1_6_0_0() { return cReadsKeyword_2_1_6_0_0; }
		
		//nanoentitiesRead+=STRING*
		public Assignment getNanoentitiesReadAssignment_2_1_6_0_1() { return cNanoentitiesReadAssignment_2_1_6_0_1; }
		
		//STRING
		public RuleCall getNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_0_1_0() { return cNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_0_1_0; }
		
		//("," nanoentitiesRead+=STRING)*
		public Group getGroup_2_1_6_1() { return cGroup_2_1_6_1; }
		
		//","
		public Keyword getCommaKeyword_2_1_6_1_0() { return cCommaKeyword_2_1_6_1_0; }
		
		//nanoentitiesRead+=STRING
		public Assignment getNanoentitiesReadAssignment_2_1_6_1_1() { return cNanoentitiesReadAssignment_2_1_6_1_1; }
		
		//STRING
		public RuleCall getNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_1_1_0() { return cNanoentitiesReadSTRINGTerminalRuleCall_2_1_6_1_1_0; }
		
		//(('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?
		public Group getGroup_2_1_7() { return cGroup_2_1_7; }
		
		//('writes' nanoentitiesWritten+=STRING*)
		public Group getGroup_2_1_7_0() { return cGroup_2_1_7_0; }
		
		//'writes'
		public Keyword getWritesKeyword_2_1_7_0_0() { return cWritesKeyword_2_1_7_0_0; }
		
		//nanoentitiesWritten+=STRING*
		public Assignment getNanoentitiesWrittenAssignment_2_1_7_0_1() { return cNanoentitiesWrittenAssignment_2_1_7_0_1; }
		
		//STRING
		public RuleCall getNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_0_1_0() { return cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_0_1_0; }
		
		//("," nanoentitiesWritten+=STRING)*
		public Group getGroup_2_1_7_1() { return cGroup_2_1_7_1; }
		
		//","
		public Keyword getCommaKeyword_2_1_7_1_0() { return cCommaKeyword_2_1_7_1_0; }
		
		//nanoentitiesWritten+=STRING
		public Assignment getNanoentitiesWrittenAssignment_2_1_7_1_1() { return cNanoentitiesWrittenAssignment_2_1_7_1_1; }
		
		//STRING
		public RuleCall getNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_1_1_0() { return cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_7_1_1_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class UserStoryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UserStory");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUserStoryKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cOPENTerminalRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_2_1 = (UnorderedGroup)cGroup_2.eContents().get(1);
		private final Group cGroup_2_1_0 = (Group)cUnorderedGroup_2_1.eContents().get(0);
		private final Alternatives cAlternatives_2_1_0_0 = (Alternatives)cGroup_2_1_0.eContents().get(0);
		private final Keyword cAsAKeyword_2_1_0_0_0 = (Keyword)cAlternatives_2_1_0_0.eContents().get(0);
		private final Keyword cAsAnKeyword_2_1_0_0_1 = (Keyword)cAlternatives_2_1_0_0.eContents().get(1);
		private final Assignment cRoleAssignment_2_1_0_1 = (Assignment)cGroup_2_1_0.eContents().get(1);
		private final RuleCall cRoleSTRINGTerminalRuleCall_2_1_0_1_0 = (RuleCall)cRoleAssignment_2_1_0_1.eContents().get(0);
		private final Group cGroup_2_1_0_2 = (Group)cGroup_2_1_0.eContents().get(2);
		private final Keyword cIWantToKeyword_2_1_0_2_0 = (Keyword)cGroup_2_1_0_2.eContents().get(0);
		private final Assignment cFeaturesAssignment_2_1_0_2_1 = (Assignment)cGroup_2_1_0_2.eContents().get(1);
		private final RuleCall cFeaturesFeatureParserRuleCall_2_1_0_2_1_0 = (RuleCall)cFeaturesAssignment_2_1_0_2_1.eContents().get(0);
		private final Keyword cSoThatKeyword_2_1_0_3 = (Keyword)cGroup_2_1_0.eContents().get(3);
		private final Assignment cBenefitAssignment_2_1_0_4 = (Assignment)cGroup_2_1_0.eContents().get(4);
		private final RuleCall cBenefitSTRINGTerminalRuleCall_2_1_0_4_0 = (RuleCall)cBenefitAssignment_2_1_0_4.eContents().get(0);
		private final Group cGroup_2_1_1 = (Group)cUnorderedGroup_2_1.eContents().get(1);
		private final Keyword cIsLatencyCriticalKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
		private final Keyword cEqualsSignKeyword_2_1_1_1 = (Keyword)cGroup_2_1_1.eContents().get(1);
		private final Assignment cIsLatencyCriticalAssignment_2_1_1_2 = (Assignment)cGroup_2_1_1.eContents().get(2);
		private final Keyword cIsLatencyCriticalTrueKeyword_2_1_1_2_0 = (Keyword)cIsLatencyCriticalAssignment_2_1_1_2.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cUnorderedGroup_2_1.eContents().get(2);
		private final Group cGroup_2_1_2_0 = (Group)cGroup_2_1_2.eContents().get(0);
		private final Keyword cReadsKeyword_2_1_2_0_0 = (Keyword)cGroup_2_1_2_0.eContents().get(0);
		private final Assignment cNanoentitiesReadAssignment_2_1_2_0_1 = (Assignment)cGroup_2_1_2_0.eContents().get(1);
		private final RuleCall cNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_0_1_0 = (RuleCall)cNanoentitiesReadAssignment_2_1_2_0_1.eContents().get(0);
		private final Group cGroup_2_1_2_1 = (Group)cGroup_2_1_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_2_1_0 = (Keyword)cGroup_2_1_2_1.eContents().get(0);
		private final Assignment cNanoentitiesReadAssignment_2_1_2_1_1 = (Assignment)cGroup_2_1_2_1.eContents().get(1);
		private final RuleCall cNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_1_1_0 = (RuleCall)cNanoentitiesReadAssignment_2_1_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_3 = (Group)cUnorderedGroup_2_1.eContents().get(3);
		private final Group cGroup_2_1_3_0 = (Group)cGroup_2_1_3.eContents().get(0);
		private final Keyword cWritesKeyword_2_1_3_0_0 = (Keyword)cGroup_2_1_3_0.eContents().get(0);
		private final Assignment cNanoentitiesWrittenAssignment_2_1_3_0_1 = (Assignment)cGroup_2_1_3_0.eContents().get(1);
		private final RuleCall cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_0_1_0 = (RuleCall)cNanoentitiesWrittenAssignment_2_1_3_0_1.eContents().get(0);
		private final Group cGroup_2_1_3_1 = (Group)cGroup_2_1_3.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_3_1_0 = (Keyword)cGroup_2_1_3_1.eContents().get(0);
		private final Assignment cNanoentitiesWrittenAssignment_2_1_3_1_1 = (Assignment)cGroup_2_1_3_1.eContents().get(1);
		private final RuleCall cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_1_1_0 = (RuleCall)cNanoentitiesWrittenAssignment_2_1_3_1_1.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_2_2 = (RuleCall)cGroup_2.eContents().get(2);
		
		//UserStory:
		//	'UserStory' name=ID (OPEN ((('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)?
		//	& ('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
		//	nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//'UserStory' name=ID (OPEN ((('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)? &
		//('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
		//nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//'UserStory'
		public Keyword getUserStoryKeyword_0() { return cUserStoryKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(OPEN ((('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)? &
		//('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
		//nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?
		public Group getGroup_2() { return cGroup_2; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_2_0() { return cOPENTerminalRuleCall_2_0; }
		
		//((('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)? & ('isLatencyCritical' '='?
		//isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)? & (('writes'
		//nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?)
		public UnorderedGroup getUnorderedGroup_2_1() { return cUnorderedGroup_2_1; }
		
		//(('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)?
		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
		
		//('As a' | 'As an')
		public Alternatives getAlternatives_2_1_0_0() { return cAlternatives_2_1_0_0; }
		
		//'As a'
		public Keyword getAsAKeyword_2_1_0_0_0() { return cAsAKeyword_2_1_0_0_0; }
		
		//'As an'
		public Keyword getAsAnKeyword_2_1_0_0_1() { return cAsAnKeyword_2_1_0_0_1; }
		
		//role=STRING
		public Assignment getRoleAssignment_2_1_0_1() { return cRoleAssignment_2_1_0_1; }
		
		//STRING
		public RuleCall getRoleSTRINGTerminalRuleCall_2_1_0_1_0() { return cRoleSTRINGTerminalRuleCall_2_1_0_1_0; }
		
		//('I want to' features+=Feature)+
		public Group getGroup_2_1_0_2() { return cGroup_2_1_0_2; }
		
		//'I want to'
		public Keyword getIWantToKeyword_2_1_0_2_0() { return cIWantToKeyword_2_1_0_2_0; }
		
		//features+=Feature
		public Assignment getFeaturesAssignment_2_1_0_2_1() { return cFeaturesAssignment_2_1_0_2_1; }
		
		//Feature
		public RuleCall getFeaturesFeatureParserRuleCall_2_1_0_2_1_0() { return cFeaturesFeatureParserRuleCall_2_1_0_2_1_0; }
		
		//'so that'
		public Keyword getSoThatKeyword_2_1_0_3() { return cSoThatKeyword_2_1_0_3; }
		
		//benefit=STRING
		public Assignment getBenefitAssignment_2_1_0_4() { return cBenefitAssignment_2_1_0_4; }
		
		//STRING
		public RuleCall getBenefitSTRINGTerminalRuleCall_2_1_0_4_0() { return cBenefitSTRINGTerminalRuleCall_2_1_0_4_0; }
		
		//('isLatencyCritical' '='? isLatencyCritical?='true')?
		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
		
		//'isLatencyCritical'
		public Keyword getIsLatencyCriticalKeyword_2_1_1_0() { return cIsLatencyCriticalKeyword_2_1_1_0; }
		
		//'='?
		public Keyword getEqualsSignKeyword_2_1_1_1() { return cEqualsSignKeyword_2_1_1_1; }
		
		//isLatencyCritical?='true'
		public Assignment getIsLatencyCriticalAssignment_2_1_1_2() { return cIsLatencyCriticalAssignment_2_1_1_2; }
		
		//'true'
		public Keyword getIsLatencyCriticalTrueKeyword_2_1_1_2_0() { return cIsLatencyCriticalTrueKeyword_2_1_1_2_0; }
		
		//(('reads' nanoentitiesRead+=STRING*) ("," nanoentitiesRead+=STRING)*)?
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//('reads' nanoentitiesRead+=STRING*)
		public Group getGroup_2_1_2_0() { return cGroup_2_1_2_0; }
		
		//'reads'
		public Keyword getReadsKeyword_2_1_2_0_0() { return cReadsKeyword_2_1_2_0_0; }
		
		//nanoentitiesRead+=STRING*
		public Assignment getNanoentitiesReadAssignment_2_1_2_0_1() { return cNanoentitiesReadAssignment_2_1_2_0_1; }
		
		//STRING
		public RuleCall getNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_0_1_0() { return cNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_0_1_0; }
		
		//("," nanoentitiesRead+=STRING)*
		public Group getGroup_2_1_2_1() { return cGroup_2_1_2_1; }
		
		//","
		public Keyword getCommaKeyword_2_1_2_1_0() { return cCommaKeyword_2_1_2_1_0; }
		
		//nanoentitiesRead+=STRING
		public Assignment getNanoentitiesReadAssignment_2_1_2_1_1() { return cNanoentitiesReadAssignment_2_1_2_1_1; }
		
		//STRING
		public RuleCall getNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_1_1_0() { return cNanoentitiesReadSTRINGTerminalRuleCall_2_1_2_1_1_0; }
		
		//(('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?
		public Group getGroup_2_1_3() { return cGroup_2_1_3; }
		
		//('writes' nanoentitiesWritten+=STRING*)
		public Group getGroup_2_1_3_0() { return cGroup_2_1_3_0; }
		
		//'writes'
		public Keyword getWritesKeyword_2_1_3_0_0() { return cWritesKeyword_2_1_3_0_0; }
		
		//nanoentitiesWritten+=STRING*
		public Assignment getNanoentitiesWrittenAssignment_2_1_3_0_1() { return cNanoentitiesWrittenAssignment_2_1_3_0_1; }
		
		//STRING
		public RuleCall getNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_0_1_0() { return cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_0_1_0; }
		
		//("," nanoentitiesWritten+=STRING)*
		public Group getGroup_2_1_3_1() { return cGroup_2_1_3_1; }
		
		//","
		public Keyword getCommaKeyword_2_1_3_1_0() { return cCommaKeyword_2_1_3_1_0; }
		
		//nanoentitiesWritten+=STRING
		public Assignment getNanoentitiesWrittenAssignment_2_1_3_1_1() { return cNanoentitiesWrittenAssignment_2_1_3_1_1; }
		
		//STRING
		public RuleCall getNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_1_1_0() { return cNanoentitiesWrittenSTRINGTerminalRuleCall_2_1_3_1_1_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_2_2() { return cCLOSETerminalRuleCall_2_2; }
	}
	public class FeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.Feature");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cVerbAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cVerbAlternatives_0_0 = (Alternatives)cVerbAssignment_0.eContents().get(0);
		private final RuleCall cVerbUserActivityDefaultVerbParserRuleCall_0_0_0 = (RuleCall)cVerbAlternatives_0_0.eContents().get(0);
		private final RuleCall cVerbSTRINGTerminalRuleCall_0_0_1 = (RuleCall)cVerbAlternatives_0_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Keyword cAKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
		private final Keyword cAnKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
		private final Assignment cEntityAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cEntitySTRINGTerminalRuleCall_2_0 = (RuleCall)cEntityAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_3_0 = (Alternatives)cGroup_3.eContents().get(0);
		private final Keyword cWithItsKeyword_3_0_0 = (Keyword)cAlternatives_3_0.eContents().get(0);
		private final Keyword cWithTheirKeyword_3_0_1 = (Keyword)cAlternatives_3_0.eContents().get(1);
		private final Assignment cEntityAttributesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cEntityAttributesSTRINGTerminalRuleCall_3_1_0 = (RuleCall)cEntityAttributesAssignment_3_1.eContents().get(0);
		private final Group cGroup_3_2 = (Group)cGroup_3.eContents().get(2);
		private final Keyword cCommaKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
		private final Assignment cEntityAttributesAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
		private final RuleCall cEntityAttributesSTRINGTerminalRuleCall_3_2_1_0 = (RuleCall)cEntityAttributesAssignment_3_2_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Alternatives cAlternatives_4_0 = (Alternatives)cGroup_4.eContents().get(0);
		private final Keyword cInKeyword_4_0_0 = (Keyword)cAlternatives_4_0.eContents().get(0);
		private final Keyword cForKeyword_4_0_1 = (Keyword)cAlternatives_4_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Keyword cAKeyword_4_1_0 = (Keyword)cAlternatives_4_1.eContents().get(0);
		private final Keyword cAnKeyword_4_1_1 = (Keyword)cAlternatives_4_1.eContents().get(1);
		private final Assignment cContainerEntityAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cContainerEntitySTRINGTerminalRuleCall_4_2_0 = (RuleCall)cContainerEntityAssignment_4_2.eContents().get(0);
		
		//Feature:
		//	verb=(UserActivityDefaultVerb | STRING) ('a' | 'an')? entity=STRING (('with its' | 'with their')
		//	entityAttributes+=STRING ("," entityAttributes+=STRING)*)? (('in' | 'for') ('a' | 'an')? containerEntity=STRING)?;
		@Override public ParserRule getRule() { return rule; }
		
		//verb=(UserActivityDefaultVerb | STRING) ('a' | 'an')? entity=STRING (('with its' | 'with their')
		//entityAttributes+=STRING ("," entityAttributes+=STRING)*)? (('in' | 'for') ('a' | 'an')? containerEntity=STRING)?
		public Group getGroup() { return cGroup; }
		
		//verb=(UserActivityDefaultVerb | STRING)
		public Assignment getVerbAssignment_0() { return cVerbAssignment_0; }
		
		//(UserActivityDefaultVerb | STRING)
		public Alternatives getVerbAlternatives_0_0() { return cVerbAlternatives_0_0; }
		
		//UserActivityDefaultVerb
		public RuleCall getVerbUserActivityDefaultVerbParserRuleCall_0_0_0() { return cVerbUserActivityDefaultVerbParserRuleCall_0_0_0; }
		
		//STRING
		public RuleCall getVerbSTRINGTerminalRuleCall_0_0_1() { return cVerbSTRINGTerminalRuleCall_0_0_1; }
		
		//('a' | 'an')?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//'a'
		public Keyword getAKeyword_1_0() { return cAKeyword_1_0; }
		
		//'an'
		public Keyword getAnKeyword_1_1() { return cAnKeyword_1_1; }
		
		//entity=STRING
		public Assignment getEntityAssignment_2() { return cEntityAssignment_2; }
		
		//STRING
		public RuleCall getEntitySTRINGTerminalRuleCall_2_0() { return cEntitySTRINGTerminalRuleCall_2_0; }
		
		//(('with its' | 'with their') entityAttributes+=STRING ("," entityAttributes+=STRING)*)?
		public Group getGroup_3() { return cGroup_3; }
		
		//('with its' | 'with their')
		public Alternatives getAlternatives_3_0() { return cAlternatives_3_0; }
		
		//'with its'
		public Keyword getWithItsKeyword_3_0_0() { return cWithItsKeyword_3_0_0; }
		
		//'with their'
		public Keyword getWithTheirKeyword_3_0_1() { return cWithTheirKeyword_3_0_1; }
		
		//entityAttributes+=STRING
		public Assignment getEntityAttributesAssignment_3_1() { return cEntityAttributesAssignment_3_1; }
		
		//STRING
		public RuleCall getEntityAttributesSTRINGTerminalRuleCall_3_1_0() { return cEntityAttributesSTRINGTerminalRuleCall_3_1_0; }
		
		//("," entityAttributes+=STRING)*
		public Group getGroup_3_2() { return cGroup_3_2; }
		
		//","
		public Keyword getCommaKeyword_3_2_0() { return cCommaKeyword_3_2_0; }
		
		//entityAttributes+=STRING
		public Assignment getEntityAttributesAssignment_3_2_1() { return cEntityAttributesAssignment_3_2_1; }
		
		//STRING
		public RuleCall getEntityAttributesSTRINGTerminalRuleCall_3_2_1_0() { return cEntityAttributesSTRINGTerminalRuleCall_3_2_1_0; }
		
		//(('in' | 'for') ('a' | 'an')? containerEntity=STRING)?
		public Group getGroup_4() { return cGroup_4; }
		
		//('in' | 'for')
		public Alternatives getAlternatives_4_0() { return cAlternatives_4_0; }
		
		//'in'
		public Keyword getInKeyword_4_0_0() { return cInKeyword_4_0_0; }
		
		//'for'
		public Keyword getForKeyword_4_0_1() { return cForKeyword_4_0_1; }
		
		//('a' | 'an')?
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//'a'
		public Keyword getAKeyword_4_1_0() { return cAKeyword_4_1_0; }
		
		//'an'
		public Keyword getAnKeyword_4_1_1() { return cAnKeyword_4_1_1; }
		
		//containerEntity=STRING
		public Assignment getContainerEntityAssignment_4_2() { return cContainerEntityAssignment_4_2; }
		
		//STRING
		public RuleCall getContainerEntitySTRINGTerminalRuleCall_4_2_0() { return cContainerEntitySTRINGTerminalRuleCall_4_2_0; }
	}
	public class UserActivityDefaultVerbElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UserActivityDefaultVerb");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cCreateKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cReadKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cUpdateKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cDeleteKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		
		//UserActivityDefaultVerb:
		//	'create' | 'read' | 'update' | 'delete';
		@Override public ParserRule getRule() { return rule; }
		
		//'create' | 'read' | 'update' | 'delete'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'create'
		public Keyword getCreateKeyword_0() { return cCreateKeyword_0; }
		
		//'read'
		public Keyword getReadKeyword_1() { return cReadKeyword_1; }
		
		//'update'
		public Keyword getUpdateKeyword_2() { return cUpdateKeyword_2; }
		
		//'delete'
		public Keyword getDeleteKeyword_3() { return cDeleteKeyword_3; }
	}
	public class SculptorModuleElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.SculptorModule");
		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 cModuleKeyword_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 RuleCall cOPENTerminalRuleCall_3_0 = (RuleCall)cGroup_3.eContents().get(0);
		private final Assignment cExternalAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final Keyword cExternalExternalKeyword_3_1_0 = (Keyword)cExternalAssignment_3_1.eContents().get(0);
		private final Group cGroup_3_2 = (Group)cGroup_3.eContents().get(2);
		private final Keyword cBasePackageKeyword_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 cBasePackageAssignment_3_2_2 = (Assignment)cGroup_3_2.eContents().get(2);
		private final RuleCall cBasePackageJavaIdentifierParserRuleCall_3_2_2_0 = (RuleCall)cBasePackageAssignment_3_2_2.eContents().get(0);
		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
		private final Keyword cHintKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_3_1 = (Keyword)cGroup_3_3.eContents().get(1);
		private final Assignment cHintAssignment_3_3_2 = (Assignment)cGroup_3_3.eContents().get(2);
		private final RuleCall cHintSTRINGTerminalRuleCall_3_3_2_0 = (RuleCall)cHintAssignment_3_3_2.eContents().get(0);
		private final Alternatives cAlternatives_3_4 = (Alternatives)cGroup_3.eContents().get(4);
		private final Assignment cServicesAssignment_3_4_0 = (Assignment)cAlternatives_3_4.eContents().get(0);
		private final RuleCall cServicesServiceParserRuleCall_3_4_0_0 = (RuleCall)cServicesAssignment_3_4_0.eContents().get(0);
		private final Assignment cResourcesAssignment_3_4_1 = (Assignment)cAlternatives_3_4.eContents().get(1);
		private final RuleCall cResourcesResourceParserRuleCall_3_4_1_0 = (RuleCall)cResourcesAssignment_3_4_1.eContents().get(0);
		private final Assignment cConsumersAssignment_3_4_2 = (Assignment)cAlternatives_3_4.eContents().get(2);
		private final RuleCall cConsumersConsumerParserRuleCall_3_4_2_0 = (RuleCall)cConsumersAssignment_3_4_2.eContents().get(0);
		private final Assignment cDomainObjectsAssignment_3_4_3 = (Assignment)cAlternatives_3_4.eContents().get(3);
		private final RuleCall cDomainObjectsSimpleDomainObjectParserRuleCall_3_4_3_0 = (RuleCall)cDomainObjectsAssignment_3_4_3.eContents().get(0);
		private final Assignment cAggregatesAssignment_3_4_4 = (Assignment)cAlternatives_3_4.eContents().get(4);
		private final RuleCall cAggregatesAggregateParserRuleCall_3_4_4_0 = (RuleCall)cAggregatesAssignment_3_4_4.eContents().get(0);
		private final RuleCall cCLOSETerminalRuleCall_3_5 = (RuleCall)cGroup_3.eContents().get(5);
		
		//SculptorModule:
		//	doc=STRING?
		//	"Module" name=ID (OPEN
		//	external?="external"? ("basePackage" "=" basePackage=JavaIdentifier)? ("hint" "=" hint=STRING)? (services+=Service |
		//	resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject | aggregates+=Aggregate)*
		//	CLOSE)?;
		@Override public ParserRule getRule() { return rule; }
		
		//doc=STRING? "Module" name=ID (OPEN external?="external"? ("basePackage" "=" basePackage=JavaIdentifier)? ("hint" "="
		//hint=STRING)? (services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject |
		//aggregates+=Aggregate)* CLOSE)?
		public Group getGroup() { return cGroup; }
		
		//doc=STRING?
		public Assignment getDocAssignment_0() { return cDocAssignment_0; }
		
		//STRING
		public RuleCall getDocSTRINGTerminalRuleCall_0_0() { return cDocSTRINGTerminalRuleCall_0_0; }
		
		//"Module"
		public Keyword getModuleKeyword_1() { return cModuleKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//(OPEN external?="external"? ("basePackage" "=" basePackage=JavaIdentifier)? ("hint" "=" hint=STRING)? (services+=Service
		//| resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject | aggregates+=Aggregate)* CLOSE)?
		public Group getGroup_3() { return cGroup_3; }
		
		//OPEN
		public RuleCall getOPENTerminalRuleCall_3_0() { return cOPENTerminalRuleCall_3_0; }
		
		//external?="external"?
		public Assignment getExternalAssignment_3_1() { return cExternalAssignment_3_1; }
		
		//"external"
		public Keyword getExternalExternalKeyword_3_1_0() { return cExternalExternalKeyword_3_1_0; }
		
		//("basePackage" "=" basePackage=JavaIdentifier)?
		public Group getGroup_3_2() { return cGroup_3_2; }
		
		//"basePackage"
		public Keyword getBasePackageKeyword_3_2_0() { return cBasePackageKeyword_3_2_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_2_1() { return cEqualsSignKeyword_3_2_1; }
		
		//basePackage=JavaIdentifier
		public Assignment getBasePackageAssignment_3_2_2() { return cBasePackageAssignment_3_2_2; }
		
		//JavaIdentifier
		public RuleCall getBasePackageJavaIdentifierParserRuleCall_3_2_2_0() { return cBasePackageJavaIdentifierParserRuleCall_3_2_2_0; }
		
		//("hint" "=" hint=STRING)?
		public Group getGroup_3_3() { return cGroup_3_3; }
		
		//"hint"
		public Keyword getHintKeyword_3_3_0() { return cHintKeyword_3_3_0; }
		
		//"="
		public Keyword getEqualsSignKeyword_3_3_1() { return cEqualsSignKeyword_3_3_1; }
		
		//hint=STRING
		public Assignment getHintAssignment_3_3_2() { return cHintAssignment_3_3_2; }
		
		//STRING
		public RuleCall getHintSTRINGTerminalRuleCall_3_3_2_0() { return cHintSTRINGTerminalRuleCall_3_3_2_0; }
		
		//(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject |
		//aggregates+=Aggregate)*
		public Alternatives getAlternatives_3_4() { return cAlternatives_3_4; }
		
		//services+=Service
		public Assignment getServicesAssignment_3_4_0() { return cServicesAssignment_3_4_0; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_3_4_0_0() { return cServicesServiceParserRuleCall_3_4_0_0; }
		
		//resources+=Resource
		public Assignment getResourcesAssignment_3_4_1() { return cResourcesAssignment_3_4_1; }
		
		//Resource
		public RuleCall getResourcesResourceParserRuleCall_3_4_1_0() { return cResourcesResourceParserRuleCall_3_4_1_0; }
		
		//consumers+=Consumer
		public Assignment getConsumersAssignment_3_4_2() { return cConsumersAssignment_3_4_2; }
		
		//Consumer
		public RuleCall getConsumersConsumerParserRuleCall_3_4_2_0() { return cConsumersConsumerParserRuleCall_3_4_2_0; }
		
		//domainObjects+=SimpleDomainObject
		public Assignment getDomainObjectsAssignment_3_4_3() { return cDomainObjectsAssignment_3_4_3; }
		
		//SimpleDomainObject
		public RuleCall getDomainObjectsSimpleDomainObjectParserRuleCall_3_4_3_0() { return cDomainObjectsSimpleDomainObjectParserRuleCall_3_4_3_0; }
		
		//aggregates+=Aggregate
		public Assignment getAggregatesAssignment_3_4_4() { return cAggregatesAssignment_3_4_4; }
		
		//Aggregate
		public RuleCall getAggregatesAggregateParserRuleCall_3_4_4_0() { return cAggregatesAggregateParserRuleCall_3_4_4_0; }
		
		//CLOSE
		public RuleCall getCLOSETerminalRuleCall_3_5() { return cCLOSETerminalRuleCall_3_5; }
	}
	
	public class UpstreamRoleElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.UpstreamRole");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cPUBLISHED_LANGUAGEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cPUBLISHED_LANGUAGEPLKeyword_0_0 = (Keyword)cPUBLISHED_LANGUAGEEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cOPEN_HOST_SERVICEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cOPEN_HOST_SERVICEOHSKeyword_1_0 = (Keyword)cOPEN_HOST_SERVICEEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum UpstreamRole:
		//	PUBLISHED_LANGUAGE='PL' | OPEN_HOST_SERVICE='OHS';
		public EnumRule getRule() { return rule; }
		
		//PUBLISHED_LANGUAGE='PL' | OPEN_HOST_SERVICE='OHS'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//PUBLISHED_LANGUAGE='PL'
		public EnumLiteralDeclaration getPUBLISHED_LANGUAGEEnumLiteralDeclaration_0() { return cPUBLISHED_LANGUAGEEnumLiteralDeclaration_0; }
		
		//'PL'
		public Keyword getPUBLISHED_LANGUAGEPLKeyword_0_0() { return cPUBLISHED_LANGUAGEPLKeyword_0_0; }
		
		//OPEN_HOST_SERVICE='OHS'
		public EnumLiteralDeclaration getOPEN_HOST_SERVICEEnumLiteralDeclaration_1() { return cOPEN_HOST_SERVICEEnumLiteralDeclaration_1; }
		
		//'OHS'
		public Keyword getOPEN_HOST_SERVICEOHSKeyword_1_0() { return cOPEN_HOST_SERVICEOHSKeyword_1_0; }
	}
	public class DownstreamRoleElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.DownstreamRole");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cANTICORRUPTION_LAYEREnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cANTICORRUPTION_LAYERACLKeyword_0_0 = (Keyword)cANTICORRUPTION_LAYEREnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cCONFORMISTEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cCONFORMISTCFKeyword_1_0 = (Keyword)cCONFORMISTEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum DownstreamRole:
		//	ANTICORRUPTION_LAYER='ACL' | CONFORMIST='CF';
		public EnumRule getRule() { return rule; }
		
		//ANTICORRUPTION_LAYER='ACL' | CONFORMIST='CF'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ANTICORRUPTION_LAYER='ACL'
		public EnumLiteralDeclaration getANTICORRUPTION_LAYEREnumLiteralDeclaration_0() { return cANTICORRUPTION_LAYEREnumLiteralDeclaration_0; }
		
		//'ACL'
		public Keyword getANTICORRUPTION_LAYERACLKeyword_0_0() { return cANTICORRUPTION_LAYERACLKeyword_0_0; }
		
		//CONFORMIST='CF'
		public EnumLiteralDeclaration getCONFORMISTEnumLiteralDeclaration_1() { return cCONFORMISTEnumLiteralDeclaration_1; }
		
		//'CF'
		public Keyword getCONFORMISTCFKeyword_1_0() { return cCONFORMISTCFKeyword_1_0; }
	}
	public class ContextMapStateElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.ContextMapState");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cUNDEFINEDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cUNDEFINEDUNDEFINEDKeyword_0_0 = (Keyword)cUNDEFINEDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cAS_ISEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cAS_ISAS_ISKeyword_1_0 = (Keyword)cAS_ISEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cTO_BEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cTO_BETO_BEKeyword_2_0 = (Keyword)cTO_BEEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum ContextMapState:
		//	UNDEFINED | AS_IS | TO_BE;
		public EnumRule getRule() { return rule; }
		
		//UNDEFINED | AS_IS | TO_BE
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//UNDEFINED
		public EnumLiteralDeclaration getUNDEFINEDEnumLiteralDeclaration_0() { return cUNDEFINEDEnumLiteralDeclaration_0; }
		
		//"UNDEFINED"
		public Keyword getUNDEFINEDUNDEFINEDKeyword_0_0() { return cUNDEFINEDUNDEFINEDKeyword_0_0; }
		
		//AS_IS
		public EnumLiteralDeclaration getAS_ISEnumLiteralDeclaration_1() { return cAS_ISEnumLiteralDeclaration_1; }
		
		//"AS_IS"
		public Keyword getAS_ISAS_ISKeyword_1_0() { return cAS_ISAS_ISKeyword_1_0; }
		
		//TO_BE
		public EnumLiteralDeclaration getTO_BEEnumLiteralDeclaration_2() { return cTO_BEEnumLiteralDeclaration_2; }
		
		//"TO_BE"
		public Keyword getTO_BETO_BEKeyword_2_0() { return cTO_BETO_BEKeyword_2_0; }
	}
	public class ContextMapTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.ContextMapType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cUNDEFINEDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cUNDEFINEDUNDEFINEDKeyword_0_0 = (Keyword)cUNDEFINEDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSYSTEM_LANDSCAPEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSYSTEM_LANDSCAPESYSTEM_LANDSCAPEKeyword_1_0 = (Keyword)cSYSTEM_LANDSCAPEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cORGANIZATIONALEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cORGANIZATIONALORGANIZATIONALKeyword_2_0 = (Keyword)cORGANIZATIONALEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum ContextMapType:
		//	UNDEFINED | SYSTEM_LANDSCAPE | ORGANIZATIONAL;
		public EnumRule getRule() { return rule; }
		
		//UNDEFINED | SYSTEM_LANDSCAPE | ORGANIZATIONAL
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//UNDEFINED
		public EnumLiteralDeclaration getUNDEFINEDEnumLiteralDeclaration_0() { return cUNDEFINEDEnumLiteralDeclaration_0; }
		
		//"UNDEFINED"
		public Keyword getUNDEFINEDUNDEFINEDKeyword_0_0() { return cUNDEFINEDUNDEFINEDKeyword_0_0; }
		
		//SYSTEM_LANDSCAPE
		public EnumLiteralDeclaration getSYSTEM_LANDSCAPEEnumLiteralDeclaration_1() { return cSYSTEM_LANDSCAPEEnumLiteralDeclaration_1; }
		
		//"SYSTEM_LANDSCAPE"
		public Keyword getSYSTEM_LANDSCAPESYSTEM_LANDSCAPEKeyword_1_0() { return cSYSTEM_LANDSCAPESYSTEM_LANDSCAPEKeyword_1_0; }
		
		//ORGANIZATIONAL
		public EnumLiteralDeclaration getORGANIZATIONALEnumLiteralDeclaration_2() { return cORGANIZATIONALEnumLiteralDeclaration_2; }
		
		//"ORGANIZATIONAL"
		public Keyword getORGANIZATIONALORGANIZATIONALKeyword_2_0() { return cORGANIZATIONALORGANIZATIONALKeyword_2_0; }
	}
	public class BoundedContextTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.BoundedContextType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cUNDEFINEDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cUNDEFINEDUNDEFINEDKeyword_0_0 = (Keyword)cUNDEFINEDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cFEATUREEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cFEATUREFEATUREKeyword_1_0 = (Keyword)cFEATUREEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cAPPLICATIONEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cAPPLICATIONAPPLICATIONKeyword_2_0 = (Keyword)cAPPLICATIONEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cSYSTEMEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cSYSTEMSYSTEMKeyword_3_0 = (Keyword)cSYSTEMEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cTEAMEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cTEAMTEAMKeyword_4_0 = (Keyword)cTEAMEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum BoundedContextType:
		//	UNDEFINED | FEATURE | APPLICATION | SYSTEM | TEAM;
		public EnumRule getRule() { return rule; }
		
		//UNDEFINED | FEATURE | APPLICATION | SYSTEM | TEAM
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//UNDEFINED
		public EnumLiteralDeclaration getUNDEFINEDEnumLiteralDeclaration_0() { return cUNDEFINEDEnumLiteralDeclaration_0; }
		
		//"UNDEFINED"
		public Keyword getUNDEFINEDUNDEFINEDKeyword_0_0() { return cUNDEFINEDUNDEFINEDKeyword_0_0; }
		
		//FEATURE
		public EnumLiteralDeclaration getFEATUREEnumLiteralDeclaration_1() { return cFEATUREEnumLiteralDeclaration_1; }
		
		//"FEATURE"
		public Keyword getFEATUREFEATUREKeyword_1_0() { return cFEATUREFEATUREKeyword_1_0; }
		
		//APPLICATION
		public EnumLiteralDeclaration getAPPLICATIONEnumLiteralDeclaration_2() { return cAPPLICATIONEnumLiteralDeclaration_2; }
		
		//"APPLICATION"
		public Keyword getAPPLICATIONAPPLICATIONKeyword_2_0() { return cAPPLICATIONAPPLICATIONKeyword_2_0; }
		
		//SYSTEM
		public EnumLiteralDeclaration getSYSTEMEnumLiteralDeclaration_3() { return cSYSTEMEnumLiteralDeclaration_3; }
		
		//"SYSTEM"
		public Keyword getSYSTEMSYSTEMKeyword_3_0() { return cSYSTEMSYSTEMKeyword_3_0; }
		
		//TEAM
		public EnumLiteralDeclaration getTEAMEnumLiteralDeclaration_4() { return cTEAMEnumLiteralDeclaration_4; }
		
		//"TEAM"
		public Keyword getTEAMTEAMKeyword_4_0() { return cTEAMTEAMKeyword_4_0; }
	}
	public class SubDomainTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.SubDomainType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cCORE_DOMAINEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cCORE_DOMAINCORE_DOMAINKeyword_0_0 = (Keyword)cCORE_DOMAINEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSUPPORTING_DOMAINEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSUPPORTING_DOMAINSUPPORTING_DOMAINKeyword_1_0 = (Keyword)cSUPPORTING_DOMAINEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cGENERIC_SUBDOMAINEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cGENERIC_SUBDOMAINGENERIC_SUBDOMAINKeyword_2_0 = (Keyword)cGENERIC_SUBDOMAINEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum SubDomainType:
		//	CORE_DOMAIN | SUPPORTING_DOMAIN | GENERIC_SUBDOMAIN;
		public EnumRule getRule() { return rule; }
		
		//CORE_DOMAIN | SUPPORTING_DOMAIN | GENERIC_SUBDOMAIN
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//CORE_DOMAIN
		public EnumLiteralDeclaration getCORE_DOMAINEnumLiteralDeclaration_0() { return cCORE_DOMAINEnumLiteralDeclaration_0; }
		
		//"CORE_DOMAIN"
		public Keyword getCORE_DOMAINCORE_DOMAINKeyword_0_0() { return cCORE_DOMAINCORE_DOMAINKeyword_0_0; }
		
		//SUPPORTING_DOMAIN
		public EnumLiteralDeclaration getSUPPORTING_DOMAINEnumLiteralDeclaration_1() { return cSUPPORTING_DOMAINEnumLiteralDeclaration_1; }
		
		//"SUPPORTING_DOMAIN"
		public Keyword getSUPPORTING_DOMAINSUPPORTING_DOMAINKeyword_1_0() { return cSUPPORTING_DOMAINSUPPORTING_DOMAINKeyword_1_0; }
		
		//GENERIC_SUBDOMAIN
		public EnumLiteralDeclaration getGENERIC_SUBDOMAINEnumLiteralDeclaration_2() { return cGENERIC_SUBDOMAINEnumLiteralDeclaration_2; }
		
		//"GENERIC_SUBDOMAIN"
		public Keyword getGENERIC_SUBDOMAINGENERIC_SUBDOMAINKeyword_2_0() { return cGENERIC_SUBDOMAINGENERIC_SUBDOMAINKeyword_2_0; }
	}
	public class DownstreamGovernanceRightsElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.DownstreamGovernanceRights");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cINFLUENCEREnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cINFLUENCERINFLUENCERKeyword_0_0 = (Keyword)cINFLUENCEREnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cOPINION_LEADEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cOPINION_LEADEROPINION_LEADERKeyword_1_0 = (Keyword)cOPINION_LEADEREnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cVETO_RIGHTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cVETO_RIGHTVETO_RIGHTKeyword_2_0 = (Keyword)cVETO_RIGHTEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cDECISION_MAKEREnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cDECISION_MAKERDECISION_MAKERKeyword_3_0 = (Keyword)cDECISION_MAKEREnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cMONOPOLISTEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cMONOPOLISTMONOPOLISTKeyword_4_0 = (Keyword)cMONOPOLISTEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum DownstreamGovernanceRights:
		//	INFLUENCER | OPINION_LEADER | VETO_RIGHT | DECISION_MAKER | MONOPOLIST;
		public EnumRule getRule() { return rule; }
		
		//INFLUENCER | OPINION_LEADER | VETO_RIGHT | DECISION_MAKER | MONOPOLIST
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//INFLUENCER
		public EnumLiteralDeclaration getINFLUENCEREnumLiteralDeclaration_0() { return cINFLUENCEREnumLiteralDeclaration_0; }
		
		//"INFLUENCER"
		public Keyword getINFLUENCERINFLUENCERKeyword_0_0() { return cINFLUENCERINFLUENCERKeyword_0_0; }
		
		//OPINION_LEADER
		public EnumLiteralDeclaration getOPINION_LEADEREnumLiteralDeclaration_1() { return cOPINION_LEADEREnumLiteralDeclaration_1; }
		
		//"OPINION_LEADER"
		public Keyword getOPINION_LEADEROPINION_LEADERKeyword_1_0() { return cOPINION_LEADEROPINION_LEADERKeyword_1_0; }
		
		//VETO_RIGHT
		public EnumLiteralDeclaration getVETO_RIGHTEnumLiteralDeclaration_2() { return cVETO_RIGHTEnumLiteralDeclaration_2; }
		
		//"VETO_RIGHT"
		public Keyword getVETO_RIGHTVETO_RIGHTKeyword_2_0() { return cVETO_RIGHTVETO_RIGHTKeyword_2_0; }
		
		//DECISION_MAKER
		public EnumLiteralDeclaration getDECISION_MAKEREnumLiteralDeclaration_3() { return cDECISION_MAKEREnumLiteralDeclaration_3; }
		
		//"DECISION_MAKER"
		public Keyword getDECISION_MAKERDECISION_MAKERKeyword_3_0() { return cDECISION_MAKERDECISION_MAKERKeyword_3_0; }
		
		//MONOPOLIST
		public EnumLiteralDeclaration getMONOPOLISTEnumLiteralDeclaration_4() { return cMONOPOLISTEnumLiteralDeclaration_4; }
		
		//"MONOPOLIST"
		public Keyword getMONOPOLISTMONOPOLISTKeyword_4_0() { return cMONOPOLISTMONOPOLISTKeyword_4_0; }
	}
	public class KnowledgeLevelElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.KnowledgeLevel");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cMETAEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cMETAMETAKeyword_0_0 = (Keyword)cMETAEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cCONCRETEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cCONCRETECONCRETEKeyword_1_0 = (Keyword)cCONCRETEEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum KnowledgeLevel:
		//	META | CONCRETE;
		public EnumRule getRule() { return rule; }
		
		//META | CONCRETE
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//META
		public EnumLiteralDeclaration getMETAEnumLiteralDeclaration_0() { return cMETAEnumLiteralDeclaration_0; }
		
		//"META"
		public Keyword getMETAMETAKeyword_0_0() { return cMETAMETAKeyword_0_0; }
		
		//CONCRETE
		public EnumLiteralDeclaration getCONCRETEEnumLiteralDeclaration_1() { return cCONCRETEEnumLiteralDeclaration_1; }
		
		//"CONCRETE"
		public Keyword getCONCRETECONCRETEKeyword_1_0() { return cCONCRETECONCRETEKeyword_1_0; }
	}
	public class LikelihoodForChangeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.LikelihoodForChange");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cNORMALEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cNORMALNORMALKeyword_0_0 = (Keyword)cNORMALEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cRARELYEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cRARELYRARELYKeyword_1_0 = (Keyword)cRARELYEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cOFTENEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cOFTENOFTENKeyword_2_0 = (Keyword)cOFTENEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum LikelihoodForChange:
		//	NORMAL | RARELY | OFTEN;
		public EnumRule getRule() { return rule; }
		
		//NORMAL | RARELY | OFTEN
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//NORMAL
		public EnumLiteralDeclaration getNORMALEnumLiteralDeclaration_0() { return cNORMALEnumLiteralDeclaration_0; }
		
		//"NORMAL"
		public Keyword getNORMALNORMALKeyword_0_0() { return cNORMALNORMALKeyword_0_0; }
		
		//RARELY
		public EnumLiteralDeclaration getRARELYEnumLiteralDeclaration_1() { return cRARELYEnumLiteralDeclaration_1; }
		
		//"RARELY"
		public Keyword getRARELYRARELYKeyword_1_0() { return cRARELYRARELYKeyword_1_0; }
		
		//OFTEN
		public EnumLiteralDeclaration getOFTENEnumLiteralDeclaration_2() { return cOFTENEnumLiteralDeclaration_2; }
		
		//"OFTEN"
		public Keyword getOFTENOFTENKeyword_2_0() { return cOFTENOFTENKeyword_2_0; }
	}
	
	private final ContextMappingModelElements pContextMappingModel;
	private final ImportElements pImport;
	private final ContextMapElements pContextMap;
	private final BoundedContextElements pBoundedContext;
	private final DomainPartElements pDomainPart;
	private final DomainElements pDomain;
	private final SubdomainElements pSubdomain;
	private final RelationshipElements pRelationship;
	private final SymmetricRelationshipElements pSymmetricRelationship;
	private final PartnershipElements pPartnership;
	private final SharedKernelElements pSharedKernel;
	private final UpstreamDownstreamRelationshipElements pUpstreamDownstreamRelationship;
	private final CustomerSupplierRelationshipElements pCustomerSupplierRelationship;
	private final AggregateElements pAggregate;
	private final UserRequirementElements pUserRequirement;
	private final UseCaseElements pUseCase;
	private final UserStoryElements pUserStory;
	private final FeatureElements pFeature;
	private final UserActivityDefaultVerbElements pUserActivityDefaultVerb;
	private final SculptorModuleElements pSculptorModule;
	private final UpstreamRoleElements eUpstreamRole;
	private final DownstreamRoleElements eDownstreamRole;
	private final ContextMapStateElements eContextMapState;
	private final ContextMapTypeElements eContextMapType;
	private final BoundedContextTypeElements eBoundedContextType;
	private final SubDomainTypeElements eSubDomainType;
	private final DownstreamGovernanceRightsElements eDownstreamGovernanceRights;
	private final KnowledgeLevelElements eKnowledgeLevel;
	private final LikelihoodForChangeElements eLikelihoodForChange;
	private final TerminalRule tOPEN;
	private final TerminalRule tCLOSE;
	
	private final Grammar grammar;
	
	private final TacticDDDLanguageGrammarAccess gaTacticDDDLanguage;
	
	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public ContextMappingDSLGrammarAccess(GrammarProvider grammarProvider,
			TacticDDDLanguageGrammarAccess gaTacticDDDLanguage,
			TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTacticDDDLanguage = gaTacticDDDLanguage;
		this.gaTerminals = gaTerminals;
		this.pContextMappingModel = new ContextMappingModelElements();
		this.pImport = new ImportElements();
		this.pContextMap = new ContextMapElements();
		this.pBoundedContext = new BoundedContextElements();
		this.pDomainPart = new DomainPartElements();
		this.pDomain = new DomainElements();
		this.pSubdomain = new SubdomainElements();
		this.pRelationship = new RelationshipElements();
		this.pSymmetricRelationship = new SymmetricRelationshipElements();
		this.pPartnership = new PartnershipElements();
		this.pSharedKernel = new SharedKernelElements();
		this.pUpstreamDownstreamRelationship = new UpstreamDownstreamRelationshipElements();
		this.pCustomerSupplierRelationship = new CustomerSupplierRelationshipElements();
		this.pAggregate = new AggregateElements();
		this.pUserRequirement = new UserRequirementElements();
		this.pUseCase = new UseCaseElements();
		this.pUserStory = new UserStoryElements();
		this.pFeature = new FeatureElements();
		this.pUserActivityDefaultVerb = new UserActivityDefaultVerbElements();
		this.pSculptorModule = new SculptorModuleElements();
		this.eUpstreamRole = new UpstreamRoleElements();
		this.eDownstreamRole = new DownstreamRoleElements();
		this.eContextMapState = new ContextMapStateElements();
		this.eContextMapType = new ContextMapTypeElements();
		this.eBoundedContextType = new BoundedContextTypeElements();
		this.eSubDomainType = new SubDomainTypeElements();
		this.eDownstreamGovernanceRights = new DownstreamGovernanceRightsElements();
		this.eKnowledgeLevel = new KnowledgeLevelElements();
		this.eLikelihoodForChange = new LikelihoodForChangeElements();
		this.tOPEN = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.OPEN");
		this.tCLOSE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.contextmapper.dsl.ContextMappingDSL.CLOSE");
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.contextmapper.dsl.ContextMappingDSL".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 TacticDDDLanguageGrammarAccess getTacticDDDLanguageGrammarAccess() {
		return gaTacticDDDLanguage;
	}
	
	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//ContextMappingModel:
	//	firstLineComment=SL_COMMENT? & imports+=Import* & map=ContextMap? & boundedContexts+=BoundedContext* &
	//	domains+=Domain* & userRequirements+=UserRequirement*;
	public ContextMappingModelElements getContextMappingModelAccess() {
		return pContextMappingModel;
	}
	
	public ParserRule getContextMappingModelRule() {
		return getContextMappingModelAccess().getRule();
	}
	
	//Import:
	//	'import' importURI=STRING;
	public ImportElements getImportAccess() {
		return pImport;
	}
	
	public ParserRule getImportRule() {
		return getImportAccess().getRule();
	}
	
	//ContextMap:
	//	{ContextMap} // make sure there is always a context map
	//	'ContextMap' name=ID?
	//	OPEN (('type' '='? type=ContextMapType)? & ('state' '='? state=ContextMapState)?) ('contains'
	//	boundedContexts+=[BoundedContext] ("," boundedContexts+=[BoundedContext])*)*
	//	relationships+=Relationship*
	//	CLOSE;
	public ContextMapElements getContextMapAccess() {
		return pContextMap;
	}
	
	public ParserRule getContextMapRule() {
		return getContextMapAccess().getRule();
	}
	
	//BoundedContext:
	//	comment=SL_COMMENT?
	//	'BoundedContext' name=ID (('implements' implementedDomainParts+=[DomainPart] (","
	//	implementedDomainParts+=[DomainPart])*)? & ('realizes' realizedBoundedContexts+=[BoundedContext] (","
	//	realizedBoundedContexts+=[BoundedContext])*)? & ('refines' refinedBoundedContext=[BoundedContext])?) (OPEN
	//	(('domainVisionStatement' '='? domainVisionStatement=STRING)? & ('type' '='? type=BoundedContextType)? &
	//	(('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? & ('implementationTechnology'
	//	'='? implementationTechnology=STRING)? & ('knowledgeLevel' '='? knowledgeLevel=KnowledgeLevel)?)
	//	modules+=SculptorModule*
	//	aggregates+=Aggregate*
	//	CLOSE)?;
	public BoundedContextElements getBoundedContextAccess() {
		return pBoundedContext;
	}
	
	public ParserRule getBoundedContextRule() {
		return getBoundedContextAccess().getRule();
	}
	
	//DomainPart:
	//	Domain | Subdomain;
	public DomainPartElements getDomainPartAccess() {
		return pDomainPart;
	}
	
	public ParserRule getDomainPartRule() {
		return getDomainPartAccess().getRule();
	}
	
	//Domain:
	//	'Domain' name=ID (OPEN (('domainVisionStatement' '='? domainVisionStatement=STRING)? & subdomains+=Subdomain*)
	//	CLOSE)?;
	public DomainElements getDomainAccess() {
		return pDomain;
	}
	
	public ParserRule getDomainRule() {
		return getDomainAccess().getRule();
	}
	
	//Subdomain:
	//	'Subdomain' name=ID (OPEN (('type' '='? type=SubDomainType)? & ('domainVisionStatement' '='?
	//	domainVisionStatement=STRING)?) entities+=Entity*
	//	services+=Service*
	//	CLOSE)?;
	public SubdomainElements getSubdomainAccess() {
		return pSubdomain;
	}
	
	public ParserRule getSubdomainRule() {
		return getSubdomainAccess().getRule();
	}
	
	//Relationship:
	//	SymmetricRelationship | UpstreamDownstreamRelationship;
	public RelationshipElements getRelationshipAccess() {
		return pRelationship;
	}
	
	public ParserRule getRelationshipRule() {
		return getRelationshipAccess().getRule();
	}
	
	//SymmetricRelationship:
	//	Partnership | SharedKernel;
	public SymmetricRelationshipElements getSymmetricRelationshipAccess() {
		return pSymmetricRelationship;
	}
	
	public ParserRule getSymmetricRelationshipRule() {
		return getSymmetricRelationshipAccess().getRule();
	}
	
	//Partnership:
	//	(participant1=[BoundedContext] '[' 'P' ']' '<->' '[' 'P' ']' participant2=[BoundedContext] | '[' 'P' ']'
	//	participant1=[BoundedContext] '<->' '[' 'P' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '[' 'P'
	//	']' '<->' participant2=[BoundedContext] '[' 'P' ']' | '[' 'P' ']' participant1=[BoundedContext] '<->'
	//	participant2=[BoundedContext] '[' 'P' ']' | participant1=[BoundedContext] 'Partnership' participant2=[BoundedContext])
	//	(':' name=ID)? (OPEN ('implementationTechnology' '='? implementationTechnology=STRING)?
	//	CLOSE)?;
	public PartnershipElements getPartnershipAccess() {
		return pPartnership;
	}
	
	public ParserRule getPartnershipRule() {
		return getPartnershipAccess().getRule();
	}
	
	//SharedKernel:
	//	(participant1=[BoundedContext] '[' 'SK' ']' '<->' '[' 'SK' ']' participant2=[BoundedContext] | '[' 'SK' ']'
	//	participant1=[BoundedContext] '<->' '[' 'SK' ']' participant2=[BoundedContext] | participant1=[BoundedContext] '['
	//	'SK' ']' '<->' participant2=[BoundedContext] '[' 'SK' ']' | '[' 'SK' ']' participant1=[BoundedContext] '<->'
	//	participant2=[BoundedContext] '[' 'SK' ']' | participant1=[BoundedContext] 'Shared-Kernel'
	//	participant2=[BoundedContext] | participant1=[BoundedContext] '<->' participant2=[BoundedContext]) (':' name=ID)?
	//	(OPEN ('implementationTechnology' '='? implementationTechnology=STRING)?
	//	CLOSE)?;
	public SharedKernelElements getSharedKernelAccess() {
		return pSharedKernel;
	}
	
	public ParserRule getSharedKernelRule() {
		return getSharedKernelAccess().getRule();
	}
	
	//UpstreamDownstreamRelationship:
	//	CustomerSupplierRelationship | (upstream=[BoundedContext] ('[' 'U' ']' | ('[' ('U' ',')? upstreamRoles+=UpstreamRole
	//	("," upstreamRoles+=UpstreamRole)*) ']')? '->' ('[' 'D' ']' | ('[' ('D' ',')? downstreamRoles+=DownstreamRole (","
	//	downstreamRoles+=DownstreamRole)*) ']')? downstream=[BoundedContext] | downstream=[BoundedContext] ('[' 'D' ']' | ('['
	//	('D' ',')? downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*) ']')? '<-' ('[' 'U' ']' | ('[' ('U'
	//	',')? upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*) ']')? upstream=[BoundedContext] |
	//	upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
	//	'Upstream-Downstream' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
	//	downstream=[BoundedContext] | downstream=[BoundedContext] ('[' (downstreamRoles+=DownstreamRole (","
	//	downstreamRoles+=DownstreamRole)*)? ']')? 'Downstream-Upstream' ('[' (upstreamRoles+=UpstreamRole (","
	//	upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology'
	//	'='? implementationTechnology=STRING)? & (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) (","
	//	upstreamExposedAggregates+=[Aggregate])* exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
	//	downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?;
	public UpstreamDownstreamRelationshipElements getUpstreamDownstreamRelationshipAccess() {
		return pUpstreamDownstreamRelationship;
	}
	
	public ParserRule getUpstreamDownstreamRelationshipRule() {
		return getUpstreamDownstreamRelationshipAccess().getRule();
	}
	
	//CustomerSupplierRelationship:
	//	(upstream=[BoundedContext] '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)?
	//	']' '->' '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']'
	//	downstream=[BoundedContext] | downstream=[BoundedContext] '[' ('D' ',')? 'C' (',' downstreamRoles+=DownstreamRole (","
	//	downstreamRoles+=DownstreamRole)*)? ']' '<-' '[' ('U' ',')? 'S' (',' upstreamRoles+=UpstreamRole (","
	//	upstreamRoles+=UpstreamRole)*)? ']' upstream=[BoundedContext] | downstream=[BoundedContext] ('['
	//	(downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')? 'Customer-Supplier' ('['
	//	(upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')? upstream=[BoundedContext] |
	//	upstream=[BoundedContext] ('[' (upstreamRoles+=UpstreamRole ("," upstreamRoles+=UpstreamRole)*)? ']')?
	//	'Supplier-Customer' ('[' (downstreamRoles+=DownstreamRole ("," downstreamRoles+=DownstreamRole)*)? ']')?
	//	downstream=[BoundedContext]) (':' name=ID)? (OPEN (('implementationTechnology' '='? implementationTechnology=STRING)?
	//	& (('exposedAggregates' '='? upstreamExposedAggregates+=[Aggregate]) ("," upstreamExposedAggregates+=[Aggregate])*
	//	exposedAggregatesComment=SL_COMMENT?)? & ('downstreamRights' '='?
	//	downstreamGovernanceRights=DownstreamGovernanceRights)?) CLOSE)?;
	public CustomerSupplierRelationshipElements getCustomerSupplierRelationshipAccess() {
		return pCustomerSupplierRelationship;
	}
	
	public ParserRule getCustomerSupplierRelationshipRule() {
		return getCustomerSupplierRelationshipAccess().getRule();
	}
	
	//Aggregate:
	//	comment=ML_COMMENT?
	//	doc=STRING?
	//	"Aggregate" name=ID (OPEN ((('responsibilities' '='? responsibilities+=STRING) ("," responsibilities+=STRING)*)? &
	//	((('useCases' | 'userRequirements') '='? userRequirements+=[UserRequirement]) (","
	//	userRequirements+=[UserRequirement])*)? & ('owner' '='? owner=[BoundedContext])? & ('knowledgeLevel' '='?
	//	knowledgeLevel=KnowledgeLevel)? & ('likelihoodForChange' '='? likelihoodForChange=LikelihoodForChange)?)
	//	(services+=Service | resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject)*
	//	CLOSE)?;
	public AggregateElements getAggregateAccess() {
		return pAggregate;
	}
	
	public ParserRule getAggregateRule() {
		return getAggregateAccess().getRule();
	}
	
	//UserRequirement:
	//	UseCase | UserStory;
	public UserRequirementElements getUserRequirementAccess() {
		return pUserRequirement;
	}
	
	public ParserRule getUserRequirementRule() {
		return getUserRequirementAccess().getRule();
	}
	
	//UseCase:
	//	'UseCase' name=ID (OPEN (('actor' '='? role=STRING)? & ('interactions' '='? features+=Feature (","
	//	features+=Feature)*)? & ('benefit' '='? benefit=STRING)? & ('scope' '='? scope=STRING)? & ('level' '='? level=STRING)?
	//	& ('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
	//	nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?;
	public UseCaseElements getUseCaseAccess() {
		return pUseCase;
	}
	
	public ParserRule getUseCaseRule() {
		return getUseCaseAccess().getRule();
	}
	
	//UserStory:
	//	'UserStory' name=ID (OPEN ((('As a' | 'As an') role=STRING ('I want to' features+=Feature)+ 'so that' benefit=STRING)?
	//	& ('isLatencyCritical' '='? isLatencyCritical?='true')? & (('reads' nanoentitiesRead+=STRING*) (","
	//	nanoentitiesRead+=STRING)*)? & (('writes' nanoentitiesWritten+=STRING*) ("," nanoentitiesWritten+=STRING)*)?) CLOSE)?;
	public UserStoryElements getUserStoryAccess() {
		return pUserStory;
	}
	
	public ParserRule getUserStoryRule() {
		return getUserStoryAccess().getRule();
	}
	
	//Feature:
	//	verb=(UserActivityDefaultVerb | STRING) ('a' | 'an')? entity=STRING (('with its' | 'with their')
	//	entityAttributes+=STRING ("," entityAttributes+=STRING)*)? (('in' | 'for') ('a' | 'an')? containerEntity=STRING)?;
	public FeatureElements getFeatureAccess() {
		return pFeature;
	}
	
	public ParserRule getFeatureRule() {
		return getFeatureAccess().getRule();
	}
	
	//UserActivityDefaultVerb:
	//	'create' | 'read' | 'update' | 'delete';
	public UserActivityDefaultVerbElements getUserActivityDefaultVerbAccess() {
		return pUserActivityDefaultVerb;
	}
	
	public ParserRule getUserActivityDefaultVerbRule() {
		return getUserActivityDefaultVerbAccess().getRule();
	}
	
	//SculptorModule:
	//	doc=STRING?
	//	"Module" name=ID (OPEN
	//	external?="external"? ("basePackage" "=" basePackage=JavaIdentifier)? ("hint" "=" hint=STRING)? (services+=Service |
	//	resources+=Resource | consumers+=Consumer | domainObjects+=SimpleDomainObject | aggregates+=Aggregate)*
	//	CLOSE)?;
	public SculptorModuleElements getSculptorModuleAccess() {
		return pSculptorModule;
	}
	
	public ParserRule getSculptorModuleRule() {
		return getSculptorModuleAccess().getRule();
	}
	
	//enum UpstreamRole:
	//	PUBLISHED_LANGUAGE='PL' | OPEN_HOST_SERVICE='OHS';
	public UpstreamRoleElements getUpstreamRoleAccess() {
		return eUpstreamRole;
	}
	
	public EnumRule getUpstreamRoleRule() {
		return getUpstreamRoleAccess().getRule();
	}
	
	//enum DownstreamRole:
	//	ANTICORRUPTION_LAYER='ACL' | CONFORMIST='CF';
	public DownstreamRoleElements getDownstreamRoleAccess() {
		return eDownstreamRole;
	}
	
	public EnumRule getDownstreamRoleRule() {
		return getDownstreamRoleAccess().getRule();
	}
	
	//enum ContextMapState:
	//	UNDEFINED | AS_IS | TO_BE;
	public ContextMapStateElements getContextMapStateAccess() {
		return eContextMapState;
	}
	
	public EnumRule getContextMapStateRule() {
		return getContextMapStateAccess().getRule();
	}
	
	//enum ContextMapType:
	//	UNDEFINED | SYSTEM_LANDSCAPE | ORGANIZATIONAL;
	public ContextMapTypeElements getContextMapTypeAccess() {
		return eContextMapType;
	}
	
	public EnumRule getContextMapTypeRule() {
		return getContextMapTypeAccess().getRule();
	}
	
	//enum BoundedContextType:
	//	UNDEFINED | FEATURE | APPLICATION | SYSTEM | TEAM;
	public BoundedContextTypeElements getBoundedContextTypeAccess() {
		return eBoundedContextType;
	}
	
	public EnumRule getBoundedContextTypeRule() {
		return getBoundedContextTypeAccess().getRule();
	}
	
	//enum SubDomainType:
	//	CORE_DOMAIN | SUPPORTING_DOMAIN | GENERIC_SUBDOMAIN;
	public SubDomainTypeElements getSubDomainTypeAccess() {
		return eSubDomainType;
	}
	
	public EnumRule getSubDomainTypeRule() {
		return getSubDomainTypeAccess().getRule();
	}
	
	//enum DownstreamGovernanceRights:
	//	INFLUENCER | OPINION_LEADER | VETO_RIGHT | DECISION_MAKER | MONOPOLIST;
	public DownstreamGovernanceRightsElements getDownstreamGovernanceRightsAccess() {
		return eDownstreamGovernanceRights;
	}
	
	public EnumRule getDownstreamGovernanceRightsRule() {
		return getDownstreamGovernanceRightsAccess().getRule();
	}
	
	//enum KnowledgeLevel:
	//	META | CONCRETE;
	public KnowledgeLevelElements getKnowledgeLevelAccess() {
		return eKnowledgeLevel;
	}
	
	public EnumRule getKnowledgeLevelRule() {
		return getKnowledgeLevelAccess().getRule();
	}
	
	//enum LikelihoodForChange:
	//	NORMAL | RARELY | OFTEN;
	public LikelihoodForChangeElements getLikelihoodForChangeAccess() {
		return eLikelihoodForChange;
	}
	
	public EnumRule getLikelihoodForChangeRule() {
		return getLikelihoodForChangeAccess().getRule();
	}
	
	//terminal OPEN:
	//	'{';
	public TerminalRule getOPENRule() {
		return tOPEN;
	}
	
	//terminal CLOSE:
	//	'}';
	public TerminalRule getCLOSERule() {
		return tCLOSE;
	}
	
	//TacticDDDModel:
	//	app=Application;
	public TacticDDDLanguageGrammarAccess.TacticDDDModelElements getTacticDDDModelAccess() {
		return gaTacticDDDLanguage.getTacticDDDModelAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ApplicationElements getApplicationAccess() {
		return gaTacticDDDLanguage.getApplicationAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ServiceElements getServiceAccess() {
		return gaTacticDDDLanguage.getServiceAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ResourceElements getResourceAccess() {
		return gaTacticDDDLanguage.getResourceAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ConsumerElements getConsumerAccess() {
		return gaTacticDDDLanguage.getConsumerAccess();
	}
	
	public ParserRule getConsumerRule() {
		return getConsumerAccess().getRule();
	}
	
	//Subscribe:
	//	"subscribe" "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
	public TacticDDDLanguageGrammarAccess.SubscribeElements getSubscribeAccess() {
		return gaTacticDDDLanguage.getSubscribeAccess();
	}
	
	public ParserRule getSubscribeRule() {
		return getSubscribeAccess().getRule();
	}
	
	//Publish:
	//	"publish" ("@"? eventType=[Event])? "to" topic=ChannelIdentifier ("eventBus" "=" eventBus=ID)?;
	public TacticDDDLanguageGrammarAccess.PublishElements getPublishAccess() {
		return gaTacticDDDLanguage.getPublishAccess();
	}
	
	public ParserRule getPublishRule() {
		return getPublishAccess().getRule();
	}
	
	//Event:
	//	DomainEvent | CommandEvent;
	public TacticDDDLanguageGrammarAccess.EventElements getEventAccess() {
		return gaTacticDDDLanguage.getEventAccess();
	}
	
	public ParserRule getEventRule() {
		return getEventAccess().getRule();
	}
	
	//DomainObjectTypedElement:
	//	ServiceOperation | RepositoryOperation | DomainObjectOperation | Parameter;
	public TacticDDDLanguageGrammarAccess.DomainObjectTypedElementElements getDomainObjectTypedElementAccess() {
		return gaTacticDDDLanguage.getDomainObjectTypedElementAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ServiceOperationElements getServiceOperationAccess() {
		return gaTacticDDDLanguage.getServiceOperationAccess();
	}
	
	public ParserRule getServiceOperationRule() {
		return getServiceOperationAccess().getRule();
	}
	
	//ServiceOperationDelegate:
	//	DELEGATE "@"? delegate=[ServiceRepositoryOption] "." delegateOperation=[ServiceRepositoryOperationOption];
	public TacticDDDLanguageGrammarAccess.ServiceOperationDelegateElements getServiceOperationDelegateAccess() {
		return gaTacticDDDLanguage.getServiceOperationDelegateAccess();
	}
	
	public ParserRule getServiceOperationDelegateRule() {
		return getServiceOperationDelegateAccess().getRule();
	}
	
	//ServiceRepositoryOption:
	//	Repository | Service;
	public TacticDDDLanguageGrammarAccess.ServiceRepositoryOptionElements getServiceRepositoryOptionAccess() {
		return gaTacticDDDLanguage.getServiceRepositoryOptionAccess();
	}
	
	public ParserRule getServiceRepositoryOptionRule() {
		return getServiceRepositoryOptionAccess().getRule();
	}
	
	//ServiceRepositoryOperationOption:
	//	RepositoryOperation | ServiceOperation;
	public TacticDDDLanguageGrammarAccess.ServiceRepositoryOperationOptionElements getServiceRepositoryOperationOptionAccess() {
		return gaTacticDDDLanguage.getServiceRepositoryOperationOptionAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ResourceOperationElements getResourceOperationAccess() {
		return gaTacticDDDLanguage.getResourceOperationAccess();
	}
	
	public ParserRule getResourceOperationRule() {
		return getResourceOperationAccess().getRule();
	}
	
	//ResourceOperationDelegate:
	//	DELEGATE "@"? delegate=[Service] "." delegateOperation=[ServiceOperation];
	public TacticDDDLanguageGrammarAccess.ResourceOperationDelegateElements getResourceOperationDelegateAccess() {
		return gaTacticDDDLanguage.getResourceOperationDelegateAccess();
	}
	
	public ParserRule getResourceOperationDelegateRule() {
		return getResourceOperationDelegateAccess().getRule();
	}
	
	//enum HttpMethod:
	//	None | GET | POST | PUT | DELETE;
	public TacticDDDLanguageGrammarAccess.HttpMethodElements getHttpMethodAccess() {
		return gaTacticDDDLanguage.getHttpMethodAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.RepositoryOperationElements getRepositoryOperationAccess() {
		return gaTacticDDDLanguage.getRepositoryOperationAccess();
	}
	
	public ParserRule getRepositoryOperationRule() {
		return getRepositoryOperationAccess().getRule();
	}
	
	//Parameter:
	//	doc=STRING?
	//	parameterType=ComplexType name=ID;
	public TacticDDDLanguageGrammarAccess.ParameterElements getParameterAccess() {
		return gaTacticDDDLanguage.getParameterAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ComplexTypeElements getComplexTypeAccess() {
		return gaTacticDDDLanguage.getComplexTypeAccess();
	}
	
	public ParserRule getComplexTypeRule() {
		return getComplexTypeAccess().getRule();
	}
	
	//SimpleDomainObject:
	//	BasicType | Enum | DomainObject | DataTransferObject | Trait;
	public TacticDDDLanguageGrammarAccess.SimpleDomainObjectElements getSimpleDomainObjectAccess() {
		return gaTacticDDDLanguage.getSimpleDomainObjectAccess();
	}
	
	public ParserRule getSimpleDomainObjectRule() {
		return getSimpleDomainObjectAccess().getRule();
	}
	
	//DomainObject:
	//	Entity | ValueObject | Event;
	public TacticDDDLanguageGrammarAccess.DomainObjectElements getDomainObjectAccess() {
		return gaTacticDDDLanguage.getDomainObjectAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.EntityElements getEntityAccess() {
		return gaTacticDDDLanguage.getEntityAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ValueObjectElements getValueObjectAccess() {
		return gaTacticDDDLanguage.getValueObjectAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.DomainEventElements getDomainEventAccess() {
		return gaTacticDDDLanguage.getDomainEventAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.CommandEventElements getCommandEventAccess() {
		return gaTacticDDDLanguage.getCommandEventAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.TraitElements getTraitAccess() {
		return gaTacticDDDLanguage.getTraitAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.DomainObjectOperationElements getDomainObjectOperationAccess() {
		return gaTacticDDDLanguage.getDomainObjectOperationAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.DataTransferObjectElements getDataTransferObjectAccess() {
		return gaTacticDDDLanguage.getDataTransferObjectAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.BasicTypeElements getBasicTypeAccess() {
		return gaTacticDDDLanguage.getBasicTypeAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.AttributeElements getAttributeAccess() {
		return gaTacticDDDLanguage.getAttributeAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.ReferenceElements getReferenceAccess() {
		return gaTacticDDDLanguage.getReferenceAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.DtoAttributeElements getDtoAttributeAccess() {
		return gaTacticDDDLanguage.getDtoAttributeAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.DtoReferenceElements getDtoReferenceAccess() {
		return gaTacticDDDLanguage.getDtoReferenceAccess();
	}
	
	public ParserRule getDtoReferenceRule() {
		return getDtoReferenceAccess().getRule();
	}
	
	//OppositeHolder:
	//	OPPOSITE opposite=[Reference];
	public TacticDDDLanguageGrammarAccess.OppositeHolderElements getOppositeHolderAccess() {
		return gaTacticDDDLanguage.getOppositeHolderAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.RepositoryElements getRepositoryAccess() {
		return gaTacticDDDLanguage.getRepositoryAccess();
	}
	
	public ParserRule getRepositoryRule() {
		return getRepositoryAccess().getRule();
	}
	
	//ServiceDependency:
	//	('>' | 'inject') ("@" dependency=[Service]);
	public TacticDDDLanguageGrammarAccess.ServiceDependencyElements getServiceDependencyAccess() {
		return gaTacticDDDLanguage.getServiceDependencyAccess();
	}
	
	public ParserRule getServiceDependencyRule() {
		return getServiceDependencyAccess().getRule();
	}
	
	//Dependency:
	//	('>' | 'inject') ("@" dependency=[ServiceRepositoryOption] | name=ID);
	public TacticDDDLanguageGrammarAccess.DependencyElements getDependencyAccess() {
		return gaTacticDDDLanguage.getDependencyAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.EnumElements getEnumAccess() {
		return gaTacticDDDLanguage.getEnumAccess();
	}
	
	public ParserRule getEnumRule() {
		return getEnumAccess().getRule();
	}
	
	//EnumAttribute:
	//	doc=STRING?
	//	type=Type name=ID key?="key"? ";"?;
	public TacticDDDLanguageGrammarAccess.EnumAttributeElements getEnumAttributeAccess() {
		return gaTacticDDDLanguage.getEnumAttributeAccess();
	}
	
	public ParserRule getEnumAttributeRule() {
		return getEnumAttributeAccess().getRule();
	}
	
	//EnumValue:
	//	doc=STRING?
	//	name=ID ("(" parameters+=EnumParameter ("," parameters+=EnumParameter)* ")")?;
	public TacticDDDLanguageGrammarAccess.EnumValueElements getEnumValueAccess() {
		return gaTacticDDDLanguage.getEnumValueAccess();
	}
	
	public ParserRule getEnumValueRule() {
		return getEnumValueAccess().getRule();
	}
	
	//EnumParameter:
	//	value=STRING | integerValue=INT;
	public TacticDDDLanguageGrammarAccess.EnumParameterElements getEnumParameterAccess() {
		return gaTacticDDDLanguage.getEnumParameterAccess();
	}
	
	public ParserRule getEnumParameterRule() {
		return getEnumParameterAccess().getRule();
	}
	
	//AnyProperty:
	//	Property | DtoProperty;
	public TacticDDDLanguageGrammarAccess.AnyPropertyElements getAnyPropertyAccess() {
		return gaTacticDDDLanguage.getAnyPropertyAccess();
	}
	
	public ParserRule getAnyPropertyRule() {
		return getAnyPropertyAccess().getRule();
	}
	
	//Property:
	//	Attribute | Reference;
	public TacticDDDLanguageGrammarAccess.PropertyElements getPropertyAccess() {
		return gaTacticDDDLanguage.getPropertyAccess();
	}
	
	public ParserRule getPropertyRule() {
		return getPropertyAccess().getRule();
	}
	
	//DtoProperty:
	//	DtoAttribute | DtoReference;
	public TacticDDDLanguageGrammarAccess.DtoPropertyElements getDtoPropertyAccess() {
		return gaTacticDDDLanguage.getDtoPropertyAccess();
	}
	
	public ParserRule getDtoPropertyRule() {
		return getDtoPropertyAccess().getRule();
	}
	
	//enum InheritanceType:
	//	JOINED | SINGLE_TABLE;
	public TacticDDDLanguageGrammarAccess.InheritanceTypeElements getInheritanceTypeAccess() {
		return gaTacticDDDLanguage.getInheritanceTypeAccess();
	}
	
	public EnumRule getInheritanceTypeRule() {
		return getInheritanceTypeAccess().getRule();
	}
	
	//enum DiscriminatorType:
	//	STRING | CHAR | INTEGER;
	public TacticDDDLanguageGrammarAccess.DiscriminatorTypeElements getDiscriminatorTypeAccess() {
		return gaTacticDDDLanguage.getDiscriminatorTypeAccess();
	}
	
	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 TacticDDDLanguageGrammarAccess.TypeElements getTypeAccess() {
		return gaTacticDDDLanguage.getTypeAccess();
	}
	
	public ParserRule getTypeRule() {
		return getTypeAccess().getRule();
	}
	
	//enum CollectionType:
	//	None | Set | List | Bag | Collection;
	public TacticDDDLanguageGrammarAccess.CollectionTypeElements getCollectionTypeAccess() {
		return gaTacticDDDLanguage.getCollectionTypeAccess();
	}
	
	public EnumRule getCollectionTypeRule() {
		return getCollectionTypeAccess().getRule();
	}
	
	//terminal MAP_COLLECTION_TYPE:
	//	"Map";
	public TerminalRule getMAP_COLLECTION_TYPERule() {
		return gaTacticDDDLanguage.getMAP_COLLECTION_TYPERule();
	}
	
	//enum Visibility:
	//	public | protected | private | package;
	public TacticDDDLanguageGrammarAccess.VisibilityElements getVisibilityAccess() {
		return gaTacticDDDLanguage.getVisibilityAccess();
	}
	
	public EnumRule getVisibilityRule() {
		return getVisibilityAccess().getRule();
	}
	
	//JavaIdentifier:
	//	ID ("." ID)*;
	public TacticDDDLanguageGrammarAccess.JavaIdentifierElements getJavaIdentifierAccess() {
		return gaTacticDDDLanguage.getJavaIdentifierAccess();
	}
	
	public ParserRule getJavaIdentifierRule() {
		return getJavaIdentifierAccess().getRule();
	}
	
	//ChannelIdentifier:
	//	ID (("." | "/" | ":") ID)*;
	public TacticDDDLanguageGrammarAccess.ChannelIdentifierElements getChannelIdentifierAccess() {
		return gaTacticDDDLanguage.getChannelIdentifierAccess();
	}
	
	public ParserRule getChannelIdentifierRule() {
		return getChannelIdentifierAccess().getRule();
	}
	
	//ThrowsIdentifier:
	//	JavaIdentifier ("," JavaIdentifier)*;
	public TacticDDDLanguageGrammarAccess.ThrowsIdentifierElements getThrowsIdentifierAccess() {
		return gaTacticDDDLanguage.getThrowsIdentifierAccess();
	}
	
	public ParserRule getThrowsIdentifierRule() {
		return getThrowsIdentifierAccess().getRule();
	}
	
	//terminal NOT:
	//	'!' | 'not';
	public TerminalRule getNOTRule() {
		return gaTacticDDDLanguage.getNOTRule();
	}
	
	//terminal DELEGATE:
	//	'=>' | 'delegates to';
	public TerminalRule getDELEGATERule() {
		return gaTacticDDDLanguage.getDELEGATERule();
	}
	
	//terminal OPPOSITE:
	//	'<->' | 'opposite';
	public TerminalRule getOPPOSITERule() {
		return gaTacticDDDLanguage.getOPPOSITERule();
	}
	
	//terminal REF:
	//	'-' | 'reference';
	public TerminalRule getREFRule() {
		return gaTacticDDDLanguage.getREFRule();
	}
	
	//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 - 2024 Weber Informatics LLC | Privacy Policy