/*
 * generated by Xtext 2.18.0.M3
 */
package co.edu.uniandes.accordant_fv.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Alternatives;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.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.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 AfvlGrammarAccess extends AbstractGrammarElementFinder {
	
	public class FunctionalViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.FunctionalView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFunctionalViewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cUseKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cProjectKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cProjectAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cProjectProjectCrossReference_4_0 = (CrossReference)cProjectAssignment_4.eContents().get(0);
		private final RuleCall cProjectProjectIDTerminalRuleCall_4_0_1 = (RuleCall)cProjectProjectCrossReference_4_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Keyword cComponentsKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cCompsAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cCompsComponentParserRuleCall_8_0 = (RuleCall)cCompsAssignment_8.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cCommaKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cCompsAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cCompsComponentParserRuleCall_9_1_0 = (RuleCall)cCompsAssignment_9_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cConnectorsKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cLeftCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Assignment cConnsAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cConnsConnectorParserRuleCall_13_0 = (RuleCall)cConnsAssignment_13.eContents().get(0);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cCommaKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Assignment cConnsAssignment_14_1 = (Assignment)cGroup_14.eContents().get(1);
		private final RuleCall cConnsConnectorParserRuleCall_14_1_0 = (RuleCall)cConnsAssignment_14_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//FunctionalView:
		//	'FunctionalView'
		//	name=ID
		//	'use' 'project' project=[rq::Project]
		//	'{'
		//	'Components' '{' comps+=Component ("," comps+=Component)* '}'
		//	'Connectors' '{' conns+=Connector ("," conns+=Connector)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'FunctionalView' name=ID 'use' 'project' project=[rq::Project] '{' 'Components' '{' comps+=Component (","
		//comps+=Component)* '}' 'Connectors' '{' conns+=Connector ("," conns+=Connector)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'FunctionalView'
		public Keyword getFunctionalViewKeyword_0() { return cFunctionalViewKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'use'
		public Keyword getUseKeyword_2() { return cUseKeyword_2; }
		
		//'project'
		public Keyword getProjectKeyword_3() { return cProjectKeyword_3; }
		
		//project=[rq::Project]
		public Assignment getProjectAssignment_4() { return cProjectAssignment_4; }
		
		//[rq::Project]
		public CrossReference getProjectProjectCrossReference_4_0() { return cProjectProjectCrossReference_4_0; }
		
		//ID
		public RuleCall getProjectProjectIDTerminalRuleCall_4_0_1() { return cProjectProjectIDTerminalRuleCall_4_0_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
		
		//'Components'
		public Keyword getComponentsKeyword_6() { return cComponentsKeyword_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
		
		//comps+=Component
		public Assignment getCompsAssignment_8() { return cCompsAssignment_8; }
		
		//Component
		public RuleCall getCompsComponentParserRuleCall_8_0() { return cCompsComponentParserRuleCall_8_0; }
		
		//("," comps+=Component)*
		public Group getGroup_9() { return cGroup_9; }
		
		//","
		public Keyword getCommaKeyword_9_0() { return cCommaKeyword_9_0; }
		
		//comps+=Component
		public Assignment getCompsAssignment_9_1() { return cCompsAssignment_9_1; }
		
		//Component
		public RuleCall getCompsComponentParserRuleCall_9_1_0() { return cCompsComponentParserRuleCall_9_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
		
		//'Connectors'
		public Keyword getConnectorsKeyword_11() { return cConnectorsKeyword_11; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_12() { return cLeftCurlyBracketKeyword_12; }
		
		//conns+=Connector
		public Assignment getConnsAssignment_13() { return cConnsAssignment_13; }
		
		//Connector
		public RuleCall getConnsConnectorParserRuleCall_13_0() { return cConnsConnectorParserRuleCall_13_0; }
		
		//("," conns+=Connector)*
		public Group getGroup_14() { return cGroup_14; }
		
		//","
		public Keyword getCommaKeyword_14_0() { return cCommaKeyword_14_0; }
		
		//conns+=Connector
		public Assignment getConnsAssignment_14_1() { return cConnsAssignment_14_1; }
		
		//Connector
		public RuleCall getConnsConnectorParserRuleCall_14_1_0() { return cConnsConnectorParserRuleCall_14_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
	}
	public class ConnectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Connector");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cStreamParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cAdaptorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cDistributorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cEventParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cProcedureCallParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//Connector:
		//	Stream | Adaptor | Distributor | Event | ProcedureCall;
		@Override public ParserRule getRule() { return rule; }
		
		//Stream | Adaptor | Distributor | Event | ProcedureCall
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Stream
		public RuleCall getStreamParserRuleCall_0() { return cStreamParserRuleCall_0; }
		
		//Adaptor
		public RuleCall getAdaptorParserRuleCall_1() { return cAdaptorParserRuleCall_1; }
		
		//Distributor
		public RuleCall getDistributorParserRuleCall_2() { return cDistributorParserRuleCall_2; }
		
		//Event
		public RuleCall getEventParserRuleCall_3() { return cEventParserRuleCall_3; }
		
		//ProcedureCall
		public RuleCall getProcedureCallParserRuleCall_4() { return cProcedureCallParserRuleCall_4; }
	}
	public class ComponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Component");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cTransformerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cEstimatorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cIngestorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cSinkParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//Component:
		//	Transformer | Estimator | Ingestor | Sink;
		@Override public ParserRule getRule() { return rule; }
		
		//Transformer | Estimator | Ingestor | Sink
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//Transformer
		public RuleCall getTransformerParserRuleCall_0() { return cTransformerParserRuleCall_0; }
		
		//Estimator
		public RuleCall getEstimatorParserRuleCall_1() { return cEstimatorParserRuleCall_1; }
		
		//Ingestor
		public RuleCall getIngestorParserRuleCall_2() { return cIngestorParserRuleCall_2; }
		
		//Sink
		public RuleCall getSinkParserRuleCall_3() { return cSinkParserRuleCall_3; }
	}
	public class EStringElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.EString");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//EString:
		//	STRING | ID;
		@Override public ParserRule getRule() { return rule; }
		
		//STRING | ID
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//STRING
		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
	}
	public class EIntElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.EInt");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//EInt ecore::EInt:
		//	'-'? INT;
		@Override public ParserRule getRule() { return rule; }
		
		//'-'? INT
		public Group getGroup() { return cGroup; }
		
		//'-'?
		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
		
		//INT
		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
	}
	public class PortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Port");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cPortAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cPortKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cTypePortTypeEnumRuleCall_4_0 = (RuleCall)cTypeAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFieldsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Assignment cFieldsAssignment_5_3 = (Assignment)cGroup_5.eContents().get(3);
		private final RuleCall cFieldsFieldParserRuleCall_5_3_0 = (RuleCall)cFieldsAssignment_5_3.eContents().get(0);
		private final Group cGroup_5_4 = (Group)cGroup_5.eContents().get(4);
		private final Keyword cCommaKeyword_5_4_0 = (Keyword)cGroup_5_4.eContents().get(0);
		private final Assignment cFieldsAssignment_5_4_1 = (Assignment)cGroup_5_4.eContents().get(1);
		private final RuleCall cFieldsFieldParserRuleCall_5_4_1_0 = (RuleCall)cFieldsAssignment_5_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_5 = (Keyword)cGroup_5.eContents().get(5);
		
		//Port:
		//	{Port}
		//	'Port' name=ID ':' type=PortType? ('fields' ':' '{' fields+=Field ("," fields+=Field)* '}')?;
		@Override public ParserRule getRule() { return rule; }
		
		//{Port} 'Port' name=ID ':' type=PortType? ('fields' ':' '{' fields+=Field ("," fields+=Field)* '}')?
		public Group getGroup() { return cGroup; }
		
		//{Port}
		public Action getPortAction_0() { return cPortAction_0; }
		
		//'Port'
		public Keyword getPortKeyword_1() { return cPortKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//':'
		public Keyword getColonKeyword_3() { return cColonKeyword_3; }
		
		//type=PortType?
		public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }
		
		//PortType
		public RuleCall getTypePortTypeEnumRuleCall_4_0() { return cTypePortTypeEnumRuleCall_4_0; }
		
		//('fields' ':' '{' fields+=Field ("," fields+=Field)* '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'fields'
		public Keyword getFieldsKeyword_5_0() { return cFieldsKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_2() { return cLeftCurlyBracketKeyword_5_2; }
		
		//fields+=Field
		public Assignment getFieldsAssignment_5_3() { return cFieldsAssignment_5_3; }
		
		//Field
		public RuleCall getFieldsFieldParserRuleCall_5_3_0() { return cFieldsFieldParserRuleCall_5_3_0; }
		
		//("," fields+=Field)*
		public Group getGroup_5_4() { return cGroup_5_4; }
		
		//","
		public Keyword getCommaKeyword_5_4_0() { return cCommaKeyword_5_4_0; }
		
		//fields+=Field
		public Assignment getFieldsAssignment_5_4_1() { return cFieldsAssignment_5_4_1; }
		
		//Field
		public RuleCall getFieldsFieldParserRuleCall_5_4_1_0() { return cFieldsFieldParserRuleCall_5_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_5() { return cRightCurlyBracketKeyword_5_5; }
	}
	public class RoleElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Role");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cRoleAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cRoleKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cTypeRoleTypeEnumRuleCall_4_0 = (RuleCall)cTypeAssignment_4.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cPortAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final CrossReference cPortPortCrossReference_6_0 = (CrossReference)cPortAssignment_6.eContents().get(0);
		private final RuleCall cPortPortIDTerminalRuleCall_6_0_1 = (RuleCall)cPortPortCrossReference_6_0.eContents().get(1);
		
		//Role:
		//	{Role}
		//	'Role' name=ID ':' type=RoleType? '->' port=[Port]?;
		@Override public ParserRule getRule() { return rule; }
		
		//{Role} 'Role' name=ID ':' type=RoleType? '->' port=[Port]?
		public Group getGroup() { return cGroup; }
		
		//{Role}
		public Action getRoleAction_0() { return cRoleAction_0; }
		
		//'Role'
		public Keyword getRoleKeyword_1() { return cRoleKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//':'
		public Keyword getColonKeyword_3() { return cColonKeyword_3; }
		
		//type=RoleType?
		public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }
		
		//RoleType
		public RuleCall getTypeRoleTypeEnumRuleCall_4_0() { return cTypeRoleTypeEnumRuleCall_4_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5() { return cHyphenMinusGreaterThanSignKeyword_5; }
		
		//port=[Port]?
		public Assignment getPortAssignment_6() { return cPortAssignment_6; }
		
		//[Port]
		public CrossReference getPortPortCrossReference_6_0() { return cPortPortCrossReference_6_0; }
		
		//ID
		public RuleCall getPortPortIDTerminalRuleCall_6_0_1() { return cPortPortIDTerminalRuleCall_6_0_1; }
	}
	public class StreamElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Stream");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cStreamKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeliveryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cDeliveryAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0 = (RuleCall)cDeliveryAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSyncKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSynctAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSynctSyncTypeEnumRuleCall_4_2_0 = (RuleCall)cSynctAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNotificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNotificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNotificationNotificationModelEnumRuleCall_5_2_0 = (RuleCall)cNotificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cBufferingKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cBufferingAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cBufferingBufferingEnumRuleCall_6_2_0 = (RuleCall)cBufferingAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cThroughputKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cThroughputAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cThroughputThroughputEnumRuleCall_7_2_0 = (RuleCall)cThroughputAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cPropsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cPropsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_8_2_0 = (RuleCall)cPropsAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDecisionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDecisionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_9_2_0 = (CrossReference)cDecisionAssignment_9_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_9_2_0.eContents().get(1);
		private final Keyword cRolesKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cColonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cLeftCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Assignment cRolesAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cRolesRoleParserRuleCall_13_0 = (RuleCall)cRolesAssignment_13.eContents().get(0);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cCommaKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Assignment cRolesAssignment_14_1 = (Assignment)cGroup_14.eContents().get(1);
		private final RuleCall cRolesRoleParserRuleCall_14_1_0 = (RuleCall)cRolesAssignment_14_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		////ConnProps returns DeliveryModel | SyncType | NotificationModel
		//Stream:
		//	'Stream'
		//	name=ID
		//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Stream' name=ID '{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'roles' ':' '{' roles+=Role (","
		//roles+=Role)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Stream'
		public Keyword getStreamKeyword_0() { return cStreamKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_3_0() { return cDeliveryKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_3_2() { return cDeliveryAssignment_3_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0; }
		
		//('sync' ':' synct=SyncType)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'sync'
		public Keyword getSyncKeyword_4_0() { return cSyncKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//synct=SyncType
		public Assignment getSynctAssignment_4_2() { return cSynctAssignment_4_2; }
		
		//SyncType
		public RuleCall getSynctSyncTypeEnumRuleCall_4_2_0() { return cSynctSyncTypeEnumRuleCall_4_2_0; }
		
		//('notification' ':' notification=NotificationModel)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'notification'
		public Keyword getNotificationKeyword_5_0() { return cNotificationKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//notification=NotificationModel
		public Assignment getNotificationAssignment_5_2() { return cNotificationAssignment_5_2; }
		
		//NotificationModel
		public RuleCall getNotificationNotificationModelEnumRuleCall_5_2_0() { return cNotificationNotificationModelEnumRuleCall_5_2_0; }
		
		//('buffering' ':' buffering=Buffering)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'buffering'
		public Keyword getBufferingKeyword_6_0() { return cBufferingKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//buffering=Buffering
		public Assignment getBufferingAssignment_6_2() { return cBufferingAssignment_6_2; }
		
		//Buffering
		public RuleCall getBufferingBufferingEnumRuleCall_6_2_0() { return cBufferingBufferingEnumRuleCall_6_2_0; }
		
		//('throughput' ':' throughput=Throughput)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'throughput'
		public Keyword getThroughputKeyword_7_0() { return cThroughputKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//throughput=Throughput
		public Assignment getThroughputAssignment_7_2() { return cThroughputAssignment_7_2; }
		
		//Throughput
		public RuleCall getThroughputThroughputEnumRuleCall_7_2_0() { return cThroughputThroughputEnumRuleCall_7_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'props'
		public Keyword getPropsKeyword_8_0() { return cPropsKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//props=EString
		public Assignment getPropsAssignment_8_2() { return cPropsAssignment_8_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_8_2_0() { return cPropsEStringParserRuleCall_8_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_9() { return cGroup_9; }
		
		//'decision'
		public Keyword getDecisionKeyword_9_0() { return cDecisionKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_9_2() { return cDecisionAssignment_9_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_9_2_0() { return cDecisionArchDecisionCrossReference_9_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_9_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1; }
		
		//'roles'
		public Keyword getRolesKeyword_10() { return cRolesKeyword_10; }
		
		//':'
		public Keyword getColonKeyword_11() { return cColonKeyword_11; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_12() { return cLeftCurlyBracketKeyword_12; }
		
		//roles+=Role
		public Assignment getRolesAssignment_13() { return cRolesAssignment_13; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_13_0() { return cRolesRoleParserRuleCall_13_0; }
		
		//("," roles+=Role)*
		public Group getGroup_14() { return cGroup_14; }
		
		//","
		public Keyword getCommaKeyword_14_0() { return cCommaKeyword_14_0; }
		
		//roles+=Role
		public Assignment getRolesAssignment_14_1() { return cRolesAssignment_14_1; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_14_1_0() { return cRolesRoleParserRuleCall_14_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
	}
	public class AdaptorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Adaptor");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAdaptorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeliveryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cDeliveryAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0 = (RuleCall)cDeliveryAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSyncKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSynctAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSynctSyncTypeEnumRuleCall_4_2_0 = (RuleCall)cSynctAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNotificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNotificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNotificationNotificationModelEnumRuleCall_5_2_0 = (RuleCall)cNotificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cBufferingKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cBufferingAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cBufferingBufferingEnumRuleCall_6_2_0 = (RuleCall)cBufferingAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cThroughputKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cThroughputAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cThroughputThroughputEnumRuleCall_7_2_0 = (RuleCall)cThroughputAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cPropsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cPropsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_8_2_0 = (RuleCall)cPropsAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDecisionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDecisionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_9_2_0 = (CrossReference)cDecisionAssignment_9_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_9_2_0.eContents().get(1);
		private final Keyword cRolesKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cLeftCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Assignment cRolesAssignment_12 = (Assignment)cGroup.eContents().get(12);
		private final RuleCall cRolesRoleParserRuleCall_12_0 = (RuleCall)cRolesAssignment_12.eContents().get(0);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cCommaKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Assignment cRolesAssignment_13_1 = (Assignment)cGroup_13.eContents().get(1);
		private final RuleCall cRolesRoleParserRuleCall_13_1_0 = (RuleCall)cRolesAssignment_13_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		
		//Adaptor:
		//	'Adaptor'
		//	name=ID
		//	'{' ('delivery' ':' delivery=DeliveryGuarantee?) ('sync' ':' synct=SyncType)? ('notification' ':'
		//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'roles' '{' roles+=Role ("," roles+=Role)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Adaptor' name=ID '{' ('delivery' ':' delivery=DeliveryGuarantee?) ('sync' ':' synct=SyncType)? ('notification' ':'
		//notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'roles' '{' roles+=Role ("," roles+=Role)*
		//'}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Adaptor'
		public Keyword getAdaptorKeyword_0() { return cAdaptorKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//'delivery' ':' delivery=DeliveryGuarantee?
		public Group getGroup_3() { return cGroup_3; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_3_0() { return cDeliveryKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//delivery=DeliveryGuarantee?
		public Assignment getDeliveryAssignment_3_2() { return cDeliveryAssignment_3_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0; }
		
		//('sync' ':' synct=SyncType)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'sync'
		public Keyword getSyncKeyword_4_0() { return cSyncKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//synct=SyncType
		public Assignment getSynctAssignment_4_2() { return cSynctAssignment_4_2; }
		
		//SyncType
		public RuleCall getSynctSyncTypeEnumRuleCall_4_2_0() { return cSynctSyncTypeEnumRuleCall_4_2_0; }
		
		//('notification' ':' notification=NotificationModel)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'notification'
		public Keyword getNotificationKeyword_5_0() { return cNotificationKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//notification=NotificationModel
		public Assignment getNotificationAssignment_5_2() { return cNotificationAssignment_5_2; }
		
		//NotificationModel
		public RuleCall getNotificationNotificationModelEnumRuleCall_5_2_0() { return cNotificationNotificationModelEnumRuleCall_5_2_0; }
		
		//('buffering' ':' buffering=Buffering)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'buffering'
		public Keyword getBufferingKeyword_6_0() { return cBufferingKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//buffering=Buffering
		public Assignment getBufferingAssignment_6_2() { return cBufferingAssignment_6_2; }
		
		//Buffering
		public RuleCall getBufferingBufferingEnumRuleCall_6_2_0() { return cBufferingBufferingEnumRuleCall_6_2_0; }
		
		//('throughput' ':' throughput=Throughput)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'throughput'
		public Keyword getThroughputKeyword_7_0() { return cThroughputKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//throughput=Throughput
		public Assignment getThroughputAssignment_7_2() { return cThroughputAssignment_7_2; }
		
		//Throughput
		public RuleCall getThroughputThroughputEnumRuleCall_7_2_0() { return cThroughputThroughputEnumRuleCall_7_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'props'
		public Keyword getPropsKeyword_8_0() { return cPropsKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//props=EString
		public Assignment getPropsAssignment_8_2() { return cPropsAssignment_8_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_8_2_0() { return cPropsEStringParserRuleCall_8_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_9() { return cGroup_9; }
		
		//'decision'
		public Keyword getDecisionKeyword_9_0() { return cDecisionKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_9_2() { return cDecisionAssignment_9_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_9_2_0() { return cDecisionArchDecisionCrossReference_9_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_9_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1; }
		
		//'roles'
		public Keyword getRolesKeyword_10() { return cRolesKeyword_10; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_11() { return cLeftCurlyBracketKeyword_11; }
		
		//roles+=Role
		public Assignment getRolesAssignment_12() { return cRolesAssignment_12; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_12_0() { return cRolesRoleParserRuleCall_12_0; }
		
		//("," roles+=Role)*
		public Group getGroup_13() { return cGroup_13; }
		
		//","
		public Keyword getCommaKeyword_13_0() { return cCommaKeyword_13_0; }
		
		//roles+=Role
		public Assignment getRolesAssignment_13_1() { return cRolesAssignment_13_1; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_13_1_0() { return cRolesRoleParserRuleCall_13_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_14() { return cRightCurlyBracketKeyword_14; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
	}
	public class DistributorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Distributor");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDistributorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeliveryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cDeliveryAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0 = (RuleCall)cDeliveryAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSyncKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSynctAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSynctSyncTypeEnumRuleCall_4_2_0 = (RuleCall)cSynctAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNotificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNotificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNotificationNotificationModelEnumRuleCall_5_2_0 = (RuleCall)cNotificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cBufferingKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cBufferingAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cBufferingBufferingEnumRuleCall_6_2_0 = (RuleCall)cBufferingAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cThroughputKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cThroughputAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cThroughputThroughputEnumRuleCall_7_2_0 = (RuleCall)cThroughputAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cPropsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cPropsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_8_2_0 = (RuleCall)cPropsAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDecisionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDecisionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_9_2_0 = (CrossReference)cDecisionAssignment_9_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_9_2_0.eContents().get(1);
		private final Keyword cRolesKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cLeftCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Assignment cRolesAssignment_12 = (Assignment)cGroup.eContents().get(12);
		private final RuleCall cRolesRoleParserRuleCall_12_0 = (RuleCall)cRolesAssignment_12.eContents().get(0);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cCommaKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Assignment cRolesAssignment_13_1 = (Assignment)cGroup_13.eContents().get(1);
		private final RuleCall cRolesRoleParserRuleCall_13_1_0 = (RuleCall)cRolesAssignment_13_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		
		//Distributor:
		//	'Distributor'
		//	name=ID
		//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'roles' '{' roles+=Role ("," roles+=Role)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Distributor' name=ID '{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'roles' '{' roles+=Role ("," roles+=Role)*
		//'}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Distributor'
		public Keyword getDistributorKeyword_0() { return cDistributorKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_3_0() { return cDeliveryKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_3_2() { return cDeliveryAssignment_3_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0; }
		
		//('sync' ':' synct=SyncType)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'sync'
		public Keyword getSyncKeyword_4_0() { return cSyncKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//synct=SyncType
		public Assignment getSynctAssignment_4_2() { return cSynctAssignment_4_2; }
		
		//SyncType
		public RuleCall getSynctSyncTypeEnumRuleCall_4_2_0() { return cSynctSyncTypeEnumRuleCall_4_2_0; }
		
		//('notification' ':' notification=NotificationModel)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'notification'
		public Keyword getNotificationKeyword_5_0() { return cNotificationKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//notification=NotificationModel
		public Assignment getNotificationAssignment_5_2() { return cNotificationAssignment_5_2; }
		
		//NotificationModel
		public RuleCall getNotificationNotificationModelEnumRuleCall_5_2_0() { return cNotificationNotificationModelEnumRuleCall_5_2_0; }
		
		//('buffering' ':' buffering=Buffering)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'buffering'
		public Keyword getBufferingKeyword_6_0() { return cBufferingKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//buffering=Buffering
		public Assignment getBufferingAssignment_6_2() { return cBufferingAssignment_6_2; }
		
		//Buffering
		public RuleCall getBufferingBufferingEnumRuleCall_6_2_0() { return cBufferingBufferingEnumRuleCall_6_2_0; }
		
		//('throughput' ':' throughput=Throughput)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'throughput'
		public Keyword getThroughputKeyword_7_0() { return cThroughputKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//throughput=Throughput
		public Assignment getThroughputAssignment_7_2() { return cThroughputAssignment_7_2; }
		
		//Throughput
		public RuleCall getThroughputThroughputEnumRuleCall_7_2_0() { return cThroughputThroughputEnumRuleCall_7_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'props'
		public Keyword getPropsKeyword_8_0() { return cPropsKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//props=EString
		public Assignment getPropsAssignment_8_2() { return cPropsAssignment_8_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_8_2_0() { return cPropsEStringParserRuleCall_8_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_9() { return cGroup_9; }
		
		//'decision'
		public Keyword getDecisionKeyword_9_0() { return cDecisionKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_9_2() { return cDecisionAssignment_9_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_9_2_0() { return cDecisionArchDecisionCrossReference_9_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_9_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1; }
		
		//'roles'
		public Keyword getRolesKeyword_10() { return cRolesKeyword_10; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_11() { return cLeftCurlyBracketKeyword_11; }
		
		//roles+=Role
		public Assignment getRolesAssignment_12() { return cRolesAssignment_12; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_12_0() { return cRolesRoleParserRuleCall_12_0; }
		
		//("," roles+=Role)*
		public Group getGroup_13() { return cGroup_13; }
		
		//","
		public Keyword getCommaKeyword_13_0() { return cCommaKeyword_13_0; }
		
		//roles+=Role
		public Assignment getRolesAssignment_13_1() { return cRolesAssignment_13_1; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_13_1_0() { return cRolesRoleParserRuleCall_13_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_14() { return cRightCurlyBracketKeyword_14; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
	}
	public class EventElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Event");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEventKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeliveryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cDeliveryAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0 = (RuleCall)cDeliveryAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSyncKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSynctAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSynctSyncTypeEnumRuleCall_4_2_0 = (RuleCall)cSynctAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNotificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNotificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNotificationNotificationModelEnumRuleCall_5_2_0 = (RuleCall)cNotificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cBufferingKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cBufferingAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cBufferingBufferingEnumRuleCall_6_2_0 = (RuleCall)cBufferingAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cThroughputKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cThroughputAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cThroughputThroughputEnumRuleCall_7_2_0 = (RuleCall)cThroughputAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cPropsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cPropsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_8_2_0 = (RuleCall)cPropsAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDecisionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDecisionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_9_2_0 = (CrossReference)cDecisionAssignment_9_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_9_2_0.eContents().get(1);
		private final Keyword cRolesKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cColonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cLeftCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Assignment cRolesAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cRolesRoleParserRuleCall_13_0 = (RuleCall)cRolesAssignment_13.eContents().get(0);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cCommaKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Assignment cRolesAssignment_14_1 = (Assignment)cGroup_14.eContents().get(1);
		private final RuleCall cRolesRoleParserRuleCall_14_1_0 = (RuleCall)cRolesAssignment_14_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//Event:
		//	'Event'
		//	name=ID
		//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Event' name=ID '{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'roles' ':' '{' roles+=Role (","
		//roles+=Role)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Event'
		public Keyword getEventKeyword_0() { return cEventKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_3_0() { return cDeliveryKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_3_2() { return cDeliveryAssignment_3_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0; }
		
		//('sync' ':' synct=SyncType)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'sync'
		public Keyword getSyncKeyword_4_0() { return cSyncKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//synct=SyncType
		public Assignment getSynctAssignment_4_2() { return cSynctAssignment_4_2; }
		
		//SyncType
		public RuleCall getSynctSyncTypeEnumRuleCall_4_2_0() { return cSynctSyncTypeEnumRuleCall_4_2_0; }
		
		//('notification' ':' notification=NotificationModel)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'notification'
		public Keyword getNotificationKeyword_5_0() { return cNotificationKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//notification=NotificationModel
		public Assignment getNotificationAssignment_5_2() { return cNotificationAssignment_5_2; }
		
		//NotificationModel
		public RuleCall getNotificationNotificationModelEnumRuleCall_5_2_0() { return cNotificationNotificationModelEnumRuleCall_5_2_0; }
		
		//('buffering' ':' buffering=Buffering)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'buffering'
		public Keyword getBufferingKeyword_6_0() { return cBufferingKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//buffering=Buffering
		public Assignment getBufferingAssignment_6_2() { return cBufferingAssignment_6_2; }
		
		//Buffering
		public RuleCall getBufferingBufferingEnumRuleCall_6_2_0() { return cBufferingBufferingEnumRuleCall_6_2_0; }
		
		//('throughput' ':' throughput=Throughput)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'throughput'
		public Keyword getThroughputKeyword_7_0() { return cThroughputKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//throughput=Throughput
		public Assignment getThroughputAssignment_7_2() { return cThroughputAssignment_7_2; }
		
		//Throughput
		public RuleCall getThroughputThroughputEnumRuleCall_7_2_0() { return cThroughputThroughputEnumRuleCall_7_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'props'
		public Keyword getPropsKeyword_8_0() { return cPropsKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//props=EString
		public Assignment getPropsAssignment_8_2() { return cPropsAssignment_8_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_8_2_0() { return cPropsEStringParserRuleCall_8_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_9() { return cGroup_9; }
		
		//'decision'
		public Keyword getDecisionKeyword_9_0() { return cDecisionKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_9_2() { return cDecisionAssignment_9_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_9_2_0() { return cDecisionArchDecisionCrossReference_9_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_9_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1; }
		
		//'roles'
		public Keyword getRolesKeyword_10() { return cRolesKeyword_10; }
		
		//':'
		public Keyword getColonKeyword_11() { return cColonKeyword_11; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_12() { return cLeftCurlyBracketKeyword_12; }
		
		//roles+=Role
		public Assignment getRolesAssignment_13() { return cRolesAssignment_13; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_13_0() { return cRolesRoleParserRuleCall_13_0; }
		
		//("," roles+=Role)*
		public Group getGroup_14() { return cGroup_14; }
		
		//","
		public Keyword getCommaKeyword_14_0() { return cCommaKeyword_14_0; }
		
		//roles+=Role
		public Assignment getRolesAssignment_14_1() { return cRolesAssignment_14_1; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_14_1_0() { return cRolesRoleParserRuleCall_14_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
	}
	public class ProcedureCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.ProcedureCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcCallKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeliveryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cDeliveryAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0 = (RuleCall)cDeliveryAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSyncKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSynctAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSynctSyncTypeEnumRuleCall_4_2_0 = (RuleCall)cSynctAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNotificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNotificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNotificationNotificationModelEnumRuleCall_5_2_0 = (RuleCall)cNotificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cBufferingKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cBufferingAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cBufferingBufferingEnumRuleCall_6_2_0 = (RuleCall)cBufferingAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cThroughputKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cThroughputAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cThroughputThroughputEnumRuleCall_7_2_0 = (RuleCall)cThroughputAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cPropsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cPropsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_8_2_0 = (RuleCall)cPropsAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDecisionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDecisionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_9_2_0 = (CrossReference)cDecisionAssignment_9_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_9_2_0.eContents().get(1);
		private final Keyword cRolesKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cColonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cLeftCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Assignment cRolesAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cRolesRoleParserRuleCall_13_0 = (RuleCall)cRolesAssignment_13.eContents().get(0);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cCommaKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Assignment cRolesAssignment_14_1 = (Assignment)cGroup_14.eContents().get(1);
		private final RuleCall cRolesRoleParserRuleCall_14_1_0 = (RuleCall)cRolesAssignment_14_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//ProcedureCall:
		//	'ProcCall'
		//	name=ID
		//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'ProcCall' name=ID '{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
		//notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
		//('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'roles' ':' '{' roles+=Role (","
		//roles+=Role)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'ProcCall'
		public Keyword getProcCallKeyword_0() { return cProcCallKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_3_0() { return cDeliveryKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_3_2() { return cDeliveryAssignment_3_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_3_2_0; }
		
		//('sync' ':' synct=SyncType)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'sync'
		public Keyword getSyncKeyword_4_0() { return cSyncKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//synct=SyncType
		public Assignment getSynctAssignment_4_2() { return cSynctAssignment_4_2; }
		
		//SyncType
		public RuleCall getSynctSyncTypeEnumRuleCall_4_2_0() { return cSynctSyncTypeEnumRuleCall_4_2_0; }
		
		//('notification' ':' notification=NotificationModel)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'notification'
		public Keyword getNotificationKeyword_5_0() { return cNotificationKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//notification=NotificationModel
		public Assignment getNotificationAssignment_5_2() { return cNotificationAssignment_5_2; }
		
		//NotificationModel
		public RuleCall getNotificationNotificationModelEnumRuleCall_5_2_0() { return cNotificationNotificationModelEnumRuleCall_5_2_0; }
		
		//('buffering' ':' buffering=Buffering)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'buffering'
		public Keyword getBufferingKeyword_6_0() { return cBufferingKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//buffering=Buffering
		public Assignment getBufferingAssignment_6_2() { return cBufferingAssignment_6_2; }
		
		//Buffering
		public RuleCall getBufferingBufferingEnumRuleCall_6_2_0() { return cBufferingBufferingEnumRuleCall_6_2_0; }
		
		//('throughput' ':' throughput=Throughput)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'throughput'
		public Keyword getThroughputKeyword_7_0() { return cThroughputKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//throughput=Throughput
		public Assignment getThroughputAssignment_7_2() { return cThroughputAssignment_7_2; }
		
		//Throughput
		public RuleCall getThroughputThroughputEnumRuleCall_7_2_0() { return cThroughputThroughputEnumRuleCall_7_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'props'
		public Keyword getPropsKeyword_8_0() { return cPropsKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//props=EString
		public Assignment getPropsAssignment_8_2() { return cPropsAssignment_8_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_8_2_0() { return cPropsEStringParserRuleCall_8_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_9() { return cGroup_9; }
		
		//'decision'
		public Keyword getDecisionKeyword_9_0() { return cDecisionKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_9_2() { return cDecisionAssignment_9_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_9_2_0() { return cDecisionArchDecisionCrossReference_9_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_9_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_9_2_0_1; }
		
		//'roles'
		public Keyword getRolesKeyword_10() { return cRolesKeyword_10; }
		
		//':'
		public Keyword getColonKeyword_11() { return cColonKeyword_11; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_12() { return cLeftCurlyBracketKeyword_12; }
		
		//roles+=Role
		public Assignment getRolesAssignment_13() { return cRolesAssignment_13; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_13_0() { return cRolesRoleParserRuleCall_13_0; }
		
		//("," roles+=Role)*
		public Group getGroup_14() { return cGroup_14; }
		
		//","
		public Keyword getCommaKeyword_14_0() { return cCommaKeyword_14_0; }
		
		//roles+=Role
		public Assignment getRolesAssignment_14_1() { return cRolesAssignment_14_1; }
		
		//Role
		public RuleCall getRolesRoleParserRuleCall_14_1_0() { return cRolesRoleParserRuleCall_14_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
	}
	public class TransformerElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Transformer");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cTransformerKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cProcModelKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cProcModelAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cProcModelProcessingModelEnumRuleCall_3_2_0 = (RuleCall)cProcModelAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cDeliveryKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cDeliveryAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0 = (RuleCall)cDeliveryAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cPmmlKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cPmmlAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cPmmlEStringParserRuleCall_5_2_0 = (RuleCall)cPmmlAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cDecisionKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cDecisionAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_6_2_0 = (CrossReference)cDecisionAssignment_6_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_6_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_6_2_0.eContents().get(1);
		private final Keyword cPortsKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cColonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Keyword cLeftCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Assignment cPortsAssignment_10 = (Assignment)cGroup.eContents().get(10);
		private final RuleCall cPortsPortParserRuleCall_10_0 = (RuleCall)cPortsAssignment_10.eContents().get(0);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cCommaKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Assignment cPortsAssignment_11_1 = (Assignment)cGroup_11.eContents().get(1);
		private final RuleCall cPortsPortParserRuleCall_11_1_0 = (RuleCall)cPortsAssignment_11_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
		
		//Transformer:
		//	'Transformer'
		//	name=ID
		//	'{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)? ('pmml' ':'
		//	pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Transformer' name=ID '{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
		//('pmml' ':' pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'ports' ':' '{' ports+=Port ("," ports+=Port)*
		//'}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Transformer'
		public Keyword getTransformerKeyword_0() { return cTransformerKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('procModel' ':' procModel=ProcessingModel)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'procModel'
		public Keyword getProcModelKeyword_3_0() { return cProcModelKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//procModel=ProcessingModel
		public Assignment getProcModelAssignment_3_2() { return cProcModelAssignment_3_2; }
		
		//ProcessingModel
		public RuleCall getProcModelProcessingModelEnumRuleCall_3_2_0() { return cProcModelProcessingModelEnumRuleCall_3_2_0; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_4_0() { return cDeliveryKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_4_2() { return cDeliveryAssignment_4_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0; }
		
		//('pmml' ':' pmml=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'pmml'
		public Keyword getPmmlKeyword_5_0() { return cPmmlKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//pmml=EString
		public Assignment getPmmlAssignment_5_2() { return cPmmlAssignment_5_2; }
		
		//EString
		public RuleCall getPmmlEStringParserRuleCall_5_2_0() { return cPmmlEStringParserRuleCall_5_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_6() { return cGroup_6; }
		
		//'decision'
		public Keyword getDecisionKeyword_6_0() { return cDecisionKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_6_2() { return cDecisionAssignment_6_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_6_2_0() { return cDecisionArchDecisionCrossReference_6_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_6_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_6_2_0_1; }
		
		//'ports'
		public Keyword getPortsKeyword_7() { return cPortsKeyword_7; }
		
		//':'
		public Keyword getColonKeyword_8() { return cColonKeyword_8; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_9() { return cLeftCurlyBracketKeyword_9; }
		
		//ports+=Port
		public Assignment getPortsAssignment_10() { return cPortsAssignment_10; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_10_0() { return cPortsPortParserRuleCall_10_0; }
		
		//("," ports+=Port)*
		public Group getGroup_11() { return cGroup_11; }
		
		//","
		public Keyword getCommaKeyword_11_0() { return cCommaKeyword_11_0; }
		
		//ports+=Port
		public Assignment getPortsAssignment_11_1() { return cPortsAssignment_11_1; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_11_1_0() { return cPortsPortParserRuleCall_11_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
	}
	public class EstimatorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Estimator");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEstimatorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cProcModelKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cProcModelAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cProcModelProcessingModelEnumRuleCall_3_2_0 = (RuleCall)cProcModelAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cDeliveryKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cDeliveryAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0 = (RuleCall)cDeliveryAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cPmmlKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cPmmlAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cPmmlEStringParserRuleCall_5_2_0 = (RuleCall)cPmmlAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cDecisionKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cDecisionAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_6_2_0 = (CrossReference)cDecisionAssignment_6_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_6_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_6_2_0.eContents().get(1);
		private final Keyword cPortsKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cColonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Keyword cLeftCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Assignment cPortsAssignment_10 = (Assignment)cGroup.eContents().get(10);
		private final RuleCall cPortsPortParserRuleCall_10_0 = (RuleCall)cPortsAssignment_10.eContents().get(0);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cCommaKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Assignment cPortsAssignment_11_1 = (Assignment)cGroup_11.eContents().get(1);
		private final RuleCall cPortsPortParserRuleCall_11_1_0 = (RuleCall)cPortsAssignment_11_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
		
		//Estimator:
		//	'Estimator'
		//	name=ID
		//	'{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)? ('pmml' ':'
		//	pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])?
		//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Estimator' name=ID '{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
		//('pmml' ':' pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])? 'ports' ':' '{' ports+=Port ("," ports+=Port)*
		//'}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Estimator'
		public Keyword getEstimatorKeyword_0() { return cEstimatorKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('procModel' ':' procModel=ProcessingModel)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'procModel'
		public Keyword getProcModelKeyword_3_0() { return cProcModelKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//procModel=ProcessingModel
		public Assignment getProcModelAssignment_3_2() { return cProcModelAssignment_3_2; }
		
		//ProcessingModel
		public RuleCall getProcModelProcessingModelEnumRuleCall_3_2_0() { return cProcModelProcessingModelEnumRuleCall_3_2_0; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_4_0() { return cDeliveryKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_4_2() { return cDeliveryAssignment_4_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_4_2_0; }
		
		//('pmml' ':' pmml=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'pmml'
		public Keyword getPmmlKeyword_5_0() { return cPmmlKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//pmml=EString
		public Assignment getPmmlAssignment_5_2() { return cPmmlAssignment_5_2; }
		
		//EString
		public RuleCall getPmmlEStringParserRuleCall_5_2_0() { return cPmmlEStringParserRuleCall_5_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_6() { return cGroup_6; }
		
		//'decision'
		public Keyword getDecisionKeyword_6_0() { return cDecisionKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_6_2() { return cDecisionAssignment_6_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_6_2_0() { return cDecisionArchDecisionCrossReference_6_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_6_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_6_2_0_1; }
		
		//'ports'
		public Keyword getPortsKeyword_7() { return cPortsKeyword_7; }
		
		//':'
		public Keyword getColonKeyword_8() { return cColonKeyword_8; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_9() { return cLeftCurlyBracketKeyword_9; }
		
		//ports+=Port
		public Assignment getPortsAssignment_10() { return cPortsAssignment_10; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_10_0() { return cPortsPortParserRuleCall_10_0; }
		
		//("," ports+=Port)*
		public Group getGroup_11() { return cGroup_11; }
		
		//","
		public Keyword getCommaKeyword_11_0() { return cCommaKeyword_11_0; }
		
		//ports+=Port
		public Assignment getPortsAssignment_11_1() { return cPortsAssignment_11_1; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_11_1_0() { return cPortsPortParserRuleCall_11_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
	}
	public class IngestorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Ingestor");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cIngestorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cTypeKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cTypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cTypeAccessTypeEnumRuleCall_5_0 = (RuleCall)cTypeAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cProcModelKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cProcModelAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cProcModelProcessingModelEnumRuleCall_6_2_0 = (RuleCall)cProcModelAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cDeliveryKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cDeliveryAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0 = (RuleCall)cDeliveryAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cConnKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cConnAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cConnEStringParserRuleCall_8_2_0 = (RuleCall)cConnAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cFormatKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cFormatAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final RuleCall cFormatEStringParserRuleCall_9_2_0 = (RuleCall)cFormatAssignment_9_2.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cPropsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cColonKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cPropsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_10_2_0 = (RuleCall)cPropsAssignment_10_2.eContents().get(0);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cDecisionKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Keyword cColonKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
		private final Assignment cDecisionAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_11_2_0 = (CrossReference)cDecisionAssignment_11_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_11_2_0.eContents().get(1);
		private final Keyword cPortsKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Keyword cColonKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final Keyword cLeftCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final Assignment cPortsAssignment_15 = (Assignment)cGroup.eContents().get(15);
		private final RuleCall cPortsPortParserRuleCall_15_0 = (RuleCall)cPortsAssignment_15.eContents().get(0);
		private final Group cGroup_16 = (Group)cGroup.eContents().get(16);
		private final Keyword cCommaKeyword_16_0 = (Keyword)cGroup_16.eContents().get(0);
		private final Assignment cPortsAssignment_16_1 = (Assignment)cGroup_16.eContents().get(1);
		private final RuleCall cPortsPortParserRuleCall_16_1_0 = (RuleCall)cPortsAssignment_16_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_17 = (Keyword)cGroup.eContents().get(17);
		private final Keyword cRightCurlyBracketKeyword_18 = (Keyword)cGroup.eContents().get(18);
		
		//Ingestor:
		//	'Ingestor'
		//	name=ID
		//	'{'
		//	'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
		//	('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)? ('decision' ':'
		//	decision=[rq::ArchDecision])?
		//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Ingestor' name=ID '{' 'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':'
		//delivery=DeliveryGuarantee)? ('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)?
		//('decision' ':' decision=[rq::ArchDecision])? 'ports' ':' '{' ports+=Port ("," ports+=Port)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Ingestor'
		public Keyword getIngestorKeyword_0() { return cIngestorKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//'type'
		public Keyword getTypeKeyword_3() { return cTypeKeyword_3; }
		
		//':'
		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
		
		//type=AccessType
		public Assignment getTypeAssignment_5() { return cTypeAssignment_5; }
		
		//AccessType
		public RuleCall getTypeAccessTypeEnumRuleCall_5_0() { return cTypeAccessTypeEnumRuleCall_5_0; }
		
		//('procModel' ':' procModel=ProcessingModel)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'procModel'
		public Keyword getProcModelKeyword_6_0() { return cProcModelKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//procModel=ProcessingModel
		public Assignment getProcModelAssignment_6_2() { return cProcModelAssignment_6_2; }
		
		//ProcessingModel
		public RuleCall getProcModelProcessingModelEnumRuleCall_6_2_0() { return cProcModelProcessingModelEnumRuleCall_6_2_0; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_7_0() { return cDeliveryKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_7_2() { return cDeliveryAssignment_7_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0; }
		
		//('conn' ':' conn=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'conn'
		public Keyword getConnKeyword_8_0() { return cConnKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//conn=EString
		public Assignment getConnAssignment_8_2() { return cConnAssignment_8_2; }
		
		//EString
		public RuleCall getConnEStringParserRuleCall_8_2_0() { return cConnEStringParserRuleCall_8_2_0; }
		
		//('format' ':' format=EString)?
		public Group getGroup_9() { return cGroup_9; }
		
		//'format'
		public Keyword getFormatKeyword_9_0() { return cFormatKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//format=EString
		public Assignment getFormatAssignment_9_2() { return cFormatAssignment_9_2; }
		
		//EString
		public RuleCall getFormatEStringParserRuleCall_9_2_0() { return cFormatEStringParserRuleCall_9_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_10() { return cGroup_10; }
		
		//'props'
		public Keyword getPropsKeyword_10_0() { return cPropsKeyword_10_0; }
		
		//':'
		public Keyword getColonKeyword_10_1() { return cColonKeyword_10_1; }
		
		//props=EString
		public Assignment getPropsAssignment_10_2() { return cPropsAssignment_10_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_10_2_0() { return cPropsEStringParserRuleCall_10_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_11() { return cGroup_11; }
		
		//'decision'
		public Keyword getDecisionKeyword_11_0() { return cDecisionKeyword_11_0; }
		
		//':'
		public Keyword getColonKeyword_11_1() { return cColonKeyword_11_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_11_2() { return cDecisionAssignment_11_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_11_2_0() { return cDecisionArchDecisionCrossReference_11_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_11_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1; }
		
		//'ports'
		public Keyword getPortsKeyword_12() { return cPortsKeyword_12; }
		
		//':'
		public Keyword getColonKeyword_13() { return cColonKeyword_13; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_14() { return cLeftCurlyBracketKeyword_14; }
		
		//ports+=Port
		public Assignment getPortsAssignment_15() { return cPortsAssignment_15; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_15_0() { return cPortsPortParserRuleCall_15_0; }
		
		//("," ports+=Port)*
		public Group getGroup_16() { return cGroup_16; }
		
		//","
		public Keyword getCommaKeyword_16_0() { return cCommaKeyword_16_0; }
		
		//ports+=Port
		public Assignment getPortsAssignment_16_1() { return cPortsAssignment_16_1; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_16_1_0() { return cPortsPortParserRuleCall_16_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_17() { return cRightCurlyBracketKeyword_17; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_18() { return cRightCurlyBracketKeyword_18; }
	}
	public class SinkElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Sink");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSinkKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cTypeKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cTypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cTypeAccessTypeEnumRuleCall_5_0 = (RuleCall)cTypeAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cProcModelKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cProcModelAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cProcModelProcessingModelEnumRuleCall_6_2_0 = (RuleCall)cProcModelAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cDeliveryKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cDeliveryAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0 = (RuleCall)cDeliveryAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cConnKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cConnAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cConnEStringParserRuleCall_8_2_0 = (RuleCall)cConnAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cFormatKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cColonKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cFormatAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final RuleCall cFormatEStringParserRuleCall_9_2_0 = (RuleCall)cFormatAssignment_9_2.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cPropsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cColonKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cPropsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_10_2_0 = (RuleCall)cPropsAssignment_10_2.eContents().get(0);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cDecisionKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Keyword cColonKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
		private final Assignment cDecisionAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_11_2_0 = (CrossReference)cDecisionAssignment_11_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_11_2_0.eContents().get(1);
		private final Keyword cPortsKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Keyword cColonKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final Keyword cLeftCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final Assignment cPortsAssignment_15 = (Assignment)cGroup.eContents().get(15);
		private final RuleCall cPortsPortParserRuleCall_15_0 = (RuleCall)cPortsAssignment_15.eContents().get(0);
		private final Group cGroup_16 = (Group)cGroup.eContents().get(16);
		private final Keyword cCommaKeyword_16_0 = (Keyword)cGroup_16.eContents().get(0);
		private final Assignment cPortsAssignment_16_1 = (Assignment)cGroup_16.eContents().get(1);
		private final RuleCall cPortsPortParserRuleCall_16_1_0 = (RuleCall)cPortsAssignment_16_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_17 = (Keyword)cGroup.eContents().get(17);
		private final Keyword cRightCurlyBracketKeyword_18 = (Keyword)cGroup.eContents().get(18);
		
		//Sink:
		//	'Sink'
		//	name=ID
		//	'{'
		//	'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
		//	('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)? ('decision' ':'
		//	decision=[rq::ArchDecision])?
		//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Sink' name=ID '{' 'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':'
		//delivery=DeliveryGuarantee)? ('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)?
		//('decision' ':' decision=[rq::ArchDecision])? 'ports' ':' '{' ports+=Port ("," ports+=Port)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Sink'
		public Keyword getSinkKeyword_0() { return cSinkKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//'type'
		public Keyword getTypeKeyword_3() { return cTypeKeyword_3; }
		
		//':'
		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
		
		//type=AccessType
		public Assignment getTypeAssignment_5() { return cTypeAssignment_5; }
		
		//AccessType
		public RuleCall getTypeAccessTypeEnumRuleCall_5_0() { return cTypeAccessTypeEnumRuleCall_5_0; }
		
		//('procModel' ':' procModel=ProcessingModel)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'procModel'
		public Keyword getProcModelKeyword_6_0() { return cProcModelKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//procModel=ProcessingModel
		public Assignment getProcModelAssignment_6_2() { return cProcModelAssignment_6_2; }
		
		//ProcessingModel
		public RuleCall getProcModelProcessingModelEnumRuleCall_6_2_0() { return cProcModelProcessingModelEnumRuleCall_6_2_0; }
		
		//('delivery' ':' delivery=DeliveryGuarantee)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'delivery'
		public Keyword getDeliveryKeyword_7_0() { return cDeliveryKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//delivery=DeliveryGuarantee
		public Assignment getDeliveryAssignment_7_2() { return cDeliveryAssignment_7_2; }
		
		//DeliveryGuarantee
		public RuleCall getDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0() { return cDeliveryDeliveryGuaranteeEnumRuleCall_7_2_0; }
		
		//('conn' ':' conn=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'conn'
		public Keyword getConnKeyword_8_0() { return cConnKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//conn=EString
		public Assignment getConnAssignment_8_2() { return cConnAssignment_8_2; }
		
		//EString
		public RuleCall getConnEStringParserRuleCall_8_2_0() { return cConnEStringParserRuleCall_8_2_0; }
		
		//('format' ':' format=EString)?
		public Group getGroup_9() { return cGroup_9; }
		
		//'format'
		public Keyword getFormatKeyword_9_0() { return cFormatKeyword_9_0; }
		
		//':'
		public Keyword getColonKeyword_9_1() { return cColonKeyword_9_1; }
		
		//format=EString
		public Assignment getFormatAssignment_9_2() { return cFormatAssignment_9_2; }
		
		//EString
		public RuleCall getFormatEStringParserRuleCall_9_2_0() { return cFormatEStringParserRuleCall_9_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_10() { return cGroup_10; }
		
		//'props'
		public Keyword getPropsKeyword_10_0() { return cPropsKeyword_10_0; }
		
		//':'
		public Keyword getColonKeyword_10_1() { return cColonKeyword_10_1; }
		
		//props=EString
		public Assignment getPropsAssignment_10_2() { return cPropsAssignment_10_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_10_2_0() { return cPropsEStringParserRuleCall_10_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_11() { return cGroup_11; }
		
		//'decision'
		public Keyword getDecisionKeyword_11_0() { return cDecisionKeyword_11_0; }
		
		//':'
		public Keyword getColonKeyword_11_1() { return cColonKeyword_11_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_11_2() { return cDecisionAssignment_11_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_11_2_0() { return cDecisionArchDecisionCrossReference_11_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_11_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1; }
		
		//'ports'
		public Keyword getPortsKeyword_12() { return cPortsKeyword_12; }
		
		//':'
		public Keyword getColonKeyword_13() { return cColonKeyword_13; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_14() { return cLeftCurlyBracketKeyword_14; }
		
		//ports+=Port
		public Assignment getPortsAssignment_15() { return cPortsAssignment_15; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_15_0() { return cPortsPortParserRuleCall_15_0; }
		
		//("," ports+=Port)*
		public Group getGroup_16() { return cGroup_16; }
		
		//","
		public Keyword getCommaKeyword_16_0() { return cCommaKeyword_16_0; }
		
		//ports+=Port
		public Assignment getPortsAssignment_16_1() { return cPortsAssignment_16_1; }
		
		//Port
		public RuleCall getPortsPortParserRuleCall_16_1_0() { return cPortsPortParserRuleCall_16_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_17() { return cRightCurlyBracketKeyword_17; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_18() { return cRightCurlyBracketKeyword_18; }
	}
	public class FieldElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Field");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cDtypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cDtypeEStringParserRuleCall_2_0 = (RuleCall)cDtypeAssignment_2.eContents().get(0);
		private final Keyword cOrderKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cOrderAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOrderTOSHORTParserRuleCall_4_0 = (RuleCall)cOrderAssignment_4.eContents().get(0);
		
		//Field:
		//	name=ID ':' dtype=EString 'order' order=TOSHORT;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' dtype=EString 'order' order=TOSHORT
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//dtype=EString
		public Assignment getDtypeAssignment_2() { return cDtypeAssignment_2; }
		
		//EString
		public RuleCall getDtypeEStringParserRuleCall_2_0() { return cDtypeEStringParserRuleCall_2_0; }
		
		//'order'
		public Keyword getOrderKeyword_3() { return cOrderKeyword_3; }
		
		//order=TOSHORT
		public Assignment getOrderAssignment_4() { return cOrderAssignment_4; }
		
		//TOSHORT
		public RuleCall getOrderTOSHORTParserRuleCall_4_0() { return cOrderTOSHORTParserRuleCall_4_0; }
	}
	public class TOSHORTElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.TOSHORT");
		private final RuleCall cINTTerminalRuleCall = (RuleCall)rule.eContents().get(1);
		
		//TOSHORT ecore::EShort:
		//	INT;
		@Override public ParserRule getRule() { return rule; }
		
		//INT
		public RuleCall getINTTerminalRuleCall() { return cINTTerminalRuleCall; }
	}
	
	public class DeliveryGuaranteeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.DeliveryGuarantee");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cBEST_EFFORTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cBEST_EFFORTBEST_EFFORTKeyword_0_0 = (Keyword)cBEST_EFFORTEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cAT_LEAST_ONCEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cAT_LEAST_ONCEAT_LEAST_ONCEKeyword_1_0 = (Keyword)cAT_LEAST_ONCEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cAT_MOST_ONCEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cAT_MOST_ONCEAT_MOST_ONCEKeyword_2_0 = (Keyword)cAT_MOST_ONCEEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cEXACTLY_ONCEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cEXACTLY_ONCEEXACTLY_ONCEKeyword_3_0 = (Keyword)cEXACTLY_ONCEEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum DeliveryGuarantee:
		//	BEST_EFFORT | AT_LEAST_ONCE | AT_MOST_ONCE | EXACTLY_ONCE;
		public EnumRule getRule() { return rule; }
		
		//BEST_EFFORT | AT_LEAST_ONCE | AT_MOST_ONCE | EXACTLY_ONCE
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//BEST_EFFORT
		public EnumLiteralDeclaration getBEST_EFFORTEnumLiteralDeclaration_0() { return cBEST_EFFORTEnumLiteralDeclaration_0; }
		
		//'BEST_EFFORT'
		public Keyword getBEST_EFFORTBEST_EFFORTKeyword_0_0() { return cBEST_EFFORTBEST_EFFORTKeyword_0_0; }
		
		//AT_LEAST_ONCE
		public EnumLiteralDeclaration getAT_LEAST_ONCEEnumLiteralDeclaration_1() { return cAT_LEAST_ONCEEnumLiteralDeclaration_1; }
		
		//'AT_LEAST_ONCE'
		public Keyword getAT_LEAST_ONCEAT_LEAST_ONCEKeyword_1_0() { return cAT_LEAST_ONCEAT_LEAST_ONCEKeyword_1_0; }
		
		//AT_MOST_ONCE
		public EnumLiteralDeclaration getAT_MOST_ONCEEnumLiteralDeclaration_2() { return cAT_MOST_ONCEEnumLiteralDeclaration_2; }
		
		//'AT_MOST_ONCE'
		public Keyword getAT_MOST_ONCEAT_MOST_ONCEKeyword_2_0() { return cAT_MOST_ONCEAT_MOST_ONCEKeyword_2_0; }
		
		//EXACTLY_ONCE
		public EnumLiteralDeclaration getEXACTLY_ONCEEnumLiteralDeclaration_3() { return cEXACTLY_ONCEEnumLiteralDeclaration_3; }
		
		//'EXACTLY_ONCE'
		public Keyword getEXACTLY_ONCEEXACTLY_ONCEKeyword_3_0() { return cEXACTLY_ONCEEXACTLY_ONCEKeyword_3_0; }
	}
	public class SyncTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.SyncType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cASYNCEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cASYNCASYNCKeyword_0_0 = (Keyword)cASYNCEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSYNCEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSYNCSYNCKeyword_1_0 = (Keyword)cSYNCEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum SyncType:
		//	ASYNC | SYNC;
		public EnumRule getRule() { return rule; }
		
		//ASYNC | SYNC
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ASYNC
		public EnumLiteralDeclaration getASYNCEnumLiteralDeclaration_0() { return cASYNCEnumLiteralDeclaration_0; }
		
		//'ASYNC'
		public Keyword getASYNCASYNCKeyword_0_0() { return cASYNCASYNCKeyword_0_0; }
		
		//SYNC
		public EnumLiteralDeclaration getSYNCEnumLiteralDeclaration_1() { return cSYNCEnumLiteralDeclaration_1; }
		
		//'SYNC'
		public Keyword getSYNCSYNCKeyword_1_0() { return cSYNCSYNCKeyword_1_0; }
	}
	public class PortTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.PortType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cREQUIREDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cREQUIREDREQUIREDKeyword_0_0 = (Keyword)cREQUIREDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cPROVIDEDEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cPROVIDEDPROVIDEDKeyword_1_0 = (Keyword)cPROVIDEDEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum PortType:
		//	REQUIRED | PROVIDED;
		public EnumRule getRule() { return rule; }
		
		//REQUIRED | PROVIDED
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//REQUIRED
		public EnumLiteralDeclaration getREQUIREDEnumLiteralDeclaration_0() { return cREQUIREDEnumLiteralDeclaration_0; }
		
		//'REQUIRED'
		public Keyword getREQUIREDREQUIREDKeyword_0_0() { return cREQUIREDREQUIREDKeyword_0_0; }
		
		//PROVIDED
		public EnumLiteralDeclaration getPROVIDEDEnumLiteralDeclaration_1() { return cPROVIDEDEnumLiteralDeclaration_1; }
		
		//'PROVIDED'
		public Keyword getPROVIDEDPROVIDEDKeyword_1_0() { return cPROVIDEDPROVIDEDKeyword_1_0; }
	}
	public class RoleTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.RoleType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cOUTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cOUTOUTKeyword_0_0 = (Keyword)cOUTEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cINEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cININKeyword_1_0 = (Keyword)cINEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum RoleType:
		//	OUT | IN;
		public EnumRule getRule() { return rule; }
		
		//OUT | IN
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//OUT
		public EnumLiteralDeclaration getOUTEnumLiteralDeclaration_0() { return cOUTEnumLiteralDeclaration_0; }
		
		//'OUT'
		public Keyword getOUTOUTKeyword_0_0() { return cOUTOUTKeyword_0_0; }
		
		//IN
		public EnumLiteralDeclaration getINEnumLiteralDeclaration_1() { return cINEnumLiteralDeclaration_1; }
		
		//'IN'
		public Keyword getININKeyword_1_0() { return cININKeyword_1_0; }
	}
	public class NotificationModelElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.NotificationModel");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cPOLLEDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cPOLLEDPOLLEDKeyword_0_0 = (Keyword)cPOLLEDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cPUBSUBEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cPUBSUBPUBSUBKeyword_1_0 = (Keyword)cPUBSUBEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cQUEUEDEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cQUEUEDQUEUEDKeyword_2_0 = (Keyword)cQUEUEDEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cCENTRALEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cCENTRALCENTRALKeyword_3_0 = (Keyword)cCENTRALEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum NotificationModel:
		//	POLLED | PUBSUB | QUEUED | CENTRAL;
		public EnumRule getRule() { return rule; }
		
		//POLLED | PUBSUB | QUEUED | CENTRAL
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//POLLED
		public EnumLiteralDeclaration getPOLLEDEnumLiteralDeclaration_0() { return cPOLLEDEnumLiteralDeclaration_0; }
		
		//'POLLED'
		public Keyword getPOLLEDPOLLEDKeyword_0_0() { return cPOLLEDPOLLEDKeyword_0_0; }
		
		//PUBSUB
		public EnumLiteralDeclaration getPUBSUBEnumLiteralDeclaration_1() { return cPUBSUBEnumLiteralDeclaration_1; }
		
		//'PUBSUB'
		public Keyword getPUBSUBPUBSUBKeyword_1_0() { return cPUBSUBPUBSUBKeyword_1_0; }
		
		//QUEUED
		public EnumLiteralDeclaration getQUEUEDEnumLiteralDeclaration_2() { return cQUEUEDEnumLiteralDeclaration_2; }
		
		//'QUEUED'
		public Keyword getQUEUEDQUEUEDKeyword_2_0() { return cQUEUEDQUEUEDKeyword_2_0; }
		
		//CENTRAL
		public EnumLiteralDeclaration getCENTRALEnumLiteralDeclaration_3() { return cCENTRALEnumLiteralDeclaration_3; }
		
		//'CENTRAL'
		public Keyword getCENTRALCENTRALKeyword_3_0() { return cCENTRALCENTRALKeyword_3_0; }
	}
	public class BufferingElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Buffering");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cBUFFEREDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cBUFFEREDBUFFEREDKeyword_0_0 = (Keyword)cBUFFEREDEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cUNBUFFEREDEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cUNBUFFEREDUNBUFFEREDKeyword_1_0 = (Keyword)cUNBUFFEREDEnumLiteralDeclaration_1.eContents().get(0);
		
		//enum Buffering:
		//	BUFFERED | UNBUFFERED;
		public EnumRule getRule() { return rule; }
		
		//BUFFERED | UNBUFFERED
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//BUFFERED
		public EnumLiteralDeclaration getBUFFEREDEnumLiteralDeclaration_0() { return cBUFFEREDEnumLiteralDeclaration_0; }
		
		//'BUFFERED'
		public Keyword getBUFFEREDBUFFEREDKeyword_0_0() { return cBUFFEREDBUFFEREDKeyword_0_0; }
		
		//UNBUFFERED
		public EnumLiteralDeclaration getUNBUFFEREDEnumLiteralDeclaration_1() { return cUNBUFFEREDEnumLiteralDeclaration_1; }
		
		//'UNBUFFERED'
		public Keyword getUNBUFFEREDUNBUFFEREDKeyword_1_0() { return cUNBUFFEREDUNBUFFEREDKeyword_1_0; }
	}
	public class ThroughputElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.Throughput");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cATOMICEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cATOMICATOMICKeyword_0_0 = (Keyword)cATOMICEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cHIGH_ORDEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cHIGH_ORDERHIGH_ORDERKeyword_1_0 = (Keyword)cHIGH_ORDEREnumLiteralDeclaration_1.eContents().get(0);
		
		//enum Throughput:
		//	ATOMIC | HIGH_ORDER;
		public EnumRule getRule() { return rule; }
		
		//ATOMIC | HIGH_ORDER
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ATOMIC
		public EnumLiteralDeclaration getATOMICEnumLiteralDeclaration_0() { return cATOMICEnumLiteralDeclaration_0; }
		
		//'ATOMIC'
		public Keyword getATOMICATOMICKeyword_0_0() { return cATOMICATOMICKeyword_0_0; }
		
		//HIGH_ORDER
		public EnumLiteralDeclaration getHIGH_ORDEREnumLiteralDeclaration_1() { return cHIGH_ORDEREnumLiteralDeclaration_1; }
		
		//'HIGH_ORDER'
		public Keyword getHIGH_ORDERHIGH_ORDERKeyword_1_0() { return cHIGH_ORDERHIGH_ORDERKeyword_1_0; }
	}
	public class ProcessingModelElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.ProcessingModel");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cSTREAMEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cSTREAMSTREAMKeyword_0_0 = (Keyword)cSTREAMEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cBATCHEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cBATCHBATCHKeyword_1_0 = (Keyword)cBATCHEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cMICROBATCHEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cMICROBATCHMICROBATCHKeyword_2_0 = (Keyword)cMICROBATCHEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum ProcessingModel:
		//	STREAM | BATCH | MICROBATCH;
		public EnumRule getRule() { return rule; }
		
		//STREAM | BATCH | MICROBATCH
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//STREAM
		public EnumLiteralDeclaration getSTREAMEnumLiteralDeclaration_0() { return cSTREAMEnumLiteralDeclaration_0; }
		
		//'STREAM'
		public Keyword getSTREAMSTREAMKeyword_0_0() { return cSTREAMSTREAMKeyword_0_0; }
		
		//BATCH
		public EnumLiteralDeclaration getBATCHEnumLiteralDeclaration_1() { return cBATCHEnumLiteralDeclaration_1; }
		
		//'BATCH'
		public Keyword getBATCHBATCHKeyword_1_0() { return cBATCHBATCHKeyword_1_0; }
		
		//MICROBATCH
		public EnumLiteralDeclaration getMICROBATCHEnumLiteralDeclaration_2() { return cMICROBATCHEnumLiteralDeclaration_2; }
		
		//'MICROBATCH'
		public Keyword getMICROBATCHMICROBATCHKeyword_2_0() { return cMICROBATCHMICROBATCHKeyword_2_0; }
	}
	public class AccessTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_fv.Afvl.AccessType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cHTTPEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cHTTPHTTPKeyword_0_0 = (Keyword)cHTTPEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cDATABASEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cDATABASEDATABASEKeyword_1_0 = (Keyword)cDATABASEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cFILESYSTEMEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cFILESYSTEMFILESYSTEMKeyword_2_0 = (Keyword)cFILESYSTEMEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cHDFSEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cHDFSHDFSKeyword_3_0 = (Keyword)cHDFSEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum AccessType:
		//	HTTP | DATABASE | FILESYSTEM | HDFS;
		public EnumRule getRule() { return rule; }
		
		//HTTP | DATABASE | FILESYSTEM | HDFS
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//HTTP
		public EnumLiteralDeclaration getHTTPEnumLiteralDeclaration_0() { return cHTTPEnumLiteralDeclaration_0; }
		
		//'HTTP'
		public Keyword getHTTPHTTPKeyword_0_0() { return cHTTPHTTPKeyword_0_0; }
		
		//DATABASE
		public EnumLiteralDeclaration getDATABASEEnumLiteralDeclaration_1() { return cDATABASEEnumLiteralDeclaration_1; }
		
		//'DATABASE'
		public Keyword getDATABASEDATABASEKeyword_1_0() { return cDATABASEDATABASEKeyword_1_0; }
		
		//FILESYSTEM
		public EnumLiteralDeclaration getFILESYSTEMEnumLiteralDeclaration_2() { return cFILESYSTEMEnumLiteralDeclaration_2; }
		
		//'FILESYSTEM'
		public Keyword getFILESYSTEMFILESYSTEMKeyword_2_0() { return cFILESYSTEMFILESYSTEMKeyword_2_0; }
		
		//HDFS
		public EnumLiteralDeclaration getHDFSEnumLiteralDeclaration_3() { return cHDFSEnumLiteralDeclaration_3; }
		
		//'HDFS'
		public Keyword getHDFSHDFSKeyword_3_0() { return cHDFSHDFSKeyword_3_0; }
	}
	
	private final FunctionalViewElements pFunctionalView;
	private final ConnectorElements pConnector;
	private final ComponentElements pComponent;
	private final EStringElements pEString;
	private final EIntElements pEInt;
	private final PortElements pPort;
	private final RoleElements pRole;
	private final DeliveryGuaranteeElements eDeliveryGuarantee;
	private final SyncTypeElements eSyncType;
	private final PortTypeElements ePortType;
	private final RoleTypeElements eRoleType;
	private final NotificationModelElements eNotificationModel;
	private final BufferingElements eBuffering;
	private final ThroughputElements eThroughput;
	private final StreamElements pStream;
	private final AdaptorElements pAdaptor;
	private final DistributorElements pDistributor;
	private final EventElements pEvent;
	private final ProcedureCallElements pProcedureCall;
	private final ProcessingModelElements eProcessingModel;
	private final AccessTypeElements eAccessType;
	private final TransformerElements pTransformer;
	private final EstimatorElements pEstimator;
	private final IngestorElements pIngestor;
	private final SinkElements pSink;
	private final FieldElements pField;
	private final TOSHORTElements pTOSHORT;
	
	private final Grammar grammar;
	
	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public AfvlGrammarAccess(GrammarProvider grammarProvider,
			TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
		this.pFunctionalView = new FunctionalViewElements();
		this.pConnector = new ConnectorElements();
		this.pComponent = new ComponentElements();
		this.pEString = new EStringElements();
		this.pEInt = new EIntElements();
		this.pPort = new PortElements();
		this.pRole = new RoleElements();
		this.eDeliveryGuarantee = new DeliveryGuaranteeElements();
		this.eSyncType = new SyncTypeElements();
		this.ePortType = new PortTypeElements();
		this.eRoleType = new RoleTypeElements();
		this.eNotificationModel = new NotificationModelElements();
		this.eBuffering = new BufferingElements();
		this.eThroughput = new ThroughputElements();
		this.pStream = new StreamElements();
		this.pAdaptor = new AdaptorElements();
		this.pDistributor = new DistributorElements();
		this.pEvent = new EventElements();
		this.pProcedureCall = new ProcedureCallElements();
		this.eProcessingModel = new ProcessingModelElements();
		this.eAccessType = new AccessTypeElements();
		this.pTransformer = new TransformerElements();
		this.pEstimator = new EstimatorElements();
		this.pIngestor = new IngestorElements();
		this.pSink = new SinkElements();
		this.pField = new FieldElements();
		this.pTOSHORT = new TOSHORTElements();
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("co.edu.uniandes.accordant_fv.Afvl".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	
	
	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//FunctionalView:
	//	'FunctionalView'
	//	name=ID
	//	'use' 'project' project=[rq::Project]
	//	'{'
	//	'Components' '{' comps+=Component ("," comps+=Component)* '}'
	//	'Connectors' '{' conns+=Connector ("," conns+=Connector)* '}'
	//	'}';
	public FunctionalViewElements getFunctionalViewAccess() {
		return pFunctionalView;
	}
	
	public ParserRule getFunctionalViewRule() {
		return getFunctionalViewAccess().getRule();
	}
	
	//Connector:
	//	Stream | Adaptor | Distributor | Event | ProcedureCall;
	public ConnectorElements getConnectorAccess() {
		return pConnector;
	}
	
	public ParserRule getConnectorRule() {
		return getConnectorAccess().getRule();
	}
	
	//Component:
	//	Transformer | Estimator | Ingestor | Sink;
	public ComponentElements getComponentAccess() {
		return pComponent;
	}
	
	public ParserRule getComponentRule() {
		return getComponentAccess().getRule();
	}
	
	//EString:
	//	STRING | ID;
	public EStringElements getEStringAccess() {
		return pEString;
	}
	
	public ParserRule getEStringRule() {
		return getEStringAccess().getRule();
	}
	
	//EInt ecore::EInt:
	//	'-'? INT;
	public EIntElements getEIntAccess() {
		return pEInt;
	}
	
	public ParserRule getEIntRule() {
		return getEIntAccess().getRule();
	}
	
	//Port:
	//	{Port}
	//	'Port' name=ID ':' type=PortType? ('fields' ':' '{' fields+=Field ("," fields+=Field)* '}')?;
	public PortElements getPortAccess() {
		return pPort;
	}
	
	public ParserRule getPortRule() {
		return getPortAccess().getRule();
	}
	
	//Role:
	//	{Role}
	//	'Role' name=ID ':' type=RoleType? '->' port=[Port]?;
	public RoleElements getRoleAccess() {
		return pRole;
	}
	
	public ParserRule getRoleRule() {
		return getRoleAccess().getRule();
	}
	
	//enum DeliveryGuarantee:
	//	BEST_EFFORT | AT_LEAST_ONCE | AT_MOST_ONCE | EXACTLY_ONCE;
	public DeliveryGuaranteeElements getDeliveryGuaranteeAccess() {
		return eDeliveryGuarantee;
	}
	
	public EnumRule getDeliveryGuaranteeRule() {
		return getDeliveryGuaranteeAccess().getRule();
	}
	
	//enum SyncType:
	//	ASYNC | SYNC;
	public SyncTypeElements getSyncTypeAccess() {
		return eSyncType;
	}
	
	public EnumRule getSyncTypeRule() {
		return getSyncTypeAccess().getRule();
	}
	
	//enum PortType:
	//	REQUIRED | PROVIDED;
	public PortTypeElements getPortTypeAccess() {
		return ePortType;
	}
	
	public EnumRule getPortTypeRule() {
		return getPortTypeAccess().getRule();
	}
	
	//enum RoleType:
	//	OUT | IN;
	public RoleTypeElements getRoleTypeAccess() {
		return eRoleType;
	}
	
	public EnumRule getRoleTypeRule() {
		return getRoleTypeAccess().getRule();
	}
	
	//enum NotificationModel:
	//	POLLED | PUBSUB | QUEUED | CENTRAL;
	public NotificationModelElements getNotificationModelAccess() {
		return eNotificationModel;
	}
	
	public EnumRule getNotificationModelRule() {
		return getNotificationModelAccess().getRule();
	}
	
	//enum Buffering:
	//	BUFFERED | UNBUFFERED;
	public BufferingElements getBufferingAccess() {
		return eBuffering;
	}
	
	public EnumRule getBufferingRule() {
		return getBufferingAccess().getRule();
	}
	
	//enum Throughput:
	//	ATOMIC | HIGH_ORDER;
	public ThroughputElements getThroughputAccess() {
		return eThroughput;
	}
	
	public EnumRule getThroughputRule() {
		return getThroughputAccess().getRule();
	}
	
	////ConnProps returns DeliveryModel | SyncType | NotificationModel
	//Stream:
	//	'Stream'
	//	name=ID
	//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
	//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
	//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
	//	'}';
	public StreamElements getStreamAccess() {
		return pStream;
	}
	
	public ParserRule getStreamRule() {
		return getStreamAccess().getRule();
	}
	
	//Adaptor:
	//	'Adaptor'
	//	name=ID
	//	'{' ('delivery' ':' delivery=DeliveryGuarantee?) ('sync' ':' synct=SyncType)? ('notification' ':'
	//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
	//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'roles' '{' roles+=Role ("," roles+=Role)* '}'
	//	'}';
	public AdaptorElements getAdaptorAccess() {
		return pAdaptor;
	}
	
	public ParserRule getAdaptorRule() {
		return getAdaptorAccess().getRule();
	}
	
	//Distributor:
	//	'Distributor'
	//	name=ID
	//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
	//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
	//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'roles' '{' roles+=Role ("," roles+=Role)* '}'
	//	'}';
	public DistributorElements getDistributorAccess() {
		return pDistributor;
	}
	
	public ParserRule getDistributorRule() {
		return getDistributorAccess().getRule();
	}
	
	//Event:
	//	'Event'
	//	name=ID
	//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
	//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
	//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
	//	'}';
	public EventElements getEventAccess() {
		return pEvent;
	}
	
	public ParserRule getEventRule() {
		return getEventAccess().getRule();
	}
	
	//ProcedureCall:
	//	'ProcCall'
	//	name=ID
	//	'{' ('delivery' ':' delivery=DeliveryGuarantee)? ('sync' ':' synct=SyncType)? ('notification' ':'
	//	notification=NotificationModel)? ('buffering' ':' buffering=Buffering)? ('throughput' ':' throughput=Throughput)?
	//	('props' ':' props=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'roles' ':' '{' roles+=Role ("," roles+=Role)* '}'
	//	'}';
	public ProcedureCallElements getProcedureCallAccess() {
		return pProcedureCall;
	}
	
	public ParserRule getProcedureCallRule() {
		return getProcedureCallAccess().getRule();
	}
	
	//enum ProcessingModel:
	//	STREAM | BATCH | MICROBATCH;
	public ProcessingModelElements getProcessingModelAccess() {
		return eProcessingModel;
	}
	
	public EnumRule getProcessingModelRule() {
		return getProcessingModelAccess().getRule();
	}
	
	//enum AccessType:
	//	HTTP | DATABASE | FILESYSTEM | HDFS;
	public AccessTypeElements getAccessTypeAccess() {
		return eAccessType;
	}
	
	public EnumRule getAccessTypeRule() {
		return getAccessTypeAccess().getRule();
	}
	
	//Transformer:
	//	'Transformer'
	//	name=ID
	//	'{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)? ('pmml' ':'
	//	pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
	//	'}';
	public TransformerElements getTransformerAccess() {
		return pTransformer;
	}
	
	public ParserRule getTransformerRule() {
		return getTransformerAccess().getRule();
	}
	
	//Estimator:
	//	'Estimator'
	//	name=ID
	//	'{' ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)? ('pmml' ':'
	//	pmml=EString)? ('decision' ':' decision=[rq::ArchDecision])?
	//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
	//	'}';
	public EstimatorElements getEstimatorAccess() {
		return pEstimator;
	}
	
	public ParserRule getEstimatorRule() {
		return getEstimatorAccess().getRule();
	}
	
	//Ingestor:
	//	'Ingestor'
	//	name=ID
	//	'{'
	//	'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
	//	('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)? ('decision' ':'
	//	decision=[rq::ArchDecision])?
	//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
	//	'}';
	public IngestorElements getIngestorAccess() {
		return pIngestor;
	}
	
	public ParserRule getIngestorRule() {
		return getIngestorAccess().getRule();
	}
	
	//Sink:
	//	'Sink'
	//	name=ID
	//	'{'
	//	'type' ':' type=AccessType ('procModel' ':' procModel=ProcessingModel)? ('delivery' ':' delivery=DeliveryGuarantee)?
	//	('conn' ':' conn=EString)? ('format' ':' format=EString)? ('props' ':' props=EString)? ('decision' ':'
	//	decision=[rq::ArchDecision])?
	//	'ports' ':' '{' ports+=Port ("," ports+=Port)* '}'
	//	'}';
	public SinkElements getSinkAccess() {
		return pSink;
	}
	
	public ParserRule getSinkRule() {
		return getSinkAccess().getRule();
	}
	
	//Field:
	//	name=ID ':' dtype=EString 'order' order=TOSHORT;
	public FieldElements getFieldAccess() {
		return pField;
	}
	
	public ParserRule getFieldRule() {
		return getFieldAccess().getRule();
	}
	
	//TOSHORT ecore::EShort:
	//	INT;
	public TOSHORTElements getTOSHORTAccess() {
		return pTOSHORT;
	}
	
	public ParserRule getTOSHORTRule() {
		return getTOSHORTAccess().getRule();
	}
	
	//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();
	}
}
