/*
* generated by Xtext
*/

package org.applause.lang.services;

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

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

import org.eclipse.xtext.common.services.TerminalsGrammarAccess;

@Singleton
public class ApplauseDslGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class ModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Model");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cApplicationAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cApplicationApplicationParserRuleCall_0_0 = (RuleCall)cApplicationAssignment_0.eContents().get(0);
		private final Assignment cElementsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cElementsModelElementParserRuleCall_1_0 = (RuleCall)cElementsAssignment_1.eContents().get(0);
		
		//Model:
		//	application=Application elements+=ModelElement*;
		public ParserRule getRule() { return rule; }

		//application=Application elements+=ModelElement*
		public Group getGroup() { return cGroup; }

		//application=Application
		public Assignment getApplicationAssignment_0() { return cApplicationAssignment_0; }

		//Application
		public RuleCall getApplicationApplicationParserRuleCall_0_0() { return cApplicationApplicationParserRuleCall_0_0; }

		//elements+=ModelElement*
		public Assignment getElementsAssignment_1() { return cElementsAssignment_1; }

		//ModelElement
		public RuleCall getElementsModelElementParserRuleCall_1_0() { return cElementsModelElementParserRuleCall_1_0; }
	}

	public class ApplicationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Application");
		private final RuleCall cTabBarApplicationParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//Application:
		//	TabBarApplication;
		public ParserRule getRule() { return rule; }

		//TabBarApplication
		public RuleCall getTabBarApplicationParserRuleCall() { return cTabBarApplicationParserRuleCall; }
	}

	public class ModelElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ModelElement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cContentProviderParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cViewParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cConstantParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//ModelElement:
		//	Type | ContentProvider | View | Constant;
		public ParserRule getRule() { return rule; }

		//Type | ContentProvider | View | Constant
		public Alternatives getAlternatives() { return cAlternatives; }

		//Type
		public RuleCall getTypeParserRuleCall_0() { return cTypeParserRuleCall_0; }

		//ContentProvider
		public RuleCall getContentProviderParserRuleCall_1() { return cContentProviderParserRuleCall_1; }

		//View
		public RuleCall getViewParserRuleCall_2() { return cViewParserRuleCall_2; }

		//Constant
		public RuleCall getConstantParserRuleCall_3() { return cConstantParserRuleCall_3; }
	}

	public class VariableDeclarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "VariableDeclaration");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cParameterParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cPropertyParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cCollectionIteratorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//// -------------------------------------------
		//// General
		//// common supertype to allow variableReferences
		//VariableDeclaration:
		//	Parameter | Property | CollectionIterator;
		public ParserRule getRule() { return rule; }

		//Parameter | Property | CollectionIterator
		public Alternatives getAlternatives() { return cAlternatives; }

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

		//Property
		public RuleCall getPropertyParserRuleCall_1() { return cPropertyParserRuleCall_1; }

		//CollectionIterator
		public RuleCall getCollectionIteratorParserRuleCall_2() { return cCollectionIteratorParserRuleCall_2; }
	}

	public class TypeDescriptionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TypeDescription");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cTypeTypeCrossReference_0_0 = (CrossReference)cTypeAssignment_0.eContents().get(0);
		private final RuleCall cTypeTypeIDTerminalRuleCall_0_0_1 = (RuleCall)cTypeTypeCrossReference_0_0.eContents().get(1);
		private final Assignment cManyAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_1_0 = (Keyword)cManyAssignment_1.eContents().get(0);
		
		//TypeDescription:
		//	type=[Type] many?="[]"?;
		public ParserRule getRule() { return rule; }

		//type=[Type] many?="[]"?
		public Group getGroup() { return cGroup; }

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

		//[Type]
		public CrossReference getTypeTypeCrossReference_0_0() { return cTypeTypeCrossReference_0_0; }

		//ID
		public RuleCall getTypeTypeIDTerminalRuleCall_0_0_1() { return cTypeTypeIDTerminalRuleCall_0_0_1; }

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

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

	public class ParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Parameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDescriptionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cDescriptionTypeDescriptionParserRuleCall_0_0 = (RuleCall)cDescriptionAssignment_0.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		
		//Parameter:
		//	description=TypeDescription name=ID;
		public ParserRule getRule() { return rule; }

		//description=TypeDescription name=ID
		public Group getGroup() { return cGroup; }

		//description=TypeDescription
		public Assignment getDescriptionAssignment_0() { return cDescriptionAssignment_0; }

		//TypeDescription
		public RuleCall getDescriptionTypeDescriptionParserRuleCall_0_0() { return cDescriptionTypeDescriptionParserRuleCall_0_0; }

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

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

	public class ObjectReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ObjectReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cObjectAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cObjectVariableDeclarationCrossReference_0_0 = (CrossReference)cObjectAssignment_0.eContents().get(0);
		private final RuleCall cObjectVariableDeclarationIDTerminalRuleCall_0_0_1 = (RuleCall)cObjectVariableDeclarationCrossReference_0_0.eContents().get(1);
		private final Assignment cTailAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cTailNestedObjectReferenceParserRuleCall_1_0 = (RuleCall)cTailAssignment_1.eContents().get(0);
		
		//ObjectReference:
		//	object=[VariableDeclaration] tail=NestedObjectReference?;
		public ParserRule getRule() { return rule; }

		//object=[VariableDeclaration] tail=NestedObjectReference?
		public Group getGroup() { return cGroup; }

		//object=[VariableDeclaration]
		public Assignment getObjectAssignment_0() { return cObjectAssignment_0; }

		//[VariableDeclaration]
		public CrossReference getObjectVariableDeclarationCrossReference_0_0() { return cObjectVariableDeclarationCrossReference_0_0; }

		//ID
		public RuleCall getObjectVariableDeclarationIDTerminalRuleCall_0_0_1() { return cObjectVariableDeclarationIDTerminalRuleCall_0_0_1; }

		//tail=NestedObjectReference?
		public Assignment getTailAssignment_1() { return cTailAssignment_1; }

		//NestedObjectReference
		public RuleCall getTailNestedObjectReferenceParserRuleCall_1_0() { return cTailNestedObjectReferenceParserRuleCall_1_0; }
	}

	public class NestedObjectReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NestedObjectReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFullStopKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cObjectAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cObjectVariableDeclarationCrossReference_1_0 = (CrossReference)cObjectAssignment_1.eContents().get(0);
		private final RuleCall cObjectVariableDeclarationIDTerminalRuleCall_1_0_1 = (RuleCall)cObjectVariableDeclarationCrossReference_1_0.eContents().get(1);
		private final Assignment cTailAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cTailNestedObjectReferenceParserRuleCall_2_0 = (RuleCall)cTailAssignment_2.eContents().get(0);
		
		////workaround: NestedObjectReference as separate rule to guide the content 
		////   assist parser technically could have been include in ObjectReference like
		////   ObjectReference:
		////     object=[VariableDeclaration] ('.' tail=ObjectReference)?;
		//NestedObjectReference returns ObjectReference:
		//	"." object=[VariableDeclaration] tail=NestedObjectReference?;
		public ParserRule getRule() { return rule; }

		//"." object=[VariableDeclaration] tail=NestedObjectReference?
		public Group getGroup() { return cGroup; }

		//"."
		public Keyword getFullStopKeyword_0() { return cFullStopKeyword_0; }

		//object=[VariableDeclaration]
		public Assignment getObjectAssignment_1() { return cObjectAssignment_1; }

		//[VariableDeclaration]
		public CrossReference getObjectVariableDeclarationCrossReference_1_0() { return cObjectVariableDeclarationCrossReference_1_0; }

		//ID
		public RuleCall getObjectVariableDeclarationIDTerminalRuleCall_1_0_1() { return cObjectVariableDeclarationIDTerminalRuleCall_1_0_1; }

		//tail=NestedObjectReference?
		public Assignment getTailAssignment_2() { return cTailAssignment_2; }

		//NestedObjectReference
		public RuleCall getTailNestedObjectReferenceParserRuleCall_2_0() { return cTailNestedObjectReferenceParserRuleCall_2_0; }
	}

	public class ExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cStringLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cStringFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cCollectionLiteralParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cCollectionFunctionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cObjectReferenceParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		
		//Expression:
		//	StringLiteral | StringFunction | CollectionLiteral | CollectionFunction | ObjectReference;
		public ParserRule getRule() { return rule; }

		//StringLiteral | StringFunction | CollectionLiteral | CollectionFunction | ObjectReference
		public Alternatives getAlternatives() { return cAlternatives; }

		//StringLiteral
		public RuleCall getStringLiteralParserRuleCall_0() { return cStringLiteralParserRuleCall_0; }

		//StringFunction
		public RuleCall getStringFunctionParserRuleCall_1() { return cStringFunctionParserRuleCall_1; }

		//CollectionLiteral
		public RuleCall getCollectionLiteralParserRuleCall_2() { return cCollectionLiteralParserRuleCall_2; }

		//CollectionFunction
		public RuleCall getCollectionFunctionParserRuleCall_3() { return cCollectionFunctionParserRuleCall_3; }

		//ObjectReference
		public RuleCall getObjectReferenceParserRuleCall_4() { return cObjectReferenceParserRuleCall_4; }
	}

	public class ScalarExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ScalarExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cStringLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cStringFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cObjectReferenceParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//ScalarExpression:
		//	StringLiteral | StringFunction | ObjectReference;
		public ParserRule getRule() { return rule; }

		//StringLiteral | StringFunction | ObjectReference
		public Alternatives getAlternatives() { return cAlternatives; }

		//StringLiteral
		public RuleCall getStringLiteralParserRuleCall_0() { return cStringLiteralParserRuleCall_0; }

		//StringFunction
		public RuleCall getStringFunctionParserRuleCall_1() { return cStringFunctionParserRuleCall_1; }

		//ObjectReference
		public RuleCall getObjectReferenceParserRuleCall_2() { return cObjectReferenceParserRuleCall_2; }
	}

	public class CollectionExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cCollectionLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cCollectionFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cObjectReferenceParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//CollectionExpression:
		//	CollectionLiteral | CollectionFunction | ObjectReference;
		public ParserRule getRule() { return rule; }

		//CollectionLiteral | CollectionFunction | ObjectReference
		public Alternatives getAlternatives() { return cAlternatives; }

		//CollectionLiteral
		public RuleCall getCollectionLiteralParserRuleCall_0() { return cCollectionLiteralParserRuleCall_0; }

		//CollectionFunction
		public RuleCall getCollectionFunctionParserRuleCall_1() { return cCollectionFunctionParserRuleCall_1; }

		//ObjectReference
		public RuleCall getObjectReferenceParserRuleCall_2() { return cObjectReferenceParserRuleCall_2; }
	}

	public class StringLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringLiteral");
		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cValueSTRINGTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
		
		//StringLiteral:
		//	value=STRING;
		public ParserRule getRule() { return rule; }

		//value=STRING
		public Assignment getValueAssignment() { return cValueAssignment; }

		//STRING
		public RuleCall getValueSTRINGTerminalRuleCall_0() { return cValueSTRINGTerminalRuleCall_0; }
	}

	public class StringFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringFunction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cStringConcatAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cValuesAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cValuesScalarExpressionParserRuleCall_0_2_0 = (RuleCall)cValuesAssignment_0_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Action cStringReplaceAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Keyword cReplaceKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cValueAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cValueScalarExpressionParserRuleCall_1_2_0 = (RuleCall)cValueAssignment_1_2.eContents().get(0);
		private final Keyword cCommaKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		private final Assignment cMatchAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
		private final RuleCall cMatchScalarExpressionParserRuleCall_1_4_0 = (RuleCall)cMatchAssignment_1_4.eContents().get(0);
		private final Keyword cCommaKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5);
		private final Assignment cReplacementAssignment_1_6 = (Assignment)cGroup_1.eContents().get(6);
		private final RuleCall cReplacementScalarExpressionParserRuleCall_1_6_0 = (RuleCall)cReplacementAssignment_1_6.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_7 = (Keyword)cGroup_1.eContents().get(7);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Action cStringUrlConformAction_2_0 = (Action)cGroup_2.eContents().get(0);
		private final Keyword cUrlconformKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cValueAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final RuleCall cValueScalarExpressionParserRuleCall_2_2_0 = (RuleCall)cValueAssignment_2_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//StringFunction:
		//	{StringConcat} "(" values+=ScalarExpression+ ")" | {StringReplace} "replace(" value=ScalarExpression ","
		//	match=ScalarExpression "," replacement=ScalarExpression ")" | {StringUrlConform} "urlconform(" value=ScalarExpression
		//	")";
		public ParserRule getRule() { return rule; }

		//{StringConcat} "(" values+=ScalarExpression+ ")" | {StringReplace} "replace(" value=ScalarExpression ","
		//match=ScalarExpression "," replacement=ScalarExpression ")" | {StringUrlConform} "urlconform(" value=ScalarExpression
		//")"
		public Alternatives getAlternatives() { return cAlternatives; }

		//{StringConcat} "(" values+=ScalarExpression+ ")"
		public Group getGroup_0() { return cGroup_0; }

		//{StringConcat}
		public Action getStringConcatAction_0_0() { return cStringConcatAction_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_0_1() { return cLeftParenthesisKeyword_0_1; }

		//values+=ScalarExpression+
		public Assignment getValuesAssignment_0_2() { return cValuesAssignment_0_2; }

		//ScalarExpression
		public RuleCall getValuesScalarExpressionParserRuleCall_0_2_0() { return cValuesScalarExpressionParserRuleCall_0_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_0_3() { return cRightParenthesisKeyword_0_3; }

		//{StringReplace} "replace(" value=ScalarExpression "," match=ScalarExpression "," replacement=ScalarExpression ")"
		public Group getGroup_1() { return cGroup_1; }

		//{StringReplace}
		public Action getStringReplaceAction_1_0() { return cStringReplaceAction_1_0; }

		//"replace("
		public Keyword getReplaceKeyword_1_1() { return cReplaceKeyword_1_1; }

		//value=ScalarExpression
		public Assignment getValueAssignment_1_2() { return cValueAssignment_1_2; }

		//ScalarExpression
		public RuleCall getValueScalarExpressionParserRuleCall_1_2_0() { return cValueScalarExpressionParserRuleCall_1_2_0; }

		//","
		public Keyword getCommaKeyword_1_3() { return cCommaKeyword_1_3; }

		//match=ScalarExpression
		public Assignment getMatchAssignment_1_4() { return cMatchAssignment_1_4; }

		//ScalarExpression
		public RuleCall getMatchScalarExpressionParserRuleCall_1_4_0() { return cMatchScalarExpressionParserRuleCall_1_4_0; }

		//","
		public Keyword getCommaKeyword_1_5() { return cCommaKeyword_1_5; }

		//replacement=ScalarExpression
		public Assignment getReplacementAssignment_1_6() { return cReplacementAssignment_1_6; }

		//ScalarExpression
		public RuleCall getReplacementScalarExpressionParserRuleCall_1_6_0() { return cReplacementScalarExpressionParserRuleCall_1_6_0; }

		//")"
		public Keyword getRightParenthesisKeyword_1_7() { return cRightParenthesisKeyword_1_7; }

		//{StringUrlConform} "urlconform(" value=ScalarExpression ")"
		public Group getGroup_2() { return cGroup_2; }

		//{StringUrlConform}
		public Action getStringUrlConformAction_2_0() { return cStringUrlConformAction_2_0; }

		//"urlconform("
		public Keyword getUrlconformKeyword_2_1() { return cUrlconformKeyword_2_1; }

		//value=ScalarExpression
		public Assignment getValueAssignment_2_2() { return cValueAssignment_2_2; }

		//ScalarExpression
		public RuleCall getValueScalarExpressionParserRuleCall_2_2_0() { return cValueScalarExpressionParserRuleCall_2_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}

	public class CollectionLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cLeftSquareBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cItemsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cItemsScalarExpressionParserRuleCall_1_0 = (RuleCall)cItemsAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cCommaKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cItemsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cItemsScalarExpressionParserRuleCall_2_1_0 = (RuleCall)cItemsAssignment_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//CollectionLiteral:
		//	"[" items+=ScalarExpression ("," items+=ScalarExpression)* "]";
		public ParserRule getRule() { return rule; }

		//"[" items+=ScalarExpression ("," items+=ScalarExpression)* "]"
		public Group getGroup() { return cGroup; }

		//"["
		public Keyword getLeftSquareBracketKeyword_0() { return cLeftSquareBracketKeyword_0; }

		//items+=ScalarExpression
		public Assignment getItemsAssignment_1() { return cItemsAssignment_1; }

		//ScalarExpression
		public RuleCall getItemsScalarExpressionParserRuleCall_1_0() { return cItemsScalarExpressionParserRuleCall_1_0; }

		//("," items+=ScalarExpression)*
		public Group getGroup_2() { return cGroup_2; }

		//","
		public Keyword getCommaKeyword_2_0() { return cCommaKeyword_2_0; }

		//items+=ScalarExpression
		public Assignment getItemsAssignment_2_1() { return cItemsAssignment_2_1; }

		//ScalarExpression
		public RuleCall getItemsScalarExpressionParserRuleCall_2_1_0() { return cItemsScalarExpressionParserRuleCall_2_1_0; }

		//"]"
		public Keyword getRightSquareBracketKeyword_3() { return cRightSquareBracketKeyword_3; }
	}

	public class CollectionFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionFunction");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cStringSplitAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cSplitKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cValueScalarExpressionParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
		private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cDelimiterAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cDelimiterScalarExpressionParserRuleCall_4_0 = (RuleCall)cDelimiterAssignment_4.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//CollectionFunction:
		//	{StringSplit} "split(" value=ScalarExpression "," delimiter=ScalarExpression ")";
		public ParserRule getRule() { return rule; }

		//{StringSplit} "split(" value=ScalarExpression "," delimiter=ScalarExpression ")"
		public Group getGroup() { return cGroup; }

		//{StringSplit}
		public Action getStringSplitAction_0() { return cStringSplitAction_0; }

		//"split("
		public Keyword getSplitKeyword_1() { return cSplitKeyword_1; }

		//value=ScalarExpression
		public Assignment getValueAssignment_2() { return cValueAssignment_2; }

		//ScalarExpression
		public RuleCall getValueScalarExpressionParserRuleCall_2_0() { return cValueScalarExpressionParserRuleCall_2_0; }

		//","
		public Keyword getCommaKeyword_3() { return cCommaKeyword_3; }

		//delimiter=ScalarExpression
		public Assignment getDelimiterAssignment_4() { return cDelimiterAssignment_4; }

		//ScalarExpression
		public RuleCall getDelimiterScalarExpressionParserRuleCall_4_0() { return cDelimiterScalarExpressionParserRuleCall_4_0; }

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

	public class TabBarApplicationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TabBarApplication");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cTabbarApplicationKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cApplicationKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cSplashKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cSplashAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cSplashSTRINGTerminalRuleCall_3_1_0 = (RuleCall)cSplashAssignment_3_1.eContents().get(0);
		private final Assignment cButtonsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cButtonsTabbarButtonParserRuleCall_4_0 = (RuleCall)cButtonsAssignment_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//// -------------------------------------------
		//// applications
		//TabBarApplication returns Application:
		//	("tabbarApplication" | "application") name=ID "{" ("splash=" splash=STRING)? buttons+=TabbarButton* "}";
		public ParserRule getRule() { return rule; }

		//("tabbarApplication" | "application") name=ID "{" ("splash=" splash=STRING)? buttons+=TabbarButton* "}"
		public Group getGroup() { return cGroup; }

		//"tabbarApplication" | "application"
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//"tabbarApplication"
		public Keyword getTabbarApplicationKeyword_0_0() { return cTabbarApplicationKeyword_0_0; }

		//"application"
		public Keyword getApplicationKeyword_0_1() { return cApplicationKeyword_0_1; }

		//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; }

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

		//"splash="
		public Keyword getSplashKeyword_3_0() { return cSplashKeyword_3_0; }

		//splash=STRING
		public Assignment getSplashAssignment_3_1() { return cSplashAssignment_3_1; }

		//STRING
		public RuleCall getSplashSTRINGTerminalRuleCall_3_1_0() { return cSplashSTRINGTerminalRuleCall_3_1_0; }

		//buttons+=TabbarButton*
		public Assignment getButtonsAssignment_4() { return cButtonsAssignment_4; }

		//TabbarButton
		public RuleCall getButtonsTabbarButtonParserRuleCall_4_0() { return cButtonsTabbarButtonParserRuleCall_4_0; }

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

	public class TabbarButtonElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TabbarButton");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cButtonKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTitleKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cTitleAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cTitleScalarExpressionParserRuleCall_3_0 = (RuleCall)cTitleAssignment_3.eContents().get(0);
		private final Keyword cIconKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cIconAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cIconScalarExpressionParserRuleCall_5_0 = (RuleCall)cIconAssignment_5.eContents().get(0);
		private final Keyword cViewKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cViewAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cViewViewCallParserRuleCall_7_0 = (RuleCall)cViewAssignment_7.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//TabbarButton:
		//	"button" "{" "title=" title=ScalarExpression "icon=" icon=ScalarExpression "view=" view=ViewCall "}";
		public ParserRule getRule() { return rule; }

		//"button" "{" "title=" title=ScalarExpression "icon=" icon=ScalarExpression "view=" view=ViewCall "}"
		public Group getGroup() { return cGroup; }

		//"button"
		public Keyword getButtonKeyword_0() { return cButtonKeyword_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }

		//"title="
		public Keyword getTitleKeyword_2() { return cTitleKeyword_2; }

		//title=ScalarExpression
		public Assignment getTitleAssignment_3() { return cTitleAssignment_3; }

		//ScalarExpression
		public RuleCall getTitleScalarExpressionParserRuleCall_3_0() { return cTitleScalarExpressionParserRuleCall_3_0; }

		//"icon="
		public Keyword getIconKeyword_4() { return cIconKeyword_4; }

		//icon=ScalarExpression
		public Assignment getIconAssignment_5() { return cIconAssignment_5; }

		//ScalarExpression
		public RuleCall getIconScalarExpressionParserRuleCall_5_0() { return cIconScalarExpressionParserRuleCall_5_0; }

		//"view="
		public Keyword getViewKeyword_6() { return cViewKeyword_6; }

		//view=ViewCall
		public Assignment getViewAssignment_7() { return cViewAssignment_7; }

		//ViewCall
		public RuleCall getViewViewCallParserRuleCall_7_0() { return cViewViewCallParserRuleCall_7_0; }

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

	public class ConstantElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Constant");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cConstantAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cConstKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cValueScalarExpressionParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
		
		//Constant returns VariableDeclaration:
		//	{Constant} "const" name=ID value=ScalarExpression;
		public ParserRule getRule() { return rule; }

		//{Constant} "const" name=ID value=ScalarExpression
		public Group getGroup() { return cGroup; }

		//{Constant}
		public Action getConstantAction_0() { return cConstantAction_0; }

		//"const"
		public Keyword getConstKeyword_1() { return cConstKeyword_1; }

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

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

		//value=ScalarExpression
		public Assignment getValueAssignment_3() { return cValueAssignment_3; }

		//ScalarExpression
		public RuleCall getValueScalarExpressionParserRuleCall_3_0() { return cValueScalarExpressionParserRuleCall_3_0; }
	}

	public class TypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Type");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSimpleTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cEntityParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//// -------------------------------------------
		//// types
		//Type:
		//	SimpleType | Entity;
		public ParserRule getRule() { return rule; }

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

		//SimpleType
		public RuleCall getSimpleTypeParserRuleCall_0() { return cSimpleTypeParserRuleCall_0; }

		//Entity
		public RuleCall getEntityParserRuleCall_1() { return cEntityParserRuleCall_1; }
	}

	public class SimpleTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SimpleType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cTypeKeyword_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 cMapsToKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cPlatformTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cPlatformTypeSTRINGTerminalRuleCall_3_0 = (RuleCall)cPlatformTypeAssignment_3.eContents().get(0);
		
		//SimpleType:
		//	"type" name=ID "mapsTo" platformType=STRING;
		public ParserRule getRule() { return rule; }

		//"type" name=ID "mapsTo" platformType=STRING
		public Group getGroup() { return cGroup; }

		//"type"
		public Keyword getTypeKeyword_0() { return cTypeKeyword_0; }

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

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

		//"mapsTo"
		public Keyword getMapsToKeyword_2() { return cMapsToKeyword_2; }

		//platformType=STRING
		public Assignment getPlatformTypeAssignment_3() { return cPlatformTypeAssignment_3; }

		//STRING
		public RuleCall getPlatformTypeSTRINGTerminalRuleCall_3_0() { return cPlatformTypeSTRINGTerminalRuleCall_3_0; }
	}

	public class EntityElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Entity");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEntityKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cExtendsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cExtendsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final CrossReference cExtendsEntityCrossReference_2_1_0 = (CrossReference)cExtendsAssignment_2_1.eContents().get(0);
		private final RuleCall cExtendsEntityIDTerminalRuleCall_2_1_0_1 = (RuleCall)cExtendsEntityCrossReference_2_1_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cPropertiesAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cPropertiesPropertyParserRuleCall_4_0 = (RuleCall)cPropertiesAssignment_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//Entity:
		//	"entity" name=ID ("extends" extends=[Entity])? "{" properties+=Property* "}";
		public ParserRule getRule() { return rule; }

		//"entity" name=ID ("extends" extends=[Entity])? "{" properties+=Property* "}"
		public Group getGroup() { return cGroup; }

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

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

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

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

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

		//extends=[Entity]
		public Assignment getExtendsAssignment_2_1() { return cExtendsAssignment_2_1; }

		//[Entity]
		public CrossReference getExtendsEntityCrossReference_2_1_0() { return cExtendsEntityCrossReference_2_1_0; }

		//ID
		public RuleCall getExtendsEntityIDTerminalRuleCall_2_1_0_1() { return cExtendsEntityIDTerminalRuleCall_2_1_0_1; }

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

		//properties+=Property*
		public Assignment getPropertiesAssignment_4() { return cPropertiesAssignment_4; }

		//Property
		public RuleCall getPropertiesPropertyParserRuleCall_4_0() { return cPropertiesPropertyParserRuleCall_4_0; }

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

	public class PropertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Property");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cDerivedAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cDerivedDerivedKeyword_0_0 = (Keyword)cDerivedAssignment_0.eContents().get(0);
		private final Assignment cDescriptionAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cDescriptionTypeDescriptionParserRuleCall_1_0 = (RuleCall)cDescriptionAssignment_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		
		//Property:
		//	derived?="derived"? description=TypeDescription name=ID;
		public ParserRule getRule() { return rule; }

		//derived?="derived"? description=TypeDescription name=ID
		public Group getGroup() { return cGroup; }

		//derived?="derived"?
		public Assignment getDerivedAssignment_0() { return cDerivedAssignment_0; }

		//"derived"
		public Keyword getDerivedDerivedKeyword_0_0() { return cDerivedDerivedKeyword_0_0; }

		//description=TypeDescription
		public Assignment getDescriptionAssignment_1() { return cDescriptionAssignment_1; }

		//TypeDescription
		public RuleCall getDescriptionTypeDescriptionParserRuleCall_1_0() { return cDescriptionTypeDescriptionParserRuleCall_1_0; }

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

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

	public class ContentProviderElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ContentProvider");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cContentproviderKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cParameterAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cParameterParameterParserRuleCall_2_1_0 = (RuleCall)cParameterAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Keyword cReturnsKeyword_3_0 = (Keyword)cAlternatives_3.eContents().get(0);
		private final Assignment cResolverAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final Keyword cResolverResolvesKeyword_3_1_0 = (Keyword)cResolverAssignment_3_1.eContents().get(0);
		private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cTypeTypeCrossReference_4_0 = (CrossReference)cTypeAssignment_4.eContents().get(0);
		private final RuleCall cTypeTypeIDTerminalRuleCall_4_0_1 = (RuleCall)cTypeTypeCrossReference_4_0.eContents().get(1);
		private final Assignment cManyAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final Keyword cManyLeftSquareBracketRightSquareBracketKeyword_5_0 = (Keyword)cManyAssignment_5.eContents().get(0);
		private final Keyword cFetchesKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cXMLKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cFromKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Assignment cUrlAssignment_9 = (Assignment)cGroup.eContents().get(9);
		private final RuleCall cUrlScalarExpressionParserRuleCall_9_0 = (RuleCall)cUrlAssignment_9.eContents().get(0);
		private final Keyword cSelectsKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Assignment cSelectionAssignment_11 = (Assignment)cGroup.eContents().get(11);
		private final RuleCall cSelectionScalarExpressionParserRuleCall_11_0 = (RuleCall)cSelectionAssignment_11.eContents().get(0);
		
		//// -------------------------------------------
		//// content provider
		//ContentProvider:
		//	"contentprovider" name=ID ("(" parameter=Parameter ")")? ("returns" | resolver?="resolves") type=[Type] many?="[]"?
		//	"fetches" "XML" "from" url=ScalarExpression "selects" selection=ScalarExpression;
		public ParserRule getRule() { return rule; }

		//"contentprovider" name=ID ("(" parameter=Parameter ")")? ("returns" | resolver?="resolves") type=[Type] many?="[]"?
		//"fetches" "XML" "from" url=ScalarExpression "selects" selection=ScalarExpression
		public Group getGroup() { return cGroup; }

		//"contentprovider"
		public Keyword getContentproviderKeyword_0() { return cContentproviderKeyword_0; }

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

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

		//("(" parameter=Parameter ")")?
		public Group getGroup_2() { return cGroup_2; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }

		//parameter=Parameter
		public Assignment getParameterAssignment_2_1() { return cParameterAssignment_2_1; }

		//Parameter
		public RuleCall getParameterParameterParserRuleCall_2_1_0() { return cParameterParameterParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }

		//"returns" | resolver?="resolves"
		public Alternatives getAlternatives_3() { return cAlternatives_3; }

		//"returns"
		public Keyword getReturnsKeyword_3_0() { return cReturnsKeyword_3_0; }

		//resolver?="resolves"
		public Assignment getResolverAssignment_3_1() { return cResolverAssignment_3_1; }

		//"resolves"
		public Keyword getResolverResolvesKeyword_3_1_0() { return cResolverResolvesKeyword_3_1_0; }

		//type=[Type]
		public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }

		//[Type]
		public CrossReference getTypeTypeCrossReference_4_0() { return cTypeTypeCrossReference_4_0; }

		//ID
		public RuleCall getTypeTypeIDTerminalRuleCall_4_0_1() { return cTypeTypeIDTerminalRuleCall_4_0_1; }

		//many?="[]"?
		public Assignment getManyAssignment_5() { return cManyAssignment_5; }

		//"[]"
		public Keyword getManyLeftSquareBracketRightSquareBracketKeyword_5_0() { return cManyLeftSquareBracketRightSquareBracketKeyword_5_0; }

		//"fetches"
		public Keyword getFetchesKeyword_6() { return cFetchesKeyword_6; }

		//"XML"
		public Keyword getXMLKeyword_7() { return cXMLKeyword_7; }

		//"from"
		public Keyword getFromKeyword_8() { return cFromKeyword_8; }

		//url=ScalarExpression
		public Assignment getUrlAssignment_9() { return cUrlAssignment_9; }

		//ScalarExpression
		public RuleCall getUrlScalarExpressionParserRuleCall_9_0() { return cUrlScalarExpressionParserRuleCall_9_0; }

		//"selects"
		public Keyword getSelectsKeyword_10() { return cSelectsKeyword_10; }

		//selection=ScalarExpression
		public Assignment getSelectionAssignment_11() { return cSelectionAssignment_11; }

		//ScalarExpression
		public RuleCall getSelectionScalarExpressionParserRuleCall_11_0() { return cSelectionScalarExpressionParserRuleCall_11_0; }
	}

	public class ProviderConstructionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProviderConstruction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Action cComplexProviderConstructionAction_0_0 = (Action)cGroup_0.eContents().get(0);
		private final Assignment cProviderAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final CrossReference cProviderContentProviderCrossReference_0_1_0 = (CrossReference)cProviderAssignment_0_1.eContents().get(0);
		private final RuleCall cProviderContentProviderIDTerminalRuleCall_0_1_0_1 = (RuleCall)cProviderContentProviderCrossReference_0_1_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final Assignment cArgumentAssignment_0_3 = (Assignment)cGroup_0.eContents().get(3);
		private final RuleCall cArgumentExpressionParserRuleCall_0_3_0 = (RuleCall)cArgumentAssignment_0_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_4 = (Keyword)cGroup_0.eContents().get(4);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Action cSimpleProviderConstructionAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Assignment cExpressionAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cExpressionExpressionParserRuleCall_1_1_0 = (RuleCall)cExpressionAssignment_1_1.eContents().get(0);
		
		//ProviderConstruction:
		//	{ComplexProviderConstruction} provider=[ContentProvider] "(" argument=Expression? ")" | {SimpleProviderConstruction}
		//	expression=Expression;
		public ParserRule getRule() { return rule; }

		//{ComplexProviderConstruction} provider=[ContentProvider] "(" argument=Expression? ")" | {SimpleProviderConstruction}
		//expression=Expression
		public Alternatives getAlternatives() { return cAlternatives; }

		//{ComplexProviderConstruction} provider=[ContentProvider] "(" argument=Expression? ")"
		public Group getGroup_0() { return cGroup_0; }

		//{ComplexProviderConstruction}
		public Action getComplexProviderConstructionAction_0_0() { return cComplexProviderConstructionAction_0_0; }

		//provider=[ContentProvider]
		public Assignment getProviderAssignment_0_1() { return cProviderAssignment_0_1; }

		//[ContentProvider]
		public CrossReference getProviderContentProviderCrossReference_0_1_0() { return cProviderContentProviderCrossReference_0_1_0; }

		//ID
		public RuleCall getProviderContentProviderIDTerminalRuleCall_0_1_0_1() { return cProviderContentProviderIDTerminalRuleCall_0_1_0_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_0_2() { return cLeftParenthesisKeyword_0_2; }

		//argument=Expression?
		public Assignment getArgumentAssignment_0_3() { return cArgumentAssignment_0_3; }

		//Expression
		public RuleCall getArgumentExpressionParserRuleCall_0_3_0() { return cArgumentExpressionParserRuleCall_0_3_0; }

		//")"
		public Keyword getRightParenthesisKeyword_0_4() { return cRightParenthesisKeyword_0_4; }

		//{SimpleProviderConstruction} expression=Expression
		public Group getGroup_1() { return cGroup_1; }

		//{SimpleProviderConstruction}
		public Action getSimpleProviderConstructionAction_1_0() { return cSimpleProviderConstructionAction_1_0; }

		//expression=Expression
		public Assignment getExpressionAssignment_1_1() { return cExpressionAssignment_1_1; }

		//Expression
		public RuleCall getExpressionExpressionParserRuleCall_1_1_0() { return cExpressionExpressionParserRuleCall_1_1_0; }
	}

	public class ViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "View");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSectionedViewParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cCustomViewParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//// -------------------------------------------
		//// views
		//View:
		//	SectionedView | CustomView;
		public ParserRule getRule() { return rule; }

		//SectionedView | CustomView
		public Alternatives getAlternatives() { return cAlternatives; }

		//SectionedView
		public RuleCall getSectionedViewParserRuleCall_0() { return cSectionedViewParserRuleCall_0; }

		//CustomView
		public RuleCall getCustomViewParserRuleCall_1() { return cCustomViewParserRuleCall_1; }
	}

	public class SectionedViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SectionedView");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cTableViewParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cDetailsViewParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//SectionedView:
		//	TableView | DetailsView;
		public ParserRule getRule() { return rule; }

		//TableView | DetailsView
		public Alternatives getAlternatives() { return cAlternatives; }

		//TableView
		public RuleCall getTableViewParserRuleCall_0() { return cTableViewParserRuleCall_0; }

		//DetailsView
		public RuleCall getDetailsViewParserRuleCall_1() { return cDetailsViewParserRuleCall_1; }
	}

	public class TableViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TableView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cTableviewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cContentAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cContentParameterParserRuleCall_2_1_0 = (RuleCall)cContentAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cTitleKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cTitleAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cTitleScalarExpressionParserRuleCall_5_0 = (RuleCall)cTitleAssignment_5.eContents().get(0);
		private final Assignment cSectionsAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cSectionsViewSectionParserRuleCall_6_0 = (RuleCall)cSectionsAssignment_6.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//TableView:
		//	"tableview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression sections+=ViewSection* "}";
		public ParserRule getRule() { return rule; }

		//"tableview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression sections+=ViewSection* "}"
		public Group getGroup() { return cGroup; }

		//"tableview"
		public Keyword getTableviewKeyword_0() { return cTableviewKeyword_0; }

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

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

		//("(" content=Parameter ")")?
		public Group getGroup_2() { return cGroup_2; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }

		//content=Parameter
		public Assignment getContentAssignment_2_1() { return cContentAssignment_2_1; }

		//Parameter
		public RuleCall getContentParameterParserRuleCall_2_1_0() { return cContentParameterParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }

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

		//"title="
		public Keyword getTitleKeyword_4() { return cTitleKeyword_4; }

		//title=ScalarExpression
		public Assignment getTitleAssignment_5() { return cTitleAssignment_5; }

		//ScalarExpression
		public RuleCall getTitleScalarExpressionParserRuleCall_5_0() { return cTitleScalarExpressionParserRuleCall_5_0; }

		//sections+=ViewSection*
		public Assignment getSectionsAssignment_6() { return cSectionsAssignment_6; }

		//ViewSection
		public RuleCall getSectionsViewSectionParserRuleCall_6_0() { return cSectionsViewSectionParserRuleCall_6_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}

	public class DetailsViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DetailsView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDetailsviewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cContentAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cContentParameterParserRuleCall_2_1_0 = (RuleCall)cContentAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cTitleKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cTitleAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cTitleScalarExpressionParserRuleCall_5_0 = (RuleCall)cTitleAssignment_5.eContents().get(0);
		private final Assignment cHeaderAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cHeaderViewHeaderParserRuleCall_6_0 = (RuleCall)cHeaderAssignment_6.eContents().get(0);
		private final Assignment cSectionsAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cSectionsViewSectionParserRuleCall_7_0 = (RuleCall)cSectionsAssignment_7.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//DetailsView:
		//	"detailsview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression header=ViewHeader?
		//	sections+=ViewSection* "}";
		public ParserRule getRule() { return rule; }

		//"detailsview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression header=ViewHeader?
		//sections+=ViewSection* "}"
		public Group getGroup() { return cGroup; }

		//"detailsview"
		public Keyword getDetailsviewKeyword_0() { return cDetailsviewKeyword_0; }

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

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

		//("(" content=Parameter ")")?
		public Group getGroup_2() { return cGroup_2; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }

		//content=Parameter
		public Assignment getContentAssignment_2_1() { return cContentAssignment_2_1; }

		//Parameter
		public RuleCall getContentParameterParserRuleCall_2_1_0() { return cContentParameterParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }

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

		//"title="
		public Keyword getTitleKeyword_4() { return cTitleKeyword_4; }

		//title=ScalarExpression
		public Assignment getTitleAssignment_5() { return cTitleAssignment_5; }

		//ScalarExpression
		public RuleCall getTitleScalarExpressionParserRuleCall_5_0() { return cTitleScalarExpressionParserRuleCall_5_0; }

		//header=ViewHeader?
		public Assignment getHeaderAssignment_6() { return cHeaderAssignment_6; }

		//ViewHeader
		public RuleCall getHeaderViewHeaderParserRuleCall_6_0() { return cHeaderViewHeaderParserRuleCall_6_0; }

		//sections+=ViewSection*
		public Assignment getSectionsAssignment_7() { return cSectionsAssignment_7; }

		//ViewSection
		public RuleCall getSectionsViewSectionParserRuleCall_7_0() { return cSectionsViewSectionParserRuleCall_7_0; }

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

	public class CustomViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CustomView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cCustomviewKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cContentAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cContentParameterParserRuleCall_2_1_0 = (RuleCall)cContentAssignment_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
		private final Keyword cImplementedByKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cObjclassAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cObjclassSTRINGTerminalRuleCall_4_0 = (RuleCall)cObjclassAssignment_4.eContents().get(0);
		
		//CustomView:
		//	"customview" name=ID ("(" content=Parameter ")")? "implementedBy" objclass=STRING;
		public ParserRule getRule() { return rule; }

		//"customview" name=ID ("(" content=Parameter ")")? "implementedBy" objclass=STRING
		public Group getGroup() { return cGroup; }

		//"customview"
		public Keyword getCustomviewKeyword_0() { return cCustomviewKeyword_0; }

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

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

		//("(" content=Parameter ")")?
		public Group getGroup_2() { return cGroup_2; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }

		//content=Parameter
		public Assignment getContentAssignment_2_1() { return cContentAssignment_2_1; }

		//Parameter
		public RuleCall getContentParameterParserRuleCall_2_1_0() { return cContentParameterParserRuleCall_2_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }

		//"implementedBy"
		public Keyword getImplementedByKeyword_3() { return cImplementedByKeyword_3; }

		//objclass=STRING
		public Assignment getObjclassAssignment_4() { return cObjclassAssignment_4; }

		//STRING
		public RuleCall getObjclassSTRINGTerminalRuleCall_4_0() { return cObjclassSTRINGTerminalRuleCall_4_0; }
	}

	public class ViewHeaderElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ViewHeader");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cViewHeaderAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cHeaderKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cTitleKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cTitleAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cTitleScalarExpressionParserRuleCall_3_1_0 = (RuleCall)cTitleAssignment_3_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSubtitleKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cSubtitleAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cSubtitleScalarExpressionParserRuleCall_4_1_0 = (RuleCall)cSubtitleAssignment_4_1.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cDetailsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cDetailsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cDetailsScalarExpressionParserRuleCall_5_1_0 = (RuleCall)cDetailsAssignment_5_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cImageKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cImageAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cImageScalarExpressionParserRuleCall_6_1_0 = (RuleCall)cImageAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//ViewHeader:
		//	{ViewHeader} "header" "{" ("title=" title=ScalarExpression)? ("subtitle=" subtitle=ScalarExpression)? ("details="
		//	details=ScalarExpression)? ("image=" image=ScalarExpression)? "}";
		public ParserRule getRule() { return rule; }

		//{ViewHeader} "header" "{" ("title=" title=ScalarExpression)? ("subtitle=" subtitle=ScalarExpression)? ("details="
		//details=ScalarExpression)? ("image=" image=ScalarExpression)? "}"
		public Group getGroup() { return cGroup; }

		//{ViewHeader}
		public Action getViewHeaderAction_0() { return cViewHeaderAction_0; }

		//"header"
		public Keyword getHeaderKeyword_1() { return cHeaderKeyword_1; }

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

		//("title=" title=ScalarExpression)?
		public Group getGroup_3() { return cGroup_3; }

		//"title="
		public Keyword getTitleKeyword_3_0() { return cTitleKeyword_3_0; }

		//title=ScalarExpression
		public Assignment getTitleAssignment_3_1() { return cTitleAssignment_3_1; }

		//ScalarExpression
		public RuleCall getTitleScalarExpressionParserRuleCall_3_1_0() { return cTitleScalarExpressionParserRuleCall_3_1_0; }

		//("subtitle=" subtitle=ScalarExpression)?
		public Group getGroup_4() { return cGroup_4; }

		//"subtitle="
		public Keyword getSubtitleKeyword_4_0() { return cSubtitleKeyword_4_0; }

		//subtitle=ScalarExpression
		public Assignment getSubtitleAssignment_4_1() { return cSubtitleAssignment_4_1; }

		//ScalarExpression
		public RuleCall getSubtitleScalarExpressionParserRuleCall_4_1_0() { return cSubtitleScalarExpressionParserRuleCall_4_1_0; }

		//("details=" details=ScalarExpression)?
		public Group getGroup_5() { return cGroup_5; }

		//"details="
		public Keyword getDetailsKeyword_5_0() { return cDetailsKeyword_5_0; }

		//details=ScalarExpression
		public Assignment getDetailsAssignment_5_1() { return cDetailsAssignment_5_1; }

		//ScalarExpression
		public RuleCall getDetailsScalarExpressionParserRuleCall_5_1_0() { return cDetailsScalarExpressionParserRuleCall_5_1_0; }

		//("image=" image=ScalarExpression)?
		public Group getGroup_6() { return cGroup_6; }

		//"image="
		public Keyword getImageKeyword_6_0() { return cImageKeyword_6_0; }

		//image=ScalarExpression
		public Assignment getImageAssignment_6_1() { return cImageAssignment_6_1; }

		//ScalarExpression
		public RuleCall getImageScalarExpressionParserRuleCall_6_1_0() { return cImageScalarExpressionParserRuleCall_6_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}

	public class ViewSectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ViewSection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSectionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cTitleKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cTitleAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cTitleScalarExpressionParserRuleCall_2_1_0 = (RuleCall)cTitleAssignment_2_1.eContents().get(0);
		private final Assignment cCellsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cCellsSectionCellParserRuleCall_3_0 = (RuleCall)cCellsAssignment_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//ViewSection:
		//	"section" "{" ("title=" title=ScalarExpression)? cells+=SectionCell+ "}";
		public ParserRule getRule() { return rule; }

		//"section" "{" ("title=" title=ScalarExpression)? cells+=SectionCell+ "}"
		public Group getGroup() { return cGroup; }

		//"section"
		public Keyword getSectionKeyword_0() { return cSectionKeyword_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }

		//("title=" title=ScalarExpression)?
		public Group getGroup_2() { return cGroup_2; }

		//"title="
		public Keyword getTitleKeyword_2_0() { return cTitleKeyword_2_0; }

		//title=ScalarExpression
		public Assignment getTitleAssignment_2_1() { return cTitleAssignment_2_1; }

		//ScalarExpression
		public RuleCall getTitleScalarExpressionParserRuleCall_2_1_0() { return cTitleScalarExpressionParserRuleCall_2_1_0; }

		//cells+=SectionCell+
		public Assignment getCellsAssignment_3() { return cCellsAssignment_3; }

		//SectionCell
		public RuleCall getCellsSectionCellParserRuleCall_3_0() { return cCellsSectionCellParserRuleCall_3_0; }

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

	public class SectionCellElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SectionCell");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cCellKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cTypeCellTypeEnumRuleCall_1_0 = (RuleCall)cTypeAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cForeachKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cIteratorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cIteratorCollectionIteratorParserRuleCall_2_1_0 = (RuleCall)cIteratorAssignment_2_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cTextKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cTextAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cTextScalarExpressionParserRuleCall_4_1_0 = (RuleCall)cTextAssignment_4_1.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cDetailsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cDetailsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cDetailsScalarExpressionParserRuleCall_5_1_0 = (RuleCall)cDetailsAssignment_5_1.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cImageKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cImageAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cImageScalarExpressionParserRuleCall_6_1_0 = (RuleCall)cImageAssignment_6_1.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cQueryKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cQueryAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cQueryScalarExpressionParserRuleCall_7_1_0 = (RuleCall)cQueryAssignment_7_1.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cActionKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cActionAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final RuleCall cActionViewActionParserRuleCall_8_1_0 = (RuleCall)cActionAssignment_8_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//SectionCell:
		//	"cell" type=CellType ("foreach" iterator=CollectionIterator)? "{" ("text=" text=ScalarExpression)? ("details="
		//	details=ScalarExpression)? ("image=" image=ScalarExpression)? ("query=" query=ScalarExpression)? ("action="
		//	action=ViewAction)? "}";
		public ParserRule getRule() { return rule; }

		//"cell" type=CellType ("foreach" iterator=CollectionIterator)? "{" ("text=" text=ScalarExpression)? ("details="
		//details=ScalarExpression)? ("image=" image=ScalarExpression)? ("query=" query=ScalarExpression)? ("action="
		//action=ViewAction)? "}"
		public Group getGroup() { return cGroup; }

		//"cell"
		public Keyword getCellKeyword_0() { return cCellKeyword_0; }

		//type=CellType
		public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }

		//CellType
		public RuleCall getTypeCellTypeEnumRuleCall_1_0() { return cTypeCellTypeEnumRuleCall_1_0; }

		//("foreach" iterator=CollectionIterator)?
		public Group getGroup_2() { return cGroup_2; }

		//"foreach"
		public Keyword getForeachKeyword_2_0() { return cForeachKeyword_2_0; }

		//iterator=CollectionIterator
		public Assignment getIteratorAssignment_2_1() { return cIteratorAssignment_2_1; }

		//CollectionIterator
		public RuleCall getIteratorCollectionIteratorParserRuleCall_2_1_0() { return cIteratorCollectionIteratorParserRuleCall_2_1_0; }

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

		//("text=" text=ScalarExpression)?
		public Group getGroup_4() { return cGroup_4; }

		//"text="
		public Keyword getTextKeyword_4_0() { return cTextKeyword_4_0; }

		//text=ScalarExpression
		public Assignment getTextAssignment_4_1() { return cTextAssignment_4_1; }

		//ScalarExpression
		public RuleCall getTextScalarExpressionParserRuleCall_4_1_0() { return cTextScalarExpressionParserRuleCall_4_1_0; }

		//("details=" details=ScalarExpression)?
		public Group getGroup_5() { return cGroup_5; }

		//"details="
		public Keyword getDetailsKeyword_5_0() { return cDetailsKeyword_5_0; }

		//details=ScalarExpression
		public Assignment getDetailsAssignment_5_1() { return cDetailsAssignment_5_1; }

		//ScalarExpression
		public RuleCall getDetailsScalarExpressionParserRuleCall_5_1_0() { return cDetailsScalarExpressionParserRuleCall_5_1_0; }

		//("image=" image=ScalarExpression)?
		public Group getGroup_6() { return cGroup_6; }

		//"image="
		public Keyword getImageKeyword_6_0() { return cImageKeyword_6_0; }

		//image=ScalarExpression
		public Assignment getImageAssignment_6_1() { return cImageAssignment_6_1; }

		//ScalarExpression
		public RuleCall getImageScalarExpressionParserRuleCall_6_1_0() { return cImageScalarExpressionParserRuleCall_6_1_0; }

		//("query=" query=ScalarExpression)?
		public Group getGroup_7() { return cGroup_7; }

		//"query="
		public Keyword getQueryKeyword_7_0() { return cQueryKeyword_7_0; }

		//query=ScalarExpression
		public Assignment getQueryAssignment_7_1() { return cQueryAssignment_7_1; }

		//ScalarExpression
		public RuleCall getQueryScalarExpressionParserRuleCall_7_1_0() { return cQueryScalarExpressionParserRuleCall_7_1_0; }

		//("action=" action=ViewAction)?
		public Group getGroup_8() { return cGroup_8; }

		//"action="
		public Keyword getActionKeyword_8_0() { return cActionKeyword_8_0; }

		//action=ViewAction
		public Assignment getActionAssignment_8_1() { return cActionAssignment_8_1; }

		//ViewAction
		public RuleCall getActionViewActionParserRuleCall_8_1_0() { return cActionViewActionParserRuleCall_8_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
	}

	public class CollectionIteratorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionIterator");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCollectionAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCollectionCollectionExpressionParserRuleCall_0_0 = (RuleCall)cCollectionAssignment_0.eContents().get(0);
		private final Keyword cAsKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		
		//CollectionIterator:
		//	collection=CollectionExpression "as" name=ID;
		public ParserRule getRule() { return rule; }

		//collection=CollectionExpression "as" name=ID
		public Group getGroup() { return cGroup; }

		//collection=CollectionExpression
		public Assignment getCollectionAssignment_0() { return cCollectionAssignment_0; }

		//CollectionExpression
		public RuleCall getCollectionCollectionExpressionParserRuleCall_0_0() { return cCollectionCollectionExpressionParserRuleCall_0_0; }

		//"as"
		public Keyword getAsKeyword_1() { return cAsKeyword_1; }

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

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

	public class ViewActionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ViewAction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cViewCallParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cExternalOpenParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//ViewAction:
		//	ViewCall | ExternalOpen;
		public ParserRule getRule() { return rule; }

		//ViewCall | ExternalOpen
		public Alternatives getAlternatives() { return cAlternatives; }

		//ViewCall
		public RuleCall getViewCallParserRuleCall_0() { return cViewCallParserRuleCall_0; }

		//ExternalOpen
		public RuleCall getExternalOpenParserRuleCall_1() { return cExternalOpenParserRuleCall_1; }
	}

	public class ExternalOpenElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalOpen");
		private final Assignment cUrlAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cUrlScalarExpressionParserRuleCall_0 = (RuleCall)cUrlAssignment.eContents().get(0);
		
		//ExternalOpen:
		//	url=ScalarExpression;
		public ParserRule getRule() { return rule; }

		//url=ScalarExpression
		public Assignment getUrlAssignment() { return cUrlAssignment; }

		//ScalarExpression
		public RuleCall getUrlScalarExpressionParserRuleCall_0() { return cUrlScalarExpressionParserRuleCall_0; }
	}

	public class ViewCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ViewCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cViewAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cViewViewCrossReference_0_0 = (CrossReference)cViewAssignment_0.eContents().get(0);
		private final RuleCall cViewViewIDTerminalRuleCall_0_0_1 = (RuleCall)cViewViewCrossReference_0_0.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cProviderAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cProviderProviderConstructionParserRuleCall_2_0 = (RuleCall)cProviderAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//ViewCall:
		//	view=[View] "(" provider=ProviderConstruction? ")";
		public ParserRule getRule() { return rule; }

		//view=[View] "(" provider=ProviderConstruction? ")"
		public Group getGroup() { return cGroup; }

		//view=[View]
		public Assignment getViewAssignment_0() { return cViewAssignment_0; }

		//[View]
		public CrossReference getViewViewCrossReference_0_0() { return cViewViewCrossReference_0_0; }

		//ID
		public RuleCall getViewViewIDTerminalRuleCall_0_0_1() { return cViewViewIDTerminalRuleCall_0_0_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//provider=ProviderConstruction?
		public Assignment getProviderAssignment_2() { return cProviderAssignment_2; }

		//ProviderConstruction
		public RuleCall getProviderProviderConstructionParserRuleCall_2_0() { return cProviderProviderConstructionParserRuleCall_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}
	
	
	public class CellTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CellType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cDefaultEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cDefaultDefaultKeyword_0_0 = (Keyword)cDefaultEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cDefaultWithDisclosureEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cDefaultWithDisclosureDefaultWithDisclosureKeyword_1_0 = (Keyword)cDefaultWithDisclosureEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cValue2EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cValue2Value2Keyword_2_0 = (Keyword)cValue2EnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cDoubleEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cDoubleDoubleKeyword_3_0 = (Keyword)cDoubleEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cSubtitleEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cSubtitleSubtitleKeyword_4_0 = (Keyword)cSubtitleEnumLiteralDeclaration_4.eContents().get(0);
		private final EnumLiteralDeclaration cMapsEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
		private final Keyword cMapsMapKeyword_5_0 = (Keyword)cMapsEnumLiteralDeclaration_5.eContents().get(0);
		
		//enum CellType:
		//	default="Default" | defaultWithDisclosure="DefaultWithDisclosure" | value2="Value2" | double="Double" |
		//	subtitle="Subtitle" | maps="Map";
		public EnumRule getRule() { return rule; }

		//default="Default" | defaultWithDisclosure="DefaultWithDisclosure" | value2="Value2" | double="Double" |
		//subtitle="Subtitle" | maps="Map"
		public Alternatives getAlternatives() { return cAlternatives; }

		//default="Default"
		public EnumLiteralDeclaration getDefaultEnumLiteralDeclaration_0() { return cDefaultEnumLiteralDeclaration_0; }

		//"Default"
		public Keyword getDefaultDefaultKeyword_0_0() { return cDefaultDefaultKeyword_0_0; }

		//defaultWithDisclosure="DefaultWithDisclosure"
		public EnumLiteralDeclaration getDefaultWithDisclosureEnumLiteralDeclaration_1() { return cDefaultWithDisclosureEnumLiteralDeclaration_1; }

		//"DefaultWithDisclosure"
		public Keyword getDefaultWithDisclosureDefaultWithDisclosureKeyword_1_0() { return cDefaultWithDisclosureDefaultWithDisclosureKeyword_1_0; }

		//value2="Value2"
		public EnumLiteralDeclaration getValue2EnumLiteralDeclaration_2() { return cValue2EnumLiteralDeclaration_2; }

		//"Value2"
		public Keyword getValue2Value2Keyword_2_0() { return cValue2Value2Keyword_2_0; }

		//double="Double"
		public EnumLiteralDeclaration getDoubleEnumLiteralDeclaration_3() { return cDoubleEnumLiteralDeclaration_3; }

		//"Double"
		public Keyword getDoubleDoubleKeyword_3_0() { return cDoubleDoubleKeyword_3_0; }

		//subtitle="Subtitle"
		public EnumLiteralDeclaration getSubtitleEnumLiteralDeclaration_4() { return cSubtitleEnumLiteralDeclaration_4; }

		//"Subtitle"
		public Keyword getSubtitleSubtitleKeyword_4_0() { return cSubtitleSubtitleKeyword_4_0; }

		//maps="Map"
		public EnumLiteralDeclaration getMapsEnumLiteralDeclaration_5() { return cMapsEnumLiteralDeclaration_5; }

		//"Map"
		public Keyword getMapsMapKeyword_5_0() { return cMapsMapKeyword_5_0; }
	}
	
	private ModelElements pModel;
	private ApplicationElements pApplication;
	private ModelElementElements pModelElement;
	private VariableDeclarationElements pVariableDeclaration;
	private TypeDescriptionElements pTypeDescription;
	private ParameterElements pParameter;
	private ObjectReferenceElements pObjectReference;
	private NestedObjectReferenceElements pNestedObjectReference;
	private ExpressionElements pExpression;
	private ScalarExpressionElements pScalarExpression;
	private CollectionExpressionElements pCollectionExpression;
	private StringLiteralElements pStringLiteral;
	private StringFunctionElements pStringFunction;
	private CollectionLiteralElements pCollectionLiteral;
	private CollectionFunctionElements pCollectionFunction;
	private TabBarApplicationElements pTabBarApplication;
	private TabbarButtonElements pTabbarButton;
	private ConstantElements pConstant;
	private TypeElements pType;
	private SimpleTypeElements pSimpleType;
	private EntityElements pEntity;
	private PropertyElements pProperty;
	private ContentProviderElements pContentProvider;
	private ProviderConstructionElements pProviderConstruction;
	private ViewElements pView;
	private SectionedViewElements pSectionedView;
	private TableViewElements pTableView;
	private DetailsViewElements pDetailsView;
	private CustomViewElements pCustomView;
	private ViewHeaderElements pViewHeader;
	private ViewSectionElements pViewSection;
	private SectionCellElements pSectionCell;
	private CellTypeElements unknownRuleCellType;
	private CollectionIteratorElements pCollectionIterator;
	private ViewActionElements pViewAction;
	private ExternalOpenElements pExternalOpen;
	private ViewCallElements pViewCall;
	
	private final GrammarProvider grammarProvider;

	private TerminalsGrammarAccess gaTerminals;

	@Inject
	public ApplauseDslGrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammarProvider = grammarProvider;
		this.gaTerminals = gaTerminals;
	}
	
	public Grammar getGrammar() {	
		return grammarProvider.getGrammar(this);
	}
	

	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//Model:
	//	application=Application elements+=ModelElement*;
	public ModelElements getModelAccess() {
		return (pModel != null) ? pModel : (pModel = new ModelElements());
	}
	
	public ParserRule getModelRule() {
		return getModelAccess().getRule();
	}

	//Application:
	//	TabBarApplication;
	public ApplicationElements getApplicationAccess() {
		return (pApplication != null) ? pApplication : (pApplication = new ApplicationElements());
	}
	
	public ParserRule getApplicationRule() {
		return getApplicationAccess().getRule();
	}

	//ModelElement:
	//	Type | ContentProvider | View | Constant;
	public ModelElementElements getModelElementAccess() {
		return (pModelElement != null) ? pModelElement : (pModelElement = new ModelElementElements());
	}
	
	public ParserRule getModelElementRule() {
		return getModelElementAccess().getRule();
	}

	//// -------------------------------------------
	//// General
	//// common supertype to allow variableReferences
	//VariableDeclaration:
	//	Parameter | Property | CollectionIterator;
	public VariableDeclarationElements getVariableDeclarationAccess() {
		return (pVariableDeclaration != null) ? pVariableDeclaration : (pVariableDeclaration = new VariableDeclarationElements());
	}
	
	public ParserRule getVariableDeclarationRule() {
		return getVariableDeclarationAccess().getRule();
	}

	//TypeDescription:
	//	type=[Type] many?="[]"?;
	public TypeDescriptionElements getTypeDescriptionAccess() {
		return (pTypeDescription != null) ? pTypeDescription : (pTypeDescription = new TypeDescriptionElements());
	}
	
	public ParserRule getTypeDescriptionRule() {
		return getTypeDescriptionAccess().getRule();
	}

	//Parameter:
	//	description=TypeDescription name=ID;
	public ParameterElements getParameterAccess() {
		return (pParameter != null) ? pParameter : (pParameter = new ParameterElements());
	}
	
	public ParserRule getParameterRule() {
		return getParameterAccess().getRule();
	}

	//ObjectReference:
	//	object=[VariableDeclaration] tail=NestedObjectReference?;
	public ObjectReferenceElements getObjectReferenceAccess() {
		return (pObjectReference != null) ? pObjectReference : (pObjectReference = new ObjectReferenceElements());
	}
	
	public ParserRule getObjectReferenceRule() {
		return getObjectReferenceAccess().getRule();
	}

	////workaround: NestedObjectReference as separate rule to guide the content 
	////   assist parser technically could have been include in ObjectReference like
	////   ObjectReference:
	////     object=[VariableDeclaration] ('.' tail=ObjectReference)?;
	//NestedObjectReference returns ObjectReference:
	//	"." object=[VariableDeclaration] tail=NestedObjectReference?;
	public NestedObjectReferenceElements getNestedObjectReferenceAccess() {
		return (pNestedObjectReference != null) ? pNestedObjectReference : (pNestedObjectReference = new NestedObjectReferenceElements());
	}
	
	public ParserRule getNestedObjectReferenceRule() {
		return getNestedObjectReferenceAccess().getRule();
	}

	//Expression:
	//	StringLiteral | StringFunction | CollectionLiteral | CollectionFunction | ObjectReference;
	public ExpressionElements getExpressionAccess() {
		return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
	}
	
	public ParserRule getExpressionRule() {
		return getExpressionAccess().getRule();
	}

	//ScalarExpression:
	//	StringLiteral | StringFunction | ObjectReference;
	public ScalarExpressionElements getScalarExpressionAccess() {
		return (pScalarExpression != null) ? pScalarExpression : (pScalarExpression = new ScalarExpressionElements());
	}
	
	public ParserRule getScalarExpressionRule() {
		return getScalarExpressionAccess().getRule();
	}

	//CollectionExpression:
	//	CollectionLiteral | CollectionFunction | ObjectReference;
	public CollectionExpressionElements getCollectionExpressionAccess() {
		return (pCollectionExpression != null) ? pCollectionExpression : (pCollectionExpression = new CollectionExpressionElements());
	}
	
	public ParserRule getCollectionExpressionRule() {
		return getCollectionExpressionAccess().getRule();
	}

	//StringLiteral:
	//	value=STRING;
	public StringLiteralElements getStringLiteralAccess() {
		return (pStringLiteral != null) ? pStringLiteral : (pStringLiteral = new StringLiteralElements());
	}
	
	public ParserRule getStringLiteralRule() {
		return getStringLiteralAccess().getRule();
	}

	//StringFunction:
	//	{StringConcat} "(" values+=ScalarExpression+ ")" | {StringReplace} "replace(" value=ScalarExpression ","
	//	match=ScalarExpression "," replacement=ScalarExpression ")" | {StringUrlConform} "urlconform(" value=ScalarExpression
	//	")";
	public StringFunctionElements getStringFunctionAccess() {
		return (pStringFunction != null) ? pStringFunction : (pStringFunction = new StringFunctionElements());
	}
	
	public ParserRule getStringFunctionRule() {
		return getStringFunctionAccess().getRule();
	}

	//CollectionLiteral:
	//	"[" items+=ScalarExpression ("," items+=ScalarExpression)* "]";
	public CollectionLiteralElements getCollectionLiteralAccess() {
		return (pCollectionLiteral != null) ? pCollectionLiteral : (pCollectionLiteral = new CollectionLiteralElements());
	}
	
	public ParserRule getCollectionLiteralRule() {
		return getCollectionLiteralAccess().getRule();
	}

	//CollectionFunction:
	//	{StringSplit} "split(" value=ScalarExpression "," delimiter=ScalarExpression ")";
	public CollectionFunctionElements getCollectionFunctionAccess() {
		return (pCollectionFunction != null) ? pCollectionFunction : (pCollectionFunction = new CollectionFunctionElements());
	}
	
	public ParserRule getCollectionFunctionRule() {
		return getCollectionFunctionAccess().getRule();
	}

	//// -------------------------------------------
	//// applications
	//TabBarApplication returns Application:
	//	("tabbarApplication" | "application") name=ID "{" ("splash=" splash=STRING)? buttons+=TabbarButton* "}";
	public TabBarApplicationElements getTabBarApplicationAccess() {
		return (pTabBarApplication != null) ? pTabBarApplication : (pTabBarApplication = new TabBarApplicationElements());
	}
	
	public ParserRule getTabBarApplicationRule() {
		return getTabBarApplicationAccess().getRule();
	}

	//TabbarButton:
	//	"button" "{" "title=" title=ScalarExpression "icon=" icon=ScalarExpression "view=" view=ViewCall "}";
	public TabbarButtonElements getTabbarButtonAccess() {
		return (pTabbarButton != null) ? pTabbarButton : (pTabbarButton = new TabbarButtonElements());
	}
	
	public ParserRule getTabbarButtonRule() {
		return getTabbarButtonAccess().getRule();
	}

	//Constant returns VariableDeclaration:
	//	{Constant} "const" name=ID value=ScalarExpression;
	public ConstantElements getConstantAccess() {
		return (pConstant != null) ? pConstant : (pConstant = new ConstantElements());
	}
	
	public ParserRule getConstantRule() {
		return getConstantAccess().getRule();
	}

	//// -------------------------------------------
	//// types
	//Type:
	//	SimpleType | Entity;
	public TypeElements getTypeAccess() {
		return (pType != null) ? pType : (pType = new TypeElements());
	}
	
	public ParserRule getTypeRule() {
		return getTypeAccess().getRule();
	}

	//SimpleType:
	//	"type" name=ID "mapsTo" platformType=STRING;
	public SimpleTypeElements getSimpleTypeAccess() {
		return (pSimpleType != null) ? pSimpleType : (pSimpleType = new SimpleTypeElements());
	}
	
	public ParserRule getSimpleTypeRule() {
		return getSimpleTypeAccess().getRule();
	}

	//Entity:
	//	"entity" name=ID ("extends" extends=[Entity])? "{" properties+=Property* "}";
	public EntityElements getEntityAccess() {
		return (pEntity != null) ? pEntity : (pEntity = new EntityElements());
	}
	
	public ParserRule getEntityRule() {
		return getEntityAccess().getRule();
	}

	//Property:
	//	derived?="derived"? description=TypeDescription name=ID;
	public PropertyElements getPropertyAccess() {
		return (pProperty != null) ? pProperty : (pProperty = new PropertyElements());
	}
	
	public ParserRule getPropertyRule() {
		return getPropertyAccess().getRule();
	}

	//// -------------------------------------------
	//// content provider
	//ContentProvider:
	//	"contentprovider" name=ID ("(" parameter=Parameter ")")? ("returns" | resolver?="resolves") type=[Type] many?="[]"?
	//	"fetches" "XML" "from" url=ScalarExpression "selects" selection=ScalarExpression;
	public ContentProviderElements getContentProviderAccess() {
		return (pContentProvider != null) ? pContentProvider : (pContentProvider = new ContentProviderElements());
	}
	
	public ParserRule getContentProviderRule() {
		return getContentProviderAccess().getRule();
	}

	//ProviderConstruction:
	//	{ComplexProviderConstruction} provider=[ContentProvider] "(" argument=Expression? ")" | {SimpleProviderConstruction}
	//	expression=Expression;
	public ProviderConstructionElements getProviderConstructionAccess() {
		return (pProviderConstruction != null) ? pProviderConstruction : (pProviderConstruction = new ProviderConstructionElements());
	}
	
	public ParserRule getProviderConstructionRule() {
		return getProviderConstructionAccess().getRule();
	}

	//// -------------------------------------------
	//// views
	//View:
	//	SectionedView | CustomView;
	public ViewElements getViewAccess() {
		return (pView != null) ? pView : (pView = new ViewElements());
	}
	
	public ParserRule getViewRule() {
		return getViewAccess().getRule();
	}

	//SectionedView:
	//	TableView | DetailsView;
	public SectionedViewElements getSectionedViewAccess() {
		return (pSectionedView != null) ? pSectionedView : (pSectionedView = new SectionedViewElements());
	}
	
	public ParserRule getSectionedViewRule() {
		return getSectionedViewAccess().getRule();
	}

	//TableView:
	//	"tableview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression sections+=ViewSection* "}";
	public TableViewElements getTableViewAccess() {
		return (pTableView != null) ? pTableView : (pTableView = new TableViewElements());
	}
	
	public ParserRule getTableViewRule() {
		return getTableViewAccess().getRule();
	}

	//DetailsView:
	//	"detailsview" name=ID ("(" content=Parameter ")")? "{" "title=" title=ScalarExpression header=ViewHeader?
	//	sections+=ViewSection* "}";
	public DetailsViewElements getDetailsViewAccess() {
		return (pDetailsView != null) ? pDetailsView : (pDetailsView = new DetailsViewElements());
	}
	
	public ParserRule getDetailsViewRule() {
		return getDetailsViewAccess().getRule();
	}

	//CustomView:
	//	"customview" name=ID ("(" content=Parameter ")")? "implementedBy" objclass=STRING;
	public CustomViewElements getCustomViewAccess() {
		return (pCustomView != null) ? pCustomView : (pCustomView = new CustomViewElements());
	}
	
	public ParserRule getCustomViewRule() {
		return getCustomViewAccess().getRule();
	}

	//ViewHeader:
	//	{ViewHeader} "header" "{" ("title=" title=ScalarExpression)? ("subtitle=" subtitle=ScalarExpression)? ("details="
	//	details=ScalarExpression)? ("image=" image=ScalarExpression)? "}";
	public ViewHeaderElements getViewHeaderAccess() {
		return (pViewHeader != null) ? pViewHeader : (pViewHeader = new ViewHeaderElements());
	}
	
	public ParserRule getViewHeaderRule() {
		return getViewHeaderAccess().getRule();
	}

	//ViewSection:
	//	"section" "{" ("title=" title=ScalarExpression)? cells+=SectionCell+ "}";
	public ViewSectionElements getViewSectionAccess() {
		return (pViewSection != null) ? pViewSection : (pViewSection = new ViewSectionElements());
	}
	
	public ParserRule getViewSectionRule() {
		return getViewSectionAccess().getRule();
	}

	//SectionCell:
	//	"cell" type=CellType ("foreach" iterator=CollectionIterator)? "{" ("text=" text=ScalarExpression)? ("details="
	//	details=ScalarExpression)? ("image=" image=ScalarExpression)? ("query=" query=ScalarExpression)? ("action="
	//	action=ViewAction)? "}";
	public SectionCellElements getSectionCellAccess() {
		return (pSectionCell != null) ? pSectionCell : (pSectionCell = new SectionCellElements());
	}
	
	public ParserRule getSectionCellRule() {
		return getSectionCellAccess().getRule();
	}

	//enum CellType:
	//	default="Default" | defaultWithDisclosure="DefaultWithDisclosure" | value2="Value2" | double="Double" |
	//	subtitle="Subtitle" | maps="Map";
	public CellTypeElements getCellTypeAccess() {
		return (unknownRuleCellType != null) ? unknownRuleCellType : (unknownRuleCellType = new CellTypeElements());
	}
	
	public EnumRule getCellTypeRule() {
		return getCellTypeAccess().getRule();
	}

	//CollectionIterator:
	//	collection=CollectionExpression "as" name=ID;
	public CollectionIteratorElements getCollectionIteratorAccess() {
		return (pCollectionIterator != null) ? pCollectionIterator : (pCollectionIterator = new CollectionIteratorElements());
	}
	
	public ParserRule getCollectionIteratorRule() {
		return getCollectionIteratorAccess().getRule();
	}

	//ViewAction:
	//	ViewCall | ExternalOpen;
	public ViewActionElements getViewActionAccess() {
		return (pViewAction != null) ? pViewAction : (pViewAction = new ViewActionElements());
	}
	
	public ParserRule getViewActionRule() {
		return getViewActionAccess().getRule();
	}

	//ExternalOpen:
	//	url=ScalarExpression;
	public ExternalOpenElements getExternalOpenAccess() {
		return (pExternalOpen != null) ? pExternalOpen : (pExternalOpen = new ExternalOpenElements());
	}
	
	public ParserRule getExternalOpenRule() {
		return getExternalOpenAccess().getRule();
	}

	//ViewCall:
	//	view=[View] "(" provider=ProviderConstruction? ")";
	public ViewCallElements getViewCallAccess() {
		return (pViewCall != null) ? pViewCall : (pViewCall = new ViewCallElements());
	}
	
	public ParserRule getViewCallRule() {
		return getViewCallAccess().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:
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" | "n" |
	//	"f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	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();
	} 
}
