Aadl2GrammarAccess.java

/**
 * Copyright (c) 2004-2025 Carnegie Mellon University and others. (see Contributors file). 
 * All Rights Reserved.
 * 
 * NO WARRANTY. ALL MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY
 * KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE
 * OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT
 * MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
 * 
 * This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Created, in part, with funding and support from the United States Government. (see Acknowledgments file).
 * 
 * This program includes and/or can make use of certain third party source code, object code, documentation and other
 * files ("Third Party Software"). The Third Party Software that is used by this program is dependent upon your system
 * configuration. By using this program, You agree to comply with any and all relevant Third Party Software terms and
 * conditions contained in any such Third Party Software or separate license file distributed with such Third Party
 * Software. The parties who own the Third Party Software ("Third Party Licensors") are intended third party benefici-
 * aries to this license with respect to the terms applicable to their Third Party Software. Third Party Software li-
 * censes only apply to the Third Party Software and not any other portion of this program or this program as a whole.
 */
package org.osate.xtext.aadl2.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Alternatives;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.EnumLiteralDeclaration;
import org.eclipse.xtext.EnumRule;
import org.eclipse.xtext.Grammar;
import org.eclipse.xtext.GrammarUtil;
import org.eclipse.xtext.Group;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.TerminalRule;
import org.eclipse.xtext.service.AbstractElementFinder;
import org.eclipse.xtext.service.GrammarProvider;
import org.osate.xtext.aadl2.properties.services.PropertiesGrammarAccess;

@Singleton
public class Aadl2GrammarAccess extends AbstractElementFinder.AbstractGrammarElementFinder {
	
	public class ModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Model");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAadlPackageParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cPropertySetParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		////import "http://www.eclipse.org/emf/2002/Ecore" as ecore
		//Model returns aadl2::ModelUnit:
		//    (AadlPackage | PropertySet )?
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(AadlPackage | PropertySet )?
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//AadlPackage
		public RuleCall getAadlPackageParserRuleCall_0() { return cAadlPackageParserRuleCall_0; }
		
		//PropertySet
		public RuleCall getPropertySetParserRuleCall_1() { return cPropertySetParserRuleCall_1; }
	}
	public class AadlPackageElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AadlPackage");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPackageKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNamePNAMEParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cOwnedPublicSectionAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final RuleCall cOwnedPublicSectionPublicPackageSectionParserRuleCall_2_0_0_0 = (RuleCall)cOwnedPublicSectionAssignment_2_0_0.eContents().get(0);
		private final Assignment cOwnedPrivateSectionAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final RuleCall cOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_0_1_0 = (RuleCall)cOwnedPrivateSectionAssignment_2_0_1.eContents().get(0);
		private final Assignment cOwnedPrivateSectionAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final RuleCall cOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_1_0 = (RuleCall)cOwnedPrivateSectionAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPropertiesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_3_1_0 = (Assignment)cAlternatives_3_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationBasicPropertyAssociationParserRuleCall_3_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_3_1_0.eContents().get(0);
		private final Group cGroup_3_1_1 = (Group)cAlternatives_3_1.eContents().get(1);
		private final Keyword cNoneKeyword_3_1_1_0 = (Keyword)cGroup_3_1_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_1_1 = (Keyword)cGroup_3_1_1.eContents().get(1);
		private final Keyword cEndKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final RuleCall cPNAMEParserRuleCall_5 = (RuleCall)cGroup.eContents().get(5);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//AadlPackage returns aadl2::AadlPackage:
		//    'package' name=PNAME
		//    ((ownedPublicSection=PublicPackageSection
		//    (ownedPrivateSection=PrivatePackageSection)?) |
		//    ownedPrivateSection=PrivatePackageSection)
		//    ('properties'
		//    (((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
		////| (noProperties?='none' ';')
		//    | ('none' ';') )
		//    )?
		//    'end' PNAME ';';
		@Override public ParserRule getRule() { return rule; }
		
		//    'package' name=PNAME
		//    ((ownedPublicSection=PublicPackageSection
		//    (ownedPrivateSection=PrivatePackageSection)?) |
		//    ownedPrivateSection=PrivatePackageSection)
		//    ('properties'
		//    (((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
		////| (noProperties?='none' ';')
		//    | ('none' ';') )
		//    )?
		//    'end' PNAME ';'
		public Group getGroup() { return cGroup; }
		
		//'package'
		public Keyword getPackageKeyword_0() { return cPackageKeyword_0; }
		
		//name=PNAME
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//PNAME
		public RuleCall getNamePNAMEParserRuleCall_1_0() { return cNamePNAMEParserRuleCall_1_0; }
		
		//((ownedPublicSection=PublicPackageSection
		//(ownedPrivateSection=PrivatePackageSection)?) |
		//ownedPrivateSection=PrivatePackageSection)
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//(ownedPublicSection=PublicPackageSection
		//    (ownedPrivateSection=PrivatePackageSection)?)
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//ownedPublicSection=PublicPackageSection
		public Assignment getOwnedPublicSectionAssignment_2_0_0() { return cOwnedPublicSectionAssignment_2_0_0; }
		
		//PublicPackageSection
		public RuleCall getOwnedPublicSectionPublicPackageSectionParserRuleCall_2_0_0_0() { return cOwnedPublicSectionPublicPackageSectionParserRuleCall_2_0_0_0; }
		
		//(ownedPrivateSection=PrivatePackageSection)?
		public Assignment getOwnedPrivateSectionAssignment_2_0_1() { return cOwnedPrivateSectionAssignment_2_0_1; }
		
		//PrivatePackageSection
		public RuleCall getOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_0_1_0() { return cOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_0_1_0; }
		
		//ownedPrivateSection=PrivatePackageSection
		public Assignment getOwnedPrivateSectionAssignment_2_1() { return cOwnedPrivateSectionAssignment_2_1; }
		
		//PrivatePackageSection
		public RuleCall getOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_1_0() { return cOwnedPrivateSectionPrivatePackageSectionParserRuleCall_2_1_0; }
		
		//    ('properties'
		//    (((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
		////| (noProperties?='none' ';')
		//    | ('none' ';') )
		//    )?
		public Group getGroup_3() { return cGroup_3; }
		
		//'properties'
		public Keyword getPropertiesKeyword_3_0() { return cPropertiesKeyword_3_0; }
		
		//    (((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
		////| (noProperties?='none' ';')
		//    | ('none' ';') )
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
		public Assignment getOwnedPropertyAssociationAssignment_3_1_0() { return cOwnedPropertyAssociationAssignment_3_1_0; }
		
		//BasicPropertyAssociation
		public RuleCall getOwnedPropertyAssociationBasicPropertyAssociationParserRuleCall_3_1_0_0() { return cOwnedPropertyAssociationBasicPropertyAssociationParserRuleCall_3_1_0_0; }
		
		//('none' ';')
		public Group getGroup_3_1_1() { return cGroup_3_1_1; }
		
		//'none'
		public Keyword getNoneKeyword_3_1_1_0() { return cNoneKeyword_3_1_1_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_1_1() { return cSemicolonKeyword_3_1_1_1; }
		
		//'end'
		public Keyword getEndKeyword_4() { return cEndKeyword_4; }
		
		//PNAME
		public RuleCall getPNAMEParserRuleCall_5() { return cPNAMEParserRuleCall_5; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class PublicPackageSectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PublicPackageSection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cPublicPackageSectionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cPublicKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Keyword cWithKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
		private final Assignment cImportedUnitAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final CrossReference cImportedUnitModelUnitCrossReference_2_0_1_0 = (CrossReference)cImportedUnitAssignment_2_0_1.eContents().get(0);
		private final RuleCall cImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1 = (RuleCall)cImportedUnitModelUnitCrossReference_2_0_1_0.eContents().get(1);
		private final Group cGroup_2_0_2 = (Group)cGroup_2_0.eContents().get(2);
		private final Keyword cCommaKeyword_2_0_2_0 = (Keyword)cGroup_2_0_2.eContents().get(0);
		private final Assignment cImportedUnitAssignment_2_0_2_1 = (Assignment)cGroup_2_0_2.eContents().get(1);
		private final CrossReference cImportedUnitModelUnitCrossReference_2_0_2_1_0 = (CrossReference)cImportedUnitAssignment_2_0_2_1.eContents().get(0);
		private final RuleCall cImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1 = (RuleCall)cImportedUnitModelUnitCrossReference_2_0_2_1_0.eContents().get(1);
		private final Keyword cSemicolonKeyword_2_0_3 = (Keyword)cGroup_2_0.eContents().get(3);
		private final Assignment cOwnedPackageRenameAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final Alternatives cOwnedPackageRenameAlternatives_2_1_0 = (Alternatives)cOwnedPackageRenameAssignment_2_1.eContents().get(0);
		private final RuleCall cOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0 = (RuleCall)cOwnedPackageRenameAlternatives_2_1_0.eContents().get(0);
		private final RuleCall cOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1 = (RuleCall)cOwnedPackageRenameAlternatives_2_1_0.eContents().get(1);
		private final Assignment cOwnedFeatureGroupTypeRenameAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0 = (RuleCall)cOwnedFeatureGroupTypeRenameAssignment_2_2.eContents().get(0);
		private final Assignment cOwnedComponentTypeRenameAssignment_2_3 = (Assignment)cAlternatives_2.eContents().get(3);
		private final RuleCall cOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0 = (RuleCall)cOwnedComponentTypeRenameAssignment_2_3.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cOwnedClassifierAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final RuleCall cOwnedClassifierClassifierParserRuleCall_3_0_0 = (RuleCall)cOwnedClassifierAssignment_3_0.eContents().get(0);
		private final Assignment cOwnedAnnexLibraryAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final RuleCall cOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0 = (RuleCall)cOwnedAnnexLibraryAssignment_3_1.eContents().get(0);
		
		////ID ('::' ID)* ';';
		//PublicPackageSection returns aadl2::PublicPackageSection:
		//    {aadl2::PublicPackageSection}
		//    'public'
		//    (('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		//     | ownedPackageRename+=(PackageRename|RenameAll)
		//     | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		//    )*
		//    ( ownedClassifier+=Classifier
		//    | ownedAnnexLibrary+=AnnexLibrary
		//        )*
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::PublicPackageSection}
		//'public'
		//(('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//    (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		// | ownedPackageRename+=(PackageRename|RenameAll)
		// | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		//)*
		//( ownedClassifier+=Classifier
		//| ownedAnnexLibrary+=AnnexLibrary
		//    )*
		public Group getGroup() { return cGroup; }
		
		//{aadl2::PublicPackageSection}
		public Action getPublicPackageSectionAction_0() { return cPublicPackageSectionAction_0; }
		
		//'public'
		public Keyword getPublicKeyword_1() { return cPublicKeyword_1; }
		
		//(('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//    (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		// | ownedPackageRename+=(PackageRename|RenameAll)
		// | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		//)*
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//'with'
		public Keyword getWithKeyword_2_0_0() { return cWithKeyword_2_0_0; }
		
		//(importedUnit+=[aadl2::ModelUnit|PNAME])
		public Assignment getImportedUnitAssignment_2_0_1() { return cImportedUnitAssignment_2_0_1; }
		
		//[aadl2::ModelUnit|PNAME]
		public CrossReference getImportedUnitModelUnitCrossReference_2_0_1_0() { return cImportedUnitModelUnitCrossReference_2_0_1_0; }
		
		//PNAME
		public RuleCall getImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1() { return cImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1; }
		
		//(',' importedUnit+=[aadl2::ModelUnit|PNAME])*
		public Group getGroup_2_0_2() { return cGroup_2_0_2; }
		
		//','
		public Keyword getCommaKeyword_2_0_2_0() { return cCommaKeyword_2_0_2_0; }
		
		//importedUnit+=[aadl2::ModelUnit|PNAME]
		public Assignment getImportedUnitAssignment_2_0_2_1() { return cImportedUnitAssignment_2_0_2_1; }
		
		//[aadl2::ModelUnit|PNAME]
		public CrossReference getImportedUnitModelUnitCrossReference_2_0_2_1_0() { return cImportedUnitModelUnitCrossReference_2_0_2_1_0; }
		
		//PNAME
		public RuleCall getImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1() { return cImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1; }
		
		//';'
		public Keyword getSemicolonKeyword_2_0_3() { return cSemicolonKeyword_2_0_3; }
		
		//ownedPackageRename+=(PackageRename|RenameAll)
		public Assignment getOwnedPackageRenameAssignment_2_1() { return cOwnedPackageRenameAssignment_2_1; }
		
		//(PackageRename|RenameAll)
		public Alternatives getOwnedPackageRenameAlternatives_2_1_0() { return cOwnedPackageRenameAlternatives_2_1_0; }
		
		//PackageRename
		public RuleCall getOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0() { return cOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0; }
		
		//RenameAll
		public RuleCall getOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1() { return cOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1; }
		
		//ownedFeatureGroupTypeRename+=FGTRename
		public Assignment getOwnedFeatureGroupTypeRenameAssignment_2_2() { return cOwnedFeatureGroupTypeRenameAssignment_2_2; }
		
		//FGTRename
		public RuleCall getOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0() { return cOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0; }
		
		//ownedComponentTypeRename+=CTRename
		public Assignment getOwnedComponentTypeRenameAssignment_2_3() { return cOwnedComponentTypeRenameAssignment_2_3; }
		
		//CTRename
		public RuleCall getOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0() { return cOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0; }
		
		//( ownedClassifier+=Classifier
		//| ownedAnnexLibrary+=AnnexLibrary
		//    )*
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//ownedClassifier+=Classifier
		public Assignment getOwnedClassifierAssignment_3_0() { return cOwnedClassifierAssignment_3_0; }
		
		//Classifier
		public RuleCall getOwnedClassifierClassifierParserRuleCall_3_0_0() { return cOwnedClassifierClassifierParserRuleCall_3_0_0; }
		
		//ownedAnnexLibrary+=AnnexLibrary
		public Assignment getOwnedAnnexLibraryAssignment_3_1() { return cOwnedAnnexLibraryAssignment_3_1; }
		
		//AnnexLibrary
		public RuleCall getOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0() { return cOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0; }
	}
	public class PrivatePackageSectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PrivatePackageSection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cPrivatePackageSectionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cPrivateKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Keyword cWithKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
		private final Assignment cImportedUnitAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final CrossReference cImportedUnitModelUnitCrossReference_2_0_1_0 = (CrossReference)cImportedUnitAssignment_2_0_1.eContents().get(0);
		private final RuleCall cImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1 = (RuleCall)cImportedUnitModelUnitCrossReference_2_0_1_0.eContents().get(1);
		private final Group cGroup_2_0_2 = (Group)cGroup_2_0.eContents().get(2);
		private final Keyword cCommaKeyword_2_0_2_0 = (Keyword)cGroup_2_0_2.eContents().get(0);
		private final Assignment cImportedUnitAssignment_2_0_2_1 = (Assignment)cGroup_2_0_2.eContents().get(1);
		private final CrossReference cImportedUnitModelUnitCrossReference_2_0_2_1_0 = (CrossReference)cImportedUnitAssignment_2_0_2_1.eContents().get(0);
		private final RuleCall cImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1 = (RuleCall)cImportedUnitModelUnitCrossReference_2_0_2_1_0.eContents().get(1);
		private final Keyword cSemicolonKeyword_2_0_3 = (Keyword)cGroup_2_0.eContents().get(3);
		private final Assignment cOwnedPackageRenameAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final Alternatives cOwnedPackageRenameAlternatives_2_1_0 = (Alternatives)cOwnedPackageRenameAssignment_2_1.eContents().get(0);
		private final RuleCall cOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0 = (RuleCall)cOwnedPackageRenameAlternatives_2_1_0.eContents().get(0);
		private final RuleCall cOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1 = (RuleCall)cOwnedPackageRenameAlternatives_2_1_0.eContents().get(1);
		private final Assignment cOwnedFeatureGroupTypeRenameAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0 = (RuleCall)cOwnedFeatureGroupTypeRenameAssignment_2_2.eContents().get(0);
		private final Assignment cOwnedComponentTypeRenameAssignment_2_3 = (Assignment)cAlternatives_2.eContents().get(3);
		private final RuleCall cOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0 = (RuleCall)cOwnedComponentTypeRenameAssignment_2_3.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cOwnedClassifierAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final RuleCall cOwnedClassifierClassifierParserRuleCall_3_0_0 = (RuleCall)cOwnedClassifierAssignment_3_0.eContents().get(0);
		private final Assignment cOwnedAnnexLibraryAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final RuleCall cOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0 = (RuleCall)cOwnedAnnexLibraryAssignment_3_1.eContents().get(0);
		
		//PrivatePackageSection returns aadl2::PrivatePackageSection:
		//    {aadl2::PrivatePackageSection}
		//    'private'
		//    (('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		//     | ownedPackageRename+=(PackageRename|RenameAll)
		//     | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		//    )*
		//   ( ownedClassifier += Classifier
		//    | ownedAnnexLibrary+=AnnexLibrary
		//     )*
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		// {aadl2::PrivatePackageSection}
		// 'private'
		// (('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//     (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		//  | ownedPackageRename+=(PackageRename|RenameAll)
		//  | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		// )*
		//( ownedClassifier += Classifier
		// | ownedAnnexLibrary+=AnnexLibrary
		//  )*
		public Group getGroup() { return cGroup; }
		
		//{aadl2::PrivatePackageSection}
		public Action getPrivatePackageSectionAction_0() { return cPrivatePackageSectionAction_0; }
		
		//'private'
		public Keyword getPrivateKeyword_1() { return cPrivateKeyword_1; }
		
		//(('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//    (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		// | ownedPackageRename+=(PackageRename|RenameAll)
		// | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
		//)*
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
		//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//'with'
		public Keyword getWithKeyword_2_0_0() { return cWithKeyword_2_0_0; }
		
		//(importedUnit+=[aadl2::ModelUnit|PNAME])
		public Assignment getImportedUnitAssignment_2_0_1() { return cImportedUnitAssignment_2_0_1; }
		
		//[aadl2::ModelUnit|PNAME]
		public CrossReference getImportedUnitModelUnitCrossReference_2_0_1_0() { return cImportedUnitModelUnitCrossReference_2_0_1_0; }
		
		//PNAME
		public RuleCall getImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1() { return cImportedUnitModelUnitPNAMEParserRuleCall_2_0_1_0_1; }
		
		//(',' importedUnit+=[aadl2::ModelUnit|PNAME])*
		public Group getGroup_2_0_2() { return cGroup_2_0_2; }
		
		//','
		public Keyword getCommaKeyword_2_0_2_0() { return cCommaKeyword_2_0_2_0; }
		
		//importedUnit+=[aadl2::ModelUnit|PNAME]
		public Assignment getImportedUnitAssignment_2_0_2_1() { return cImportedUnitAssignment_2_0_2_1; }
		
		//[aadl2::ModelUnit|PNAME]
		public CrossReference getImportedUnitModelUnitCrossReference_2_0_2_1_0() { return cImportedUnitModelUnitCrossReference_2_0_2_1_0; }
		
		//PNAME
		public RuleCall getImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1() { return cImportedUnitModelUnitPNAMEParserRuleCall_2_0_2_1_0_1; }
		
		//';'
		public Keyword getSemicolonKeyword_2_0_3() { return cSemicolonKeyword_2_0_3; }
		
		//ownedPackageRename+=(PackageRename|RenameAll)
		public Assignment getOwnedPackageRenameAssignment_2_1() { return cOwnedPackageRenameAssignment_2_1; }
		
		//(PackageRename|RenameAll)
		public Alternatives getOwnedPackageRenameAlternatives_2_1_0() { return cOwnedPackageRenameAlternatives_2_1_0; }
		
		//PackageRename
		public RuleCall getOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0() { return cOwnedPackageRenamePackageRenameParserRuleCall_2_1_0_0; }
		
		//RenameAll
		public RuleCall getOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1() { return cOwnedPackageRenameRenameAllParserRuleCall_2_1_0_1; }
		
		//ownedFeatureGroupTypeRename+=FGTRename
		public Assignment getOwnedFeatureGroupTypeRenameAssignment_2_2() { return cOwnedFeatureGroupTypeRenameAssignment_2_2; }
		
		//FGTRename
		public RuleCall getOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0() { return cOwnedFeatureGroupTypeRenameFGTRenameParserRuleCall_2_2_0; }
		
		//ownedComponentTypeRename+=CTRename
		public Assignment getOwnedComponentTypeRenameAssignment_2_3() { return cOwnedComponentTypeRenameAssignment_2_3; }
		
		//CTRename
		public RuleCall getOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0() { return cOwnedComponentTypeRenameCTRenameParserRuleCall_2_3_0; }
		
		//( ownedClassifier += Classifier
		// | ownedAnnexLibrary+=AnnexLibrary
		//  )*
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//ownedClassifier += Classifier
		public Assignment getOwnedClassifierAssignment_3_0() { return cOwnedClassifierAssignment_3_0; }
		
		//Classifier
		public RuleCall getOwnedClassifierClassifierParserRuleCall_3_0_0() { return cOwnedClassifierClassifierParserRuleCall_3_0_0; }
		
		//ownedAnnexLibrary+=AnnexLibrary
		public Assignment getOwnedAnnexLibraryAssignment_3_1() { return cOwnedAnnexLibraryAssignment_3_1; }
		
		//AnnexLibrary
		public RuleCall getOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0() { return cOwnedAnnexLibraryAnnexLibraryParserRuleCall_3_1_0; }
	}
	public class PackageRenameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PackageRename");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cRenamesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cPackageKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cRenamedPackageAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cRenamedPackageAadlPackageCrossReference_3_0 = (CrossReference)cRenamedPackageAssignment_3.eContents().get(0);
		private final RuleCall cRenamedPackageAadlPackagePNAMEParserRuleCall_3_0_1 = (RuleCall)cRenamedPackageAadlPackageCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cColonColonKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cRenameAllAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final Keyword cRenameAllAllKeyword_4_1_0 = (Keyword)cRenameAllAssignment_4_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//PackageRename returns aadl2::PackageRename:
		//    name=ID 'renames' 'package' renamedPackage=[aadl2::AadlPackage|PNAME] ('::' renameAll?='all')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID 'renames' 'package' renamedPackage=[aadl2::AadlPackage|PNAME] ('::' renameAll?='all')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//'renames'
		public Keyword getRenamesKeyword_1() { return cRenamesKeyword_1; }
		
		//'package'
		public Keyword getPackageKeyword_2() { return cPackageKeyword_2; }
		
		//renamedPackage=[aadl2::AadlPackage|PNAME]
		public Assignment getRenamedPackageAssignment_3() { return cRenamedPackageAssignment_3; }
		
		//[aadl2::AadlPackage|PNAME]
		public CrossReference getRenamedPackageAadlPackageCrossReference_3_0() { return cRenamedPackageAadlPackageCrossReference_3_0; }
		
		//PNAME
		public RuleCall getRenamedPackageAadlPackagePNAMEParserRuleCall_3_0_1() { return cRenamedPackageAadlPackagePNAMEParserRuleCall_3_0_1; }
		
		//('::' renameAll?='all')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'::'
		public Keyword getColonColonKeyword_4_0() { return cColonColonKeyword_4_0; }
		
		//renameAll?='all'
		public Assignment getRenameAllAssignment_4_1() { return cRenameAllAssignment_4_1; }
		
		//'all'
		public Keyword getRenameAllAllKeyword_4_1_0() { return cRenameAllAllKeyword_4_1_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class RenameAllElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RenameAll");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRenamesKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cRenamedPackageAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cRenamedPackageAadlPackageCrossReference_1_0 = (CrossReference)cRenamedPackageAssignment_1.eContents().get(0);
		private final RuleCall cRenamedPackageAadlPackagePNAMEParserRuleCall_1_0_1 = (RuleCall)cRenamedPackageAadlPackageCrossReference_1_0.eContents().get(1);
		private final Keyword cColonColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cRenameAllAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cRenameAllAllKeyword_3_0 = (Keyword)cRenameAllAssignment_3.eContents().get(0);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//RenameAll returns aadl2::PackageRename:
		//    'renames' renamedPackage=[aadl2::AadlPackage|PNAME] '::' renameAll?='all'
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'renames' renamedPackage=[aadl2::AadlPackage|PNAME] '::' renameAll?='all'
		//';'
		public Group getGroup() { return cGroup; }
		
		//'renames'
		public Keyword getRenamesKeyword_0() { return cRenamesKeyword_0; }
		
		//renamedPackage=[aadl2::AadlPackage|PNAME]
		public Assignment getRenamedPackageAssignment_1() { return cRenamedPackageAssignment_1; }
		
		//[aadl2::AadlPackage|PNAME]
		public CrossReference getRenamedPackageAadlPackageCrossReference_1_0() { return cRenamedPackageAadlPackageCrossReference_1_0; }
		
		//PNAME
		public RuleCall getRenamedPackageAadlPackagePNAMEParserRuleCall_1_0_1() { return cRenamedPackageAadlPackagePNAMEParserRuleCall_1_0_1; }
		
		//'::'
		public Keyword getColonColonKeyword_2() { return cColonColonKeyword_2; }
		
		//renameAll?='all'
		public Assignment getRenameAllAssignment_3() { return cRenameAllAssignment_3; }
		
		//'all'
		public Keyword getRenameAllAllKeyword_3_0() { return cRenameAllAllKeyword_3_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class FGTRenameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FGTRename");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cRenamesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cRenamedFeatureGroupTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cRenamedFeatureGroupTypeFeatureGroupTypeCrossReference_3_0 = (CrossReference)cRenamedFeatureGroupTypeAssignment_3.eContents().get(0);
		private final RuleCall cRenamedFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cRenamedFeatureGroupTypeFeatureGroupTypeCrossReference_3_0.eContents().get(1);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//FGTRename returns aadl2::FeatureGroupTypeRename:
		//    (name=ID)? 'renames' FeatureGroupKeywords renamedFeatureGroupType=[aadl2::FeatureGroupType|QCREF]
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(name=ID)? 'renames' FeatureGroupKeywords renamedFeatureGroupType=[aadl2::FeatureGroupType|QCREF]
		//';'
		public Group getGroup() { return cGroup; }
		
		//(name=ID)?
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//'renames'
		public Keyword getRenamesKeyword_1() { return cRenamesKeyword_1; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_2() { return cFeatureGroupKeywordsParserRuleCall_2; }
		
		//renamedFeatureGroupType=[aadl2::FeatureGroupType|QCREF]
		public Assignment getRenamedFeatureGroupTypeAssignment_3() { return cRenamedFeatureGroupTypeAssignment_3; }
		
		//[aadl2::FeatureGroupType|QCREF]
		public CrossReference getRenamedFeatureGroupTypeFeatureGroupTypeCrossReference_3_0() { return cRenamedFeatureGroupTypeFeatureGroupTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getRenamedFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_3_0_1() { return cRenamedFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_3_0_1; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class CTRenameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.CTRename");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cRenamesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cCategoryAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cCategoryComponentCategoryParserRuleCall_2_0 = (RuleCall)cCategoryAssignment_2.eContents().get(0);
		private final Assignment cRenamedComponentTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cRenamedComponentTypeComponentTypeCrossReference_3_0 = (CrossReference)cRenamedComponentTypeAssignment_3.eContents().get(0);
		private final RuleCall cRenamedComponentTypeComponentTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cRenamedComponentTypeComponentTypeCrossReference_3_0.eContents().get(1);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//CTRename returns aadl2::ComponentTypeRename:
		//    (name=ID)? 'renames' category=ComponentCategory renamedComponentType=[aadl2::ComponentType|QCREF]
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(name=ID)? 'renames' category=ComponentCategory renamedComponentType=[aadl2::ComponentType|QCREF]
		//';'
		public Group getGroup() { return cGroup; }
		
		//(name=ID)?
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//'renames'
		public Keyword getRenamesKeyword_1() { return cRenamesKeyword_1; }
		
		//category=ComponentCategory
		public Assignment getCategoryAssignment_2() { return cCategoryAssignment_2; }
		
		//ComponentCategory
		public RuleCall getCategoryComponentCategoryParserRuleCall_2_0() { return cCategoryComponentCategoryParserRuleCall_2_0; }
		
		//renamedComponentType=[aadl2::ComponentType|QCREF]
		public Assignment getRenamedComponentTypeAssignment_3() { return cRenamedComponentTypeAssignment_3; }
		
		//[aadl2::ComponentType|QCREF]
		public CrossReference getRenamedComponentTypeComponentTypeCrossReference_3_0() { return cRenamedComponentTypeComponentTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getRenamedComponentTypeComponentTypeQCREFParserRuleCall_3_0_1() { return cRenamedComponentTypeComponentTypeQCREFParserRuleCall_3_0_1; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class TypeExtensionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.TypeExtension");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cExtendsKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cExtendedAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cExtendedComponentTypeCrossReference_1_0 = (CrossReference)cExtendedAssignment_1.eContents().get(0);
		private final RuleCall cExtendedComponentTypeQCREFParserRuleCall_1_0_1 = (RuleCall)cExtendedComponentTypeCrossReference_1_0.eContents().get(1);
		
		//TypeExtension returns aadl2::TypeExtension:
		//    'extends' extended=[aadl2::ComponentType|QCREF];
		@Override public ParserRule getRule() { return rule; }
		
		//'extends' extended=[aadl2::ComponentType|QCREF]
		public Group getGroup() { return cGroup; }
		
		//'extends'
		public Keyword getExtendsKeyword_0() { return cExtendsKeyword_0; }
		
		//extended=[aadl2::ComponentType|QCREF]
		public Assignment getExtendedAssignment_1() { return cExtendedAssignment_1; }
		
		//[aadl2::ComponentType|QCREF]
		public CrossReference getExtendedComponentTypeCrossReference_1_0() { return cExtendedComponentTypeCrossReference_1_0; }
		
		//QCREF
		public RuleCall getExtendedComponentTypeQCREFParserRuleCall_1_0_1() { return cExtendedComponentTypeQCREFParserRuleCall_1_0_1; }
	}
	public class ImplementationExtensionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ImplementationExtension");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cExtendsKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cExtendedAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cExtendedComponentImplementationCrossReference_1_0 = (CrossReference)cExtendedAssignment_1.eContents().get(0);
		private final RuleCall cExtendedComponentImplementationQCREFParserRuleCall_1_0_1 = (RuleCall)cExtendedComponentImplementationCrossReference_1_0.eContents().get(1);
		
		//ImplementationExtension returns aadl2::ImplementationExtension:
		//    'extends' extended=[aadl2::ComponentImplementation|QCREF];
		@Override public ParserRule getRule() { return rule; }
		
		//'extends' extended=[aadl2::ComponentImplementation|QCREF]
		public Group getGroup() { return cGroup; }
		
		//'extends'
		public Keyword getExtendsKeyword_0() { return cExtendsKeyword_0; }
		
		//extended=[aadl2::ComponentImplementation|QCREF]
		public Assignment getExtendedAssignment_1() { return cExtendedAssignment_1; }
		
		//[aadl2::ComponentImplementation|QCREF]
		public CrossReference getExtendedComponentImplementationCrossReference_1_0() { return cExtendedComponentImplementationCrossReference_1_0; }
		
		//QCREF
		public RuleCall getExtendedComponentImplementationQCREFParserRuleCall_1_0_1() { return cExtendedComponentImplementationQCREFParserRuleCall_1_0_1; }
	}
	public class GroupExtensionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.GroupExtension");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cExtendsKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cExtendedAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cExtendedFeatureGroupTypeCrossReference_1_0 = (CrossReference)cExtendedAssignment_1.eContents().get(0);
		private final RuleCall cExtendedFeatureGroupTypeQCREFParserRuleCall_1_0_1 = (RuleCall)cExtendedFeatureGroupTypeCrossReference_1_0.eContents().get(1);
		
		//GroupExtension returns aadl2::GroupExtension:
		//    'extends' extended=[aadl2::FeatureGroupType|QCREF];
		@Override public ParserRule getRule() { return rule; }
		
		//'extends' extended=[aadl2::FeatureGroupType|QCREF]
		public Group getGroup() { return cGroup; }
		
		//'extends'
		public Keyword getExtendsKeyword_0() { return cExtendsKeyword_0; }
		
		//extended=[aadl2::FeatureGroupType|QCREF]
		public Assignment getExtendedAssignment_1() { return cExtendedAssignment_1; }
		
		//[aadl2::FeatureGroupType|QCREF]
		public CrossReference getExtendedFeatureGroupTypeCrossReference_1_0() { return cExtendedFeatureGroupTypeCrossReference_1_0; }
		
		//QCREF
		public RuleCall getExtendedFeatureGroupTypeQCREFParserRuleCall_1_0_1() { return cExtendedFeatureGroupTypeQCREFParserRuleCall_1_0_1; }
	}
	public class ComponentCategoryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentCategory");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cAbstractKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cBusKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cDataKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cDeviceKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final Keyword cMemoryKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
		private final Keyword cProcessKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
		private final Keyword cProcessorKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
		private final Keyword cSubprogramKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
		private final Group cGroup_8 = (Group)cAlternatives.eContents().get(8);
		private final Keyword cSubprogramKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cGroupKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Keyword cSystemKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
		private final Group cGroup_10 = (Group)cAlternatives.eContents().get(10);
		private final Keyword cThreadKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cGroupKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Keyword cThreadKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
		private final Group cGroup_12 = (Group)cAlternatives.eContents().get(12);
		private final Keyword cVirtualKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Keyword cBusKeyword_12_1 = (Keyword)cGroup_12.eContents().get(1);
		private final Group cGroup_13 = (Group)cAlternatives.eContents().get(13);
		private final Keyword cVirtualKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Keyword cProcessorKeyword_13_1 = (Keyword)cGroup_13.eContents().get(1);
		
		//ComponentCategory returns aadl2::ComponentCategory: 'abstract' | 'bus'|'data'
		//    | 'device' | 'memory' | 'process' | 'processor' | 'subprogram'
		//    | 'subprogram' 'group' | 'system' | 'thread' 'group'
		//    | 'thread' | 'virtual' 'bus' | 'virtual' 'processor';
		@Override public ParserRule getRule() { return rule; }
		
		//'abstract' | 'bus'|'data'
		//   | 'device' | 'memory' | 'process' | 'processor' | 'subprogram'
		//   | 'subprogram' 'group' | 'system' | 'thread' 'group'
		//   | 'thread' | 'virtual' 'bus' | 'virtual' 'processor'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'abstract'
		public Keyword getAbstractKeyword_0() { return cAbstractKeyword_0; }
		
		//'bus'
		public Keyword getBusKeyword_1() { return cBusKeyword_1; }
		
		//'data'
		public Keyword getDataKeyword_2() { return cDataKeyword_2; }
		
		//'device'
		public Keyword getDeviceKeyword_3() { return cDeviceKeyword_3; }
		
		//'memory'
		public Keyword getMemoryKeyword_4() { return cMemoryKeyword_4; }
		
		//'process'
		public Keyword getProcessKeyword_5() { return cProcessKeyword_5; }
		
		//'processor'
		public Keyword getProcessorKeyword_6() { return cProcessorKeyword_6; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_7() { return cSubprogramKeyword_7; }
		
		//'subprogram' 'group'
		public Group getGroup_8() { return cGroup_8; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_8_0() { return cSubprogramKeyword_8_0; }
		
		//'group'
		public Keyword getGroupKeyword_8_1() { return cGroupKeyword_8_1; }
		
		//'system'
		public Keyword getSystemKeyword_9() { return cSystemKeyword_9; }
		
		//'thread' 'group'
		public Group getGroup_10() { return cGroup_10; }
		
		//'thread'
		public Keyword getThreadKeyword_10_0() { return cThreadKeyword_10_0; }
		
		//'group'
		public Keyword getGroupKeyword_10_1() { return cGroupKeyword_10_1; }
		
		//'thread'
		public Keyword getThreadKeyword_11() { return cThreadKeyword_11; }
		
		//'virtual' 'bus'
		public Group getGroup_12() { return cGroup_12; }
		
		//'virtual'
		public Keyword getVirtualKeyword_12_0() { return cVirtualKeyword_12_0; }
		
		//'bus'
		public Keyword getBusKeyword_12_1() { return cBusKeyword_12_1; }
		
		//'virtual' 'processor'
		public Group getGroup_13() { return cGroup_13; }
		
		//'virtual'
		public Keyword getVirtualKeyword_13_0() { return cVirtualKeyword_13_0; }
		
		//'processor'
		public Keyword getProcessorKeyword_13_1() { return cProcessorKeyword_13_1; }
	}
	public class ClassifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Classifier");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cComponentTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cComponentImplementationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cFeatureGroupTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//Classifier returns aadl2::Classifier:
		//    ComponentType | ComponentImplementation | FeatureGroupType
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ComponentType | ComponentImplementation | FeatureGroupType
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ComponentType
		public RuleCall getComponentTypeParserRuleCall_0() { return cComponentTypeParserRuleCall_0; }
		
		//ComponentImplementation
		public RuleCall getComponentImplementationParserRuleCall_1() { return cComponentImplementationParserRuleCall_1; }
		
		//FeatureGroupType
		public RuleCall getFeatureGroupTypeParserRuleCall_2() { return cFeatureGroupTypeParserRuleCall_2; }
	}
	public class ComponentTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAbstractTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSystemTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cVirtualProcessorTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cSubprogramGroupTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cDataTypeParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cBusTypeParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cVirtualBusTypeParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cMemoryTypeParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cProcessorTypeParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cProcessTypeParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		private final RuleCall cThreadGroupTypeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
		private final RuleCall cThreadTypeParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
		private final RuleCall cDeviceTypeParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
		private final RuleCall cSubprogramTypeParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
		
		//ComponentType returns aadl2::ComponentType:
		//    (AbstractType  | SystemType | VirtualProcessorType
		//        |SubprogramGroupType | DataType
		//        | BusType|         VirtualBusType|MemoryType
		//        | ProcessorType | ProcessType|ThreadGroupType|ThreadType|DeviceType|SubprogramType
		//    )
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(AbstractType  | SystemType | VirtualProcessorType
		//    |SubprogramGroupType | DataType
		//    | BusType|         VirtualBusType|MemoryType
		//    | ProcessorType | ProcessType|ThreadGroupType|ThreadType|DeviceType|SubprogramType
		//)
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//AbstractType
		public RuleCall getAbstractTypeParserRuleCall_0() { return cAbstractTypeParserRuleCall_0; }
		
		//SystemType
		public RuleCall getSystemTypeParserRuleCall_1() { return cSystemTypeParserRuleCall_1; }
		
		//VirtualProcessorType
		public RuleCall getVirtualProcessorTypeParserRuleCall_2() { return cVirtualProcessorTypeParserRuleCall_2; }
		
		//SubprogramGroupType
		public RuleCall getSubprogramGroupTypeParserRuleCall_3() { return cSubprogramGroupTypeParserRuleCall_3; }
		
		//DataType
		public RuleCall getDataTypeParserRuleCall_4() { return cDataTypeParserRuleCall_4; }
		
		//BusType
		public RuleCall getBusTypeParserRuleCall_5() { return cBusTypeParserRuleCall_5; }
		
		//VirtualBusType
		public RuleCall getVirtualBusTypeParserRuleCall_6() { return cVirtualBusTypeParserRuleCall_6; }
		
		//MemoryType
		public RuleCall getMemoryTypeParserRuleCall_7() { return cMemoryTypeParserRuleCall_7; }
		
		//ProcessorType
		public RuleCall getProcessorTypeParserRuleCall_8() { return cProcessorTypeParserRuleCall_8; }
		
		//ProcessType
		public RuleCall getProcessTypeParserRuleCall_9() { return cProcessTypeParserRuleCall_9; }
		
		//ThreadGroupType
		public RuleCall getThreadGroupTypeParserRuleCall_10() { return cThreadGroupTypeParserRuleCall_10; }
		
		//ThreadType
		public RuleCall getThreadTypeParserRuleCall_11() { return cThreadTypeParserRuleCall_11; }
		
		//DeviceType
		public RuleCall getDeviceTypeParserRuleCall_12() { return cDeviceTypeParserRuleCall_12; }
		
		//SubprogramType
		public RuleCall getSubprogramTypeParserRuleCall_13() { return cSubprogramTypeParserRuleCall_13; }
	}
	public class AbstractTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAbstractKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_7.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_8 = (Assignment)cAlternatives_4_1_1.eContents().get(8);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_8_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_8.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//AbstractType returns aadl2::AbstractType:
		//    'abstract' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'abstract' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'abstract'
		public Keyword getAbstractKeyword_0() { return cAbstractKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//   | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_4() { return cOwnedDataAccessAssignment_4_1_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_5() { return cOwnedBusAccessAssignment_4_1_1_5; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_6() { return cOwnedSubprogramAccessAssignment_4_1_1_6; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_7() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_7; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_7_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_7_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_8() { return cOwnedAbstractFeatureAssignment_4_1_1_8; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_8_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_8_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class SystemTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SystemType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSystemKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_0 = (Assignment)cAlternatives_3_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_0.eContents().get(0);
		private final Group cGroup_3_1_1 = (Group)cAlternatives_3_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_3_1_1_0 = (Assignment)cGroup_3_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_1_0_0 = (Keyword)cNoPrototypesAssignment_3_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_1_1 = (Keyword)cGroup_3_1_1.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Alternatives cAlternatives_4_1_0 = (Alternatives)cAlternatives_4_1.eContents().get(0);
		private final Assignment cOwnedDataPortAssignment_4_1_0_0 = (Assignment)cAlternatives_4_1_0.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_0_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_0_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_0_1 = (Assignment)cAlternatives_4_1_0.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_0_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_0_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_0_2 = (Assignment)cAlternatives_4_1_0.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_0_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_0_3 = (Assignment)cAlternatives_4_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_0_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_0_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_0_4 = (Assignment)cAlternatives_4_1_0.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_0_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_0_4.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_0_5 = (Assignment)cAlternatives_4_1_0.eContents().get(5);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_0_5_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_0_5.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_0_6 = (Assignment)cAlternatives_4_1_0.eContents().get(6);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_0_6_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_0_6.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_0_7 = (Assignment)cAlternatives_4_1_0.eContents().get(7);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_0_7_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_0_7.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_0_8 = (Assignment)cAlternatives_4_1_0.eContents().get(8);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_0_8_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_0_8.eContents().get(0);
		private final Group cGroup_4_1_1 = (Group)cAlternatives_4_1.eContents().get(1);
		private final Assignment cNoFeaturesAssignment_4_1_1_0 = (Assignment)cGroup_4_1_1.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_1_0_0 = (Keyword)cNoFeaturesAssignment_4_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_1_1 = (Keyword)cGroup_4_1_1.eContents().get(1);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//SystemType returns aadl2::SystemType:
		//    'system' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('features' (
		//            (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//                | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//            | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//            | ownedAbstractFeature+=AbstractFeature
		//            )+
		//            | (noFeatures?='none' ';')
		//     ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'system' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('features' (
		//        (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//            | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//        | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//        | ownedAbstractFeature+=AbstractFeature
		//        )+
		//        | (noFeatures?='none' ';')
		// ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'system'
		public Keyword getSystemKeyword_0() { return cSystemKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_0() { return cOwnedPrototypeAssignment_3_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_1() { return cGroup_3_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_1_0() { return cNoPrototypesAssignment_3_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_1_0_0() { return cNoPrototypesNoneKeyword_3_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_1_1() { return cSemicolonKeyword_3_1_1_1; }
		
		//('features' (
		//        (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//            | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//        | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//        | ownedAbstractFeature+=AbstractFeature
		//        )+
		//        | (noFeatures?='none' ';')
		// ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//(
		//           (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//               | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//           | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//           | ownedAbstractFeature+=AbstractFeature
		//           )+
		//           | (noFeatures?='none' ';')
		//    )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_0() { return cAlternatives_4_1_0; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_0_0() { return cOwnedDataPortAssignment_4_1_0_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_0_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_0_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_0_1() { return cOwnedEventPortAssignment_4_1_0_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_0_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_0_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_0_2() { return cOwnedEventDataPortAssignment_4_1_0_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_0_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_0_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_0_3() { return cOwnedFeatureGroupAssignment_4_1_0_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_0_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_0_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_0_4() { return cOwnedDataAccessAssignment_4_1_0_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_0_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_0_4_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_0_5() { return cOwnedBusAccessAssignment_4_1_0_5; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_0_5_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_0_5_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_0_6() { return cOwnedSubprogramAccessAssignment_4_1_0_6; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_0_6_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_0_6_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_0_7() { return cOwnedSubprogramGroupAccessAssignment_4_1_0_7; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_0_7_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_0_7_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_0_8() { return cOwnedAbstractFeatureAssignment_4_1_0_8; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_0_8_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_0_8_0; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_1() { return cGroup_4_1_1; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_1_0() { return cNoFeaturesAssignment_4_1_1_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_1_0_0() { return cNoFeaturesNoneKeyword_4_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_1_1() { return cSemicolonKeyword_4_1_1_1; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class ProcessTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//ProcessType returns aadl2::ProcessType:
		//    'process' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'process' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'process'
		public Keyword getProcessKeyword_0() { return cProcessKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_4() { return cOwnedDataAccessAssignment_4_1_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class ThreadGroupTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cThreadGroupKeywordsParserRuleCall_0 = (RuleCall)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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//ThreadGroupType returns aadl2::ThreadGroupType:
		//    ThreadGroupKeywords name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//ThreadGroupKeywords name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//ThreadGroupKeywords
		public RuleCall getThreadGroupKeywordsParserRuleCall_0() { return cThreadGroupKeywordsParserRuleCall_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_4() { return cOwnedDataAccessAssignment_4_1_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class ThreadTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cThreadKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//ThreadType returns aadl2::ThreadType:
		//    'thread' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'thread' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'thread'
		public Keyword getThreadKeyword_0() { return cThreadKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_4() { return cOwnedDataAccessAssignment_4_1_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class SubprogramTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedParameterAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedParameterParameterParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedParameterAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//SubprogramType returns aadl2::SubprogramType:
		//    'subprogram' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedParameter+=Parameter
		public Assignment getOwnedParameterAssignment_4_1_1_0() { return cOwnedParameterAssignment_4_1_1_0; }
		
		//Parameter
		public RuleCall getOwnedParameterParameterParserRuleCall_4_1_1_0_0() { return cOwnedParameterParameterParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_4() { return cOwnedDataAccessAssignment_4_1_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class SubprogramGroupTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cSubprogramGroupKeywordsParserRuleCall_0 = (RuleCall)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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_3.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPropertiesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPropertiesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_7.eContents().get(0);
		private final Keyword cEndKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final RuleCall cIDTerminalRuleCall_9 = (RuleCall)cGroup.eContents().get(9);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//SubprogramGroupType returns aadl2::SubprogramGroupType:
		//    SubprogramGroupKeywords name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedSubprogramAccess+=SubprogramAccess
		//        | ownedFeatureGroup+=FeatureGroup
		//    | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//SubprogramGroupKeywords name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedSubprogramAccess+=SubprogramAccess
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//SubprogramGroupKeywords
		public RuleCall getSubprogramGroupKeywordsParserRuleCall_0() { return cSubprogramGroupKeywordsParserRuleCall_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedSubprogramAccess+=SubprogramAccess
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedSubprogramAccess+=SubprogramAccess
		//       | ownedFeatureGroup+=FeatureGroup
		//   | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedSubprogramAccess+=SubprogramAccess
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_0() { return cOwnedSubprogramAccessAssignment_4_1_1_0; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_0_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_0_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_1() { return cOwnedFeatureGroupAssignment_4_1_1_1; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_1_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_1_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_2() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_2; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_2_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_2_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_3() { return cOwnedAbstractFeatureAssignment_4_1_1_3; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_3_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_3_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'properties'
		public Keyword getPropertiesKeyword_6_0() { return cPropertiesKeyword_6_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1_0() { return cOwnedPropertyAssociationAssignment_6_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_6_1_1_0() { return cNoPropertiesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_6_1_1_0_0() { return cNoPropertiesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_7() { return cOwnedAnnexSubclauseAssignment_7; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0; }
		
		//'end'
		public Keyword getEndKeyword_8() { return cEndKeyword_8; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_9() { return cIDTerminalRuleCall_9; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class ProcessorTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessorKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//ProcessorType returns aadl2::ProcessorType:
		//    'processor' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'processor' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'processor'
		public Keyword getProcessorKeyword_0() { return cProcessorKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_4() { return cOwnedBusAccessAssignment_4_1_1_4; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class DeviceTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DeviceType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDeviceKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//DeviceType returns aadl2::DeviceType:
		//    'device' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'device' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'device'
		public Keyword getDeviceKeyword_0() { return cDeviceKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_4() { return cOwnedBusAccessAssignment_4_1_1_4; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_5() { return cOwnedSubprogramAccessAssignment_4_1_1_5; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_6() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_6; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_6_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_7() { return cOwnedAbstractFeatureAssignment_4_1_1_7; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class MemoryTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.MemoryType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cMemoryKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_5.eContents().get(0);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cAlternatives_5.eContents().get(0);
		private final Assignment cDerivedModesAssignment_5_0_0 = (Assignment)cGroup_5_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0 = (RuleCall)cDerivedModesAssignment_5_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_5_0_1_0 = (RuleCall)cOwnedModeAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
		private final Keyword cModesKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Alternatives cAlternatives_5_1_1 = (Alternatives)cGroup_5_1.eContents().get(1);
		private final Alternatives cAlternatives_5_1_1_0 = (Alternatives)cAlternatives_5_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_1_1_0_0 = (Assignment)cAlternatives_5_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_5_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_5_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_5_1_1_0_1 = (Assignment)cAlternatives_5_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_5_1_1_0_1.eContents().get(0);
		private final Group cGroup_5_1_1_1 = (Group)cAlternatives_5_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_5_1_1_1_0 = (Assignment)cGroup_5_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_5_1_1_1_0_0 = (Keyword)cNoModesAssignment_5_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1_1 = (Keyword)cGroup_5_1_1_1.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPropertiesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPropertiesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_7.eContents().get(0);
		private final Keyword cEndKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final RuleCall cIDTerminalRuleCall_9 = (RuleCall)cGroup.eContents().get(9);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//MemoryType returns aadl2::MemoryType:
		//    'memory' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'memory' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'memory'
		public Keyword getMemoryKeyword_0() { return cMemoryKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//   | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_0() { return cOwnedFeatureGroupAssignment_4_1_1_0; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_1() { return cOwnedBusAccessAssignment_4_1_1_1; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_2() { return cOwnedDataPortAssignment_4_1_1_2; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_2_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_3() { return cOwnedEventPortAssignment_4_1_1_3; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_3_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_3_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_4() { return cOwnedEventDataPortAssignment_4_1_1_4; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_5() { return cOwnedAbstractFeatureAssignment_4_1_1_5; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_5_0_0() { return cDerivedModesAssignment_5_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_5_0_1() { return cOwnedModeAssignment_5_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_0_1_0() { return cOwnedModeModeParserRuleCall_5_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//'modes'
		public Keyword getModesKeyword_5_1_0() { return cModesKeyword_5_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_5_1_1() { return cAlternatives_5_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_5_1_1_0() { return cAlternatives_5_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_5_1_1_0_0() { return cOwnedModeAssignment_5_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_5_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_5_1_1_0_1() { return cOwnedModeTransitionAssignment_5_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_5_1_1_1() { return cGroup_5_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_5_1_1_1_0() { return cNoModesAssignment_5_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_5_1_1_1_0_0() { return cNoModesNoneKeyword_5_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1_1() { return cSemicolonKeyword_5_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'properties'
		public Keyword getPropertiesKeyword_6_0() { return cPropertiesKeyword_6_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1_0() { return cOwnedPropertyAssociationAssignment_6_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_6_1_1_0() { return cNoPropertiesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_6_1_1_0_0() { return cNoPropertiesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_7() { return cOwnedAnnexSubclauseAssignment_7; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0; }
		
		//'end'
		public Keyword getEndKeyword_8() { return cEndKeyword_8; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_9() { return cIDTerminalRuleCall_9; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class BusTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cBusKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_5.eContents().get(0);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cAlternatives_5.eContents().get(0);
		private final Assignment cDerivedModesAssignment_5_0_0 = (Assignment)cGroup_5_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0 = (RuleCall)cDerivedModesAssignment_5_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_5_0_1_0 = (RuleCall)cOwnedModeAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
		private final Keyword cModesKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Alternatives cAlternatives_5_1_1 = (Alternatives)cGroup_5_1.eContents().get(1);
		private final Alternatives cAlternatives_5_1_1_0 = (Alternatives)cAlternatives_5_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_1_1_0_0 = (Assignment)cAlternatives_5_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_5_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_5_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_5_1_1_0_1 = (Assignment)cAlternatives_5_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_5_1_1_0_1.eContents().get(0);
		private final Group cGroup_5_1_1_1 = (Group)cAlternatives_5_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_5_1_1_1_0 = (Assignment)cGroup_5_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_5_1_1_1_0_0 = (Keyword)cNoModesAssignment_5_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1_1 = (Keyword)cGroup_5_1_1_1.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPropertiesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPropertiesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_7.eContents().get(0);
		private final Keyword cEndKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final RuleCall cIDTerminalRuleCall_9 = (RuleCall)cGroup.eContents().get(9);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//BusType returns aadl2::BusType:
		//    'bus' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ ) )?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'bus' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'bus'
		public Keyword getBusKeyword_0() { return cBusKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//   | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_0() { return cOwnedFeatureGroupAssignment_4_1_1_0; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_1() { return cOwnedBusAccessAssignment_4_1_1_1; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_1_0; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_2() { return cOwnedDataPortAssignment_4_1_1_2; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_2_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_3() { return cOwnedEventPortAssignment_4_1_1_3; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_3_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_3_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_4() { return cOwnedEventDataPortAssignment_4_1_1_4; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_4_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_5() { return cOwnedAbstractFeatureAssignment_4_1_1_5; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_5_0; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_5_0_0() { return cDerivedModesAssignment_5_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_5_0_1() { return cOwnedModeAssignment_5_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_0_1_0() { return cOwnedModeModeParserRuleCall_5_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//'modes'
		public Keyword getModesKeyword_5_1_0() { return cModesKeyword_5_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_5_1_1() { return cAlternatives_5_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_5_1_1_0() { return cAlternatives_5_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_5_1_1_0_0() { return cOwnedModeAssignment_5_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_5_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_5_1_1_0_1() { return cOwnedModeTransitionAssignment_5_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_5_1_1_1() { return cGroup_5_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_5_1_1_1_0() { return cNoModesAssignment_5_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_5_1_1_1_0_0() { return cNoModesNoneKeyword_5_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1_1() { return cSemicolonKeyword_5_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'properties'
		public Keyword getPropertiesKeyword_6_0() { return cPropertiesKeyword_6_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1_0() { return cOwnedPropertyAssociationAssignment_6_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_6_1_1_0() { return cNoPropertiesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_6_1_1_0_0() { return cNoPropertiesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_7() { return cOwnedAnnexSubclauseAssignment_7; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0; }
		
		//'end'
		public Keyword getEndKeyword_8() { return cEndKeyword_8; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_9() { return cIDTerminalRuleCall_9; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class VirtualBusTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cVirtualBusKeywordsParserRuleCall_0 = (RuleCall)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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedDataPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_5.eContents().get(0);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cAlternatives_5.eContents().get(0);
		private final Assignment cDerivedModesAssignment_5_0_0 = (Assignment)cGroup_5_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0 = (RuleCall)cDerivedModesAssignment_5_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_5_0_1_0 = (RuleCall)cOwnedModeAssignment_5_0_1.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
		private final Keyword cModesKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Alternatives cAlternatives_5_1_1 = (Alternatives)cGroup_5_1.eContents().get(1);
		private final Alternatives cAlternatives_5_1_1_0 = (Alternatives)cAlternatives_5_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_5_1_1_0_0 = (Assignment)cAlternatives_5_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_5_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_5_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_5_1_1_0_1 = (Assignment)cAlternatives_5_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_5_1_1_0_1.eContents().get(0);
		private final Group cGroup_5_1_1_1 = (Group)cAlternatives_5_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_5_1_1_1_0 = (Assignment)cGroup_5_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_5_1_1_1_0_0 = (Keyword)cNoModesAssignment_5_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1_1 = (Keyword)cGroup_5_1_1_1.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPropertiesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPropertiesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_7.eContents().get(0);
		private final Keyword cEndKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final RuleCall cIDTerminalRuleCall_9 = (RuleCall)cGroup.eContents().get(9);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//VirtualBusType returns aadl2::VirtualBusType:
		//    VirtualBusKeywords name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedFeatureGroup+=FeatureGroup
		//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//    )+ ) )?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//VirtualBusKeywords name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+ ) )?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//VirtualBusKeywords
		public RuleCall getVirtualBusKeywordsParserRuleCall_0() { return cVirtualBusKeywordsParserRuleCall_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedFeatureGroup+=FeatureGroup
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedFeatureGroup+=FeatureGroup
		//   | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//   | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedFeatureGroup+=FeatureGroup
		//| ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_0() { return cOwnedFeatureGroupAssignment_4_1_1_0; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_1() { return cOwnedDataPortAssignment_4_1_1_1; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_1_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_2() { return cOwnedEventPortAssignment_4_1_1_2; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_2_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_2_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_3() { return cOwnedEventDataPortAssignment_4_1_1_3; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_3_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_3_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_4() { return cOwnedAbstractFeatureAssignment_4_1_1_4; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_5() { return cOwnedBusAccessAssignment_4_1_1_5; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_5_0; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_5_0_0() { return cDerivedModesAssignment_5_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_5_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_5_0_1() { return cOwnedModeAssignment_5_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_0_1_0() { return cOwnedModeModeParserRuleCall_5_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//'modes'
		public Keyword getModesKeyword_5_1_0() { return cModesKeyword_5_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_5_1_1() { return cAlternatives_5_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_5_1_1_0() { return cAlternatives_5_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_5_1_1_0_0() { return cOwnedModeAssignment_5_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_5_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_5_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_5_1_1_0_1() { return cOwnedModeTransitionAssignment_5_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_5_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_5_1_1_1() { return cGroup_5_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_5_1_1_1_0() { return cNoModesAssignment_5_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_5_1_1_1_0_0() { return cNoModesNoneKeyword_5_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1_1() { return cSemicolonKeyword_5_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'properties'
		public Keyword getPropertiesKeyword_6_0() { return cPropertiesKeyword_6_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1_0() { return cOwnedPropertyAssociationAssignment_6_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_6_1_1_0() { return cNoPropertiesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_6_1_1_0_0() { return cNoPropertiesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_7() { return cOwnedAnnexSubclauseAssignment_7; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0; }
		
		//'end'
		public Keyword getEndKeyword_8() { return cEndKeyword_8; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_9() { return cIDTerminalRuleCall_9; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class VirtualProcessorTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cVirtualProcessorKeywordsParserRuleCall_0 = (RuleCall)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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_4.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_5 = (Assignment)cAlternatives_4_1_1.eContents().get(5);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_5_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_5.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_6 = (Assignment)cAlternatives_4_1_1.eContents().get(6);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_6_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_6.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_1_7 = (Assignment)cAlternatives_4_1_1.eContents().get(7);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_1_7_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_1_7.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//VirtualProcessorType returns aadl2::VirtualProcessorType:
		//    VirtualProcessorKeywords name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//        | ownedFeatureGroup+=FeatureGroup
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//    )+ ) )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//VirtualProcessorKeywords name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+ ) )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//VirtualProcessorKeywords
		public RuleCall getVirtualProcessorKeywordsParserRuleCall_0() { return cVirtualProcessorKeywordsParserRuleCall_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//       | ownedFeatureGroup+=FeatureGroup
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
		//)+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_1_0() { return cOwnedDataPortAssignment_4_1_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1_1() { return cOwnedEventPortAssignment_4_1_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_1_2() { return cOwnedEventDataPortAssignment_4_1_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_3() { return cOwnedFeatureGroupAssignment_4_1_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_3_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_4() { return cOwnedSubprogramAccessAssignment_4_1_1_4; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_4_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_4_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_5() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_5; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_5_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_5_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_6() { return cOwnedAbstractFeatureAssignment_4_1_1_6; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_6_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_6_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_1_7() { return cOwnedBusAccessAssignment_4_1_1_7; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_1_7_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_1_7_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class DataTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDataKeyword_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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionTypeExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Group cGroup_4_1_0 = (Group)cAlternatives_4_1.eContents().get(0);
		private final Assignment cNoFeaturesAssignment_4_1_0_0 = (Assignment)cGroup_4_1_0.eContents().get(0);
		private final Keyword cNoFeaturesNoneKeyword_4_1_0_0_0 = (Keyword)cNoFeaturesAssignment_4_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_1_0_1 = (Keyword)cGroup_4_1_0.eContents().get(1);
		private final Alternatives cAlternatives_4_1_1 = (Alternatives)cAlternatives_4_1.eContents().get(1);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_1_0 = (Assignment)cAlternatives_4_1_1.eContents().get(0);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_1_0.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_1_1 = (Assignment)cAlternatives_4_1_1.eContents().get(1);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_1_1_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_1_1.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_1_2 = (Assignment)cAlternatives_4_1_1.eContents().get(2);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_2_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_1_2.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_1_3 = (Assignment)cAlternatives_4_1_1.eContents().get(3);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_3_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_1_3.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_1_4 = (Assignment)cAlternatives_4_1_1.eContents().get(4);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_1_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cFlowsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Alternatives cAlternatives_5_1 = (Alternatives)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSpecificationAssignment_5_1_0 = (Assignment)cAlternatives_5_1.eContents().get(0);
		private final RuleCall cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0 = (RuleCall)cOwnedFlowSpecificationAssignment_5_1_0.eContents().get(0);
		private final Group cGroup_5_1_1 = (Group)cAlternatives_5_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_5_1_1_0 = (Assignment)cGroup_5_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_5_1_1_0_0 = (Keyword)cNoFlowsAssignment_5_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_5_1_1_1 = (Keyword)cGroup_5_1_1.eContents().get(1);
		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
		private final Group cGroup_6_0 = (Group)cAlternatives_6.eContents().get(0);
		private final Assignment cDerivedModesAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
		private final RuleCall cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0 = (RuleCall)cDerivedModesAssignment_6_0_0.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
		private final RuleCall cOwnedModeModeParserRuleCall_6_0_1_0 = (RuleCall)cOwnedModeAssignment_6_0_1.eContents().get(0);
		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
		private final Keyword cModesKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
		private final Alternatives cAlternatives_6_1_1 = (Alternatives)cGroup_6_1.eContents().get(1);
		private final Alternatives cAlternatives_6_1_1_0 = (Alternatives)cAlternatives_6_1_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_6_1_1_0_0 = (Assignment)cAlternatives_6_1_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_6_1_1_0_0_0 = (RuleCall)cOwnedModeAssignment_6_1_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_6_1_1_0_1 = (Assignment)cAlternatives_6_1_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_6_1_1_0_1.eContents().get(0);
		private final Group cGroup_6_1_1_1 = (Group)cAlternatives_6_1_1.eContents().get(1);
		private final Assignment cNoModesAssignment_6_1_1_1_0 = (Assignment)cGroup_6_1_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_6_1_1_1_0_0 = (Keyword)cNoModesAssignment_6_1_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1_1 = (Keyword)cGroup_6_1_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPropertiesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPropertiesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_8.eContents().get(0);
		private final Keyword cEndKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final RuleCall cIDTerminalRuleCall_10 = (RuleCall)cGroup.eContents().get(10);
		private final Keyword cSemicolonKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//DataType returns aadl2::DataType:
		//    'data' name=ID
		//    (ownedExtension=TypeExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' ((noFeatures?='none' ';')
		//    | (
		//    ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    )+ )
		//     )?
		//    ('flows'
		//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//    ((derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		//    |
		//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//    )?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//'data' name=ID
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' ((noFeatures?='none' ';')
		//| (
		//ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ )
		// )?
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'data'
		public Keyword getDataKeyword_0() { return cDataKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(ownedExtension=TypeExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=TypeExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//TypeExtension
		public RuleCall getOwnedExtensionTypeExtensionParserRuleCall_2_0_0() { return cOwnedExtensionTypeExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' ((noFeatures?='none' ';')
		//| (
		//ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//)+ )
		// )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//((noFeatures?='none' ';')
		//   | (
		//   ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//(noFeatures?='none' ';')
		public Group getGroup_4_1_0() { return cGroup_4_1_0; }
		
		//noFeatures?='none'
		public Assignment getNoFeaturesAssignment_4_1_0_0() { return cNoFeaturesAssignment_4_1_0_0; }
		
		//'none'
		public Keyword getNoFeaturesNoneKeyword_4_1_0_0_0() { return cNoFeaturesNoneKeyword_4_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_4_1_0_1() { return cSemicolonKeyword_4_1_0_1; }
		
		//(
		//   ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   )+
		public Alternatives getAlternatives_4_1_1() { return cAlternatives_4_1_1; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_1_0() { return cOwnedFeatureGroupAssignment_4_1_1_0; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_1_0_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_1_1() { return cOwnedDataAccessAssignment_4_1_1_1; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_1_1_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_1_1_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_1_2() { return cOwnedSubprogramAccessAssignment_4_1_1_2; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_2_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_1_2_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_1_3() { return cOwnedSubprogramGroupAccessAssignment_4_1_1_3; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_3_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_1_3_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_1_4() { return cOwnedAbstractFeatureAssignment_4_1_1_4; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_1_4_0; }
		
		//('flows'
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
		public Group getGroup_5() { return cGroup_5; }
		
		//'flows'
		public Keyword getFlowsKeyword_5_0() { return cFlowsKeyword_5_0; }
		
		//((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';'))
		public Alternatives getAlternatives_5_1() { return cAlternatives_5_1; }
		
		//(ownedFlowSpecification+=FlowSpecification)+
		public Assignment getOwnedFlowSpecificationAssignment_5_1_0() { return cOwnedFlowSpecificationAssignment_5_1_0; }
		
		//FlowSpecification
		public RuleCall getOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0() { return cOwnedFlowSpecificationFlowSpecificationParserRuleCall_5_1_0_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_5_1_1_0() { return cNoFlowsAssignment_5_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_5_1_1_0_0() { return cNoFlowsNoneKeyword_5_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_5_1_1_1() { return cSemicolonKeyword_5_1_1_1; }
		
		//((derivedModes?=RequiresModesKeywords
		// ((ownedMode+=Mode)+))
		//|
		// ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		//)?
		public Alternatives getAlternatives_6() { return cAlternatives_6; }
		
		//(derivedModes?=RequiresModesKeywords
		//     ((ownedMode+=Mode)+))
		public Group getGroup_6_0() { return cGroup_6_0; }
		
		//derivedModes?=RequiresModesKeywords
		public Assignment getDerivedModesAssignment_6_0_0() { return cDerivedModesAssignment_6_0_0; }
		
		//RequiresModesKeywords
		public RuleCall getDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0() { return cDerivedModesRequiresModesKeywordsParserRuleCall_6_0_0_0; }
		
		//((ownedMode+=Mode)+)
		public Assignment getOwnedModeAssignment_6_0_1() { return cOwnedModeAssignment_6_0_1; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_0_1_0() { return cOwnedModeModeParserRuleCall_6_0_1_0; }
		
		//('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
		public Group getGroup_6_1() { return cGroup_6_1; }
		
		//'modes'
		public Keyword getModesKeyword_6_1_0() { return cModesKeyword_6_1_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';'))
		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_6_1_1_0() { return cAlternatives_6_1_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_6_1_1_0_0() { return cOwnedModeAssignment_6_1_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_6_1_1_0_0_0() { return cOwnedModeModeParserRuleCall_6_1_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_6_1_1_0_1() { return cOwnedModeTransitionAssignment_6_1_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_6_1_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_6_1_1_1() { return cGroup_6_1_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_6_1_1_1_0() { return cNoModesAssignment_6_1_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_6_1_1_1_0_0() { return cNoModesNoneKeyword_6_1_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1_1() { return cSemicolonKeyword_6_1_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'properties'
		public Keyword getPropertiesKeyword_7_0() { return cPropertiesKeyword_7_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1_0() { return cOwnedPropertyAssociationAssignment_7_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_7_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_7_1_1_0() { return cNoPropertiesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_7_1_1_0_0() { return cNoPropertiesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_8() { return cOwnedAnnexSubclauseAssignment_8; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_8_0; }
		
		//'end'
		public Keyword getEndKeyword_9() { return cEndKeyword_9; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_10() { return cIDTerminalRuleCall_10; }
		
		//';'
		public Keyword getSemicolonKeyword_11() { return cSemicolonKeyword_11; }
	}
	public class ComponentImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentImplementation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAbstractImplementationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSystemImplementationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cProcessorImplementationParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cProcessImplementationParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cThreadGroupImplementationParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cThreadImplementationParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cDeviceImplementationParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cBusImplementationParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cVirtualProcessorImplementationParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cVirtualBusImplementationParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		private final RuleCall cMemoryImplementationParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
		private final RuleCall cSubprogramImplementationParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
		private final RuleCall cSubprogramGroupImplementationParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
		private final RuleCall cDataImplementationParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
		
		//// Component Implementations:
		//ComponentImplementation returns aadl2::ComponentImplementation:
		//    (AbstractImplementation | SystemImplementation | ProcessorImplementation| ProcessImplementation|ThreadGroupImplementation|ThreadImplementation|DeviceImplementation|BusImplementation|
		//        VirtualProcessorImplementation| VirtualBusImplementation|MemoryImplementation|SubprogramImplementation|SubprogramGroupImplementation|DataImplementation
		//    )
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(AbstractImplementation | SystemImplementation | ProcessorImplementation| ProcessImplementation|ThreadGroupImplementation|ThreadImplementation|DeviceImplementation|BusImplementation|
		//    VirtualProcessorImplementation| VirtualBusImplementation|MemoryImplementation|SubprogramImplementation|SubprogramGroupImplementation|DataImplementation
		//)
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//AbstractImplementation
		public RuleCall getAbstractImplementationParserRuleCall_0() { return cAbstractImplementationParserRuleCall_0; }
		
		//SystemImplementation
		public RuleCall getSystemImplementationParserRuleCall_1() { return cSystemImplementationParserRuleCall_1; }
		
		//ProcessorImplementation
		public RuleCall getProcessorImplementationParserRuleCall_2() { return cProcessorImplementationParserRuleCall_2; }
		
		//ProcessImplementation
		public RuleCall getProcessImplementationParserRuleCall_3() { return cProcessImplementationParserRuleCall_3; }
		
		//ThreadGroupImplementation
		public RuleCall getThreadGroupImplementationParserRuleCall_4() { return cThreadGroupImplementationParserRuleCall_4; }
		
		//ThreadImplementation
		public RuleCall getThreadImplementationParserRuleCall_5() { return cThreadImplementationParserRuleCall_5; }
		
		//DeviceImplementation
		public RuleCall getDeviceImplementationParserRuleCall_6() { return cDeviceImplementationParserRuleCall_6; }
		
		//BusImplementation
		public RuleCall getBusImplementationParserRuleCall_7() { return cBusImplementationParserRuleCall_7; }
		
		//VirtualProcessorImplementation
		public RuleCall getVirtualProcessorImplementationParserRuleCall_8() { return cVirtualProcessorImplementationParserRuleCall_8; }
		
		//VirtualBusImplementation
		public RuleCall getVirtualBusImplementationParserRuleCall_9() { return cVirtualBusImplementationParserRuleCall_9; }
		
		//MemoryImplementation
		public RuleCall getMemoryImplementationParserRuleCall_10() { return cMemoryImplementationParserRuleCall_10; }
		
		//SubprogramImplementation
		public RuleCall getSubprogramImplementationParserRuleCall_11() { return cSubprogramImplementationParserRuleCall_11; }
		
		//SubprogramGroupImplementation
		public RuleCall getSubprogramGroupImplementationParserRuleCall_12() { return cSubprogramGroupImplementationParserRuleCall_12; }
		
		//DataImplementation
		public RuleCall getDataImplementationParserRuleCall_13() { return cDataImplementationParserRuleCall_13; }
	}
	public class RealizationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Realization");
		private final Assignment cImplementedAssignment = (Assignment)rule.eContents().get(1);
		private final CrossReference cImplementedComponentTypeCrossReference_0 = (CrossReference)cImplementedAssignment.eContents().get(0);
		private final RuleCall cImplementedComponentTypeIDTerminalRuleCall_0_1 = (RuleCall)cImplementedComponentTypeCrossReference_0.eContents().get(1);
		
		//Realization returns aadl2::Realization:
		//    implemented=[aadl2::ComponentType|ID];
		@Override public ParserRule getRule() { return rule; }
		
		//implemented=[aadl2::ComponentType|ID]
		public Assignment getImplementedAssignment() { return cImplementedAssignment; }
		
		//[aadl2::ComponentType|ID]
		public CrossReference getImplementedComponentTypeCrossReference_0() { return cImplementedComponentTypeCrossReference_0; }
		
		//ID
		public RuleCall getImplementedComponentTypeIDTerminalRuleCall_0_1() { return cImplementedComponentTypeIDTerminalRuleCall_0_1; }
	}
	public class AbstractImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cAbstractImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedSystemSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedSystemSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedThreadSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedThreadSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Assignment cOwnedThreadGroupSubcomponentAssignment_7_1_0_4 = (Assignment)cAlternatives_7_1_0.eContents().get(4);
		private final RuleCall cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_4_0 = (RuleCall)cOwnedThreadGroupSubcomponentAssignment_7_1_0_4.eContents().get(0);
		private final Assignment cOwnedProcessSubcomponentAssignment_7_1_0_5 = (Assignment)cAlternatives_7_1_0.eContents().get(5);
		private final RuleCall cOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_5_0 = (RuleCall)cOwnedProcessSubcomponentAssignment_7_1_0_5.eContents().get(0);
		private final Assignment cOwnedProcessorSubcomponentAssignment_7_1_0_6 = (Assignment)cAlternatives_7_1_0.eContents().get(6);
		private final RuleCall cOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_6_0 = (RuleCall)cOwnedProcessorSubcomponentAssignment_7_1_0_6.eContents().get(0);
		private final Assignment cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_7 = (Assignment)cAlternatives_7_1_0.eContents().get(7);
		private final RuleCall cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_7_0 = (RuleCall)cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_7.eContents().get(0);
		private final Assignment cOwnedMemorySubcomponentAssignment_7_1_0_8 = (Assignment)cAlternatives_7_1_0.eContents().get(8);
		private final RuleCall cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_8_0 = (RuleCall)cOwnedMemorySubcomponentAssignment_7_1_0_8.eContents().get(0);
		private final Assignment cOwnedDeviceSubcomponentAssignment_7_1_0_9 = (Assignment)cAlternatives_7_1_0.eContents().get(9);
		private final RuleCall cOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_9_0 = (RuleCall)cOwnedDeviceSubcomponentAssignment_7_1_0_9.eContents().get(0);
		private final Assignment cOwnedBusSubcomponentAssignment_7_1_0_10 = (Assignment)cAlternatives_7_1_0.eContents().get(10);
		private final RuleCall cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_10_0 = (RuleCall)cOwnedBusSubcomponentAssignment_7_1_0_10.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_11 = (Assignment)cAlternatives_7_1_0.eContents().get(11);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_11_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_11.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_12 = (Assignment)cAlternatives_7_1_0.eContents().get(12);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_12_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_12.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_13 = (Assignment)cAlternatives_7_1_0.eContents().get(13);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_13_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_13.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cCallsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Assignment cOwnedSubprogramCallSequenceAssignment_10_1_0 = (Assignment)cAlternatives_10_1.eContents().get(0);
		private final RuleCall cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0 = (RuleCall)cOwnedSubprogramCallSequenceAssignment_10_1_0.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoCallsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoCallsNoneKeyword_10_1_1_0_0 = (Keyword)cNoCallsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cConnectionsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_11_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_11_1_0_2 = (Assignment)cAlternatives_11_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_11_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_11_1_0_3 = (Assignment)cAlternatives_11_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_11_1_0_3.eContents().get(0);
		private final Assignment cOwnedParameterConnectionAssignment_11_1_0_4 = (Assignment)cAlternatives_11_1_0.eContents().get(4);
		private final RuleCall cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0 = (RuleCall)cOwnedParameterConnectionAssignment_11_1_0_4.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_11_1_1_0_0 = (Keyword)cNoConnectionsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cFlowsKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_12_1_1_0_0 = (Keyword)cNoFlowsAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cModesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Alternatives cAlternatives_13_1_0 = (Alternatives)cAlternatives_13_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_13_1_0_0 = (Assignment)cAlternatives_13_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_13_1_0_0_0 = (RuleCall)cOwnedModeAssignment_13_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_13_1_0_1 = (Assignment)cAlternatives_13_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_13_1_0_1.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoModesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_13_1_1_0_0 = (Keyword)cNoModesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cPropertiesKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Alternatives cAlternatives_14_1 = (Alternatives)cGroup_14.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_14_1_0 = (Assignment)cAlternatives_14_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_14_1_0.eContents().get(0);
		private final Group cGroup_14_1_1 = (Group)cAlternatives_14_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_14_1_1_0 = (Assignment)cGroup_14_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_14_1_1_0_0 = (Keyword)cNoPropertiesAssignment_14_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_14_1_1_1 = (Keyword)cGroup_14_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_15 = (Assignment)cGroup.eContents().get(15);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_15.eContents().get(0);
		private final Keyword cEndKeyword_16 = (Keyword)cGroup.eContents().get(16);
		private final RuleCall cFULLINAMEParserRuleCall_17 = (RuleCall)cGroup.eContents().get(17);
		private final Keyword cSemicolonKeyword_18 = (Keyword)cGroup.eContents().get(18);
		
		//AbstractImplementation returns aadl2::AbstractImplementation:
		//    AbstractImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedSystemSubcomponent+=SystemSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		//      | ownedProcessSubcomponent+=ProcessSubcomponent
		//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('calls'
		//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//    | noCalls?='none' ';'
		//    )
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//AbstractImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//| noCalls?='none' ';'
		//)
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//AbstractImplementationKeywords
		public RuleCall getAbstractImplementationKeywordsParserRuleCall_0() { return cAbstractImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedSystemSubcomponent+=SystemSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		//      | ownedProcessSubcomponent+=ProcessSubcomponent
		//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedSystemSubcomponent+=SystemSubcomponent
		public Assignment getOwnedSystemSubcomponentAssignment_7_1_0_0() { return cOwnedSystemSubcomponentAssignment_7_1_0_0; }
		
		//SystemSubcomponent
		public RuleCall getOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_1() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_1; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedThreadSubcomponent+=ThreadSubcomponent
		public Assignment getOwnedThreadSubcomponentAssignment_7_1_0_3() { return cOwnedThreadSubcomponentAssignment_7_1_0_3; }
		
		//ThreadSubcomponent
		public RuleCall getOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		public Assignment getOwnedThreadGroupSubcomponentAssignment_7_1_0_4() { return cOwnedThreadGroupSubcomponentAssignment_7_1_0_4; }
		
		//ThreadGroupSubcomponent
		public RuleCall getOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_4_0() { return cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_4_0; }
		
		//ownedProcessSubcomponent+=ProcessSubcomponent
		public Assignment getOwnedProcessSubcomponentAssignment_7_1_0_5() { return cOwnedProcessSubcomponentAssignment_7_1_0_5; }
		
		//ProcessSubcomponent
		public RuleCall getOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_5_0() { return cOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_5_0; }
		
		//ownedProcessorSubcomponent+=ProcessorSubcomponent
		public Assignment getOwnedProcessorSubcomponentAssignment_7_1_0_6() { return cOwnedProcessorSubcomponentAssignment_7_1_0_6; }
		
		//ProcessorSubcomponent
		public RuleCall getOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_6_0() { return cOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_6_0; }
		
		//ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		public Assignment getOwnedVirtualProcessorSubcomponentAssignment_7_1_0_7() { return cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_7; }
		
		//VirtualProcessorSubcomponent
		public RuleCall getOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_7_0() { return cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_7_0; }
		
		//ownedMemorySubcomponent+=MemorySubcomponent
		public Assignment getOwnedMemorySubcomponentAssignment_7_1_0_8() { return cOwnedMemorySubcomponentAssignment_7_1_0_8; }
		
		//MemorySubcomponent
		public RuleCall getOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_8_0() { return cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_8_0; }
		
		//ownedDeviceSubcomponent+=DeviceSubcomponent
		public Assignment getOwnedDeviceSubcomponentAssignment_7_1_0_9() { return cOwnedDeviceSubcomponentAssignment_7_1_0_9; }
		
		//DeviceSubcomponent
		public RuleCall getOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_9_0() { return cOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_9_0; }
		
		//ownedBusSubcomponent+=BusSubcomponent
		public Assignment getOwnedBusSubcomponentAssignment_7_1_0_10() { return cOwnedBusSubcomponentAssignment_7_1_0_10; }
		
		//BusSubcomponent
		public RuleCall getOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_10_0() { return cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_10_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_11() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_11; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_11_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_11_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_12() { return cOwnedDataSubcomponentAssignment_7_1_0_12; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_12_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_12_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_13() { return cOwnedAbstractSubcomponentAssignment_7_1_0_13; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_13_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_13_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//| noCalls?='none' ';'
		//)
		//)?
		public Group getGroup_10() { return cGroup_10; }
		
		//'calls'
		public Keyword getCallsKeyword_10_0() { return cCallsKeyword_10_0; }
		
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//| noCalls?='none' ';'
		//)
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedSubprogramCallSequence+=SubprogramCallSequence)+
		public Assignment getOwnedSubprogramCallSequenceAssignment_10_1_0() { return cOwnedSubprogramCallSequenceAssignment_10_1_0; }
		
		//SubprogramCallSequence
		public RuleCall getOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0() { return cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0; }
		
		//noCalls?='none' ';'
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noCalls?='none'
		public Assignment getNoCallsAssignment_10_1_1_0() { return cNoCallsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoCallsNoneKeyword_10_1_1_0_0() { return cNoCallsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'connections'
		public Keyword getConnectionsKeyword_11_0() { return cConnectionsKeyword_11_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_11_1_0_0() { return cOwnedPortConnectionAssignment_11_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_11_1_0_1() { return cOwnedAccessConnectionAssignment_11_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_11_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_11_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_11_1_0_3() { return cOwnedFeatureConnectionAssignment_11_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0; }
		
		//ownedParameterConnection+=ParameterConnection
		public Assignment getOwnedParameterConnectionAssignment_11_1_0_4() { return cOwnedParameterConnectionAssignment_11_1_0_4; }
		
		//ParameterConnection
		public RuleCall getOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0() { return cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_11_1_1_0() { return cNoConnectionsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_11_1_1_0_0() { return cNoConnectionsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'flows'
		public Keyword getFlowsKeyword_12_0() { return cFlowsKeyword_12_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_12_1_0_0() { return cOwnedFlowImplementationAssignment_12_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_12_1_0_1() { return cOwnedEndToEndFlowAssignment_12_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_12_1_1_0() { return cNoFlowsAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_12_1_1_0_0() { return cNoFlowsNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'modes'
		public Keyword getModesKeyword_13_0() { return cModesKeyword_13_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_13_1_0() { return cAlternatives_13_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_13_1_0_0() { return cOwnedModeAssignment_13_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_13_1_0_0_0() { return cOwnedModeModeParserRuleCall_13_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_13_1_0_1() { return cOwnedModeTransitionAssignment_13_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_13_1_1_0() { return cNoModesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_13_1_1_0_0() { return cNoModesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_14() { return cGroup_14; }
		
		//'properties'
		public Keyword getPropertiesKeyword_14_0() { return cPropertiesKeyword_14_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_14_1() { return cAlternatives_14_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_14_1_0() { return cOwnedPropertyAssociationAssignment_14_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_14_1_1() { return cGroup_14_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_14_1_1_0() { return cNoPropertiesAssignment_14_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_14_1_1_0_0() { return cNoPropertiesNoneKeyword_14_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_14_1_1_1() { return cSemicolonKeyword_14_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_15() { return cOwnedAnnexSubclauseAssignment_15; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0; }
		
		//'end'
		public Keyword getEndKeyword_16() { return cEndKeyword_16; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_17() { return cFULLINAMEParserRuleCall_17; }
		
		//';'
		public Keyword getSemicolonKeyword_18() { return cSemicolonKeyword_18; }
	}
	public class SystemImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SystemImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cSystemImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedSystemSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedSystemSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedProcessSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedProcessSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Assignment cOwnedProcessorSubcomponentAssignment_7_1_0_4 = (Assignment)cAlternatives_7_1_0.eContents().get(4);
		private final RuleCall cOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_4_0 = (RuleCall)cOwnedProcessorSubcomponentAssignment_7_1_0_4.eContents().get(0);
		private final Assignment cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_5 = (Assignment)cAlternatives_7_1_0.eContents().get(5);
		private final RuleCall cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_5_0 = (RuleCall)cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_5.eContents().get(0);
		private final Assignment cOwnedMemorySubcomponentAssignment_7_1_0_6 = (Assignment)cAlternatives_7_1_0.eContents().get(6);
		private final RuleCall cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_6_0 = (RuleCall)cOwnedMemorySubcomponentAssignment_7_1_0_6.eContents().get(0);
		private final Assignment cOwnedDeviceSubcomponentAssignment_7_1_0_7 = (Assignment)cAlternatives_7_1_0.eContents().get(7);
		private final RuleCall cOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_7_0 = (RuleCall)cOwnedDeviceSubcomponentAssignment_7_1_0_7.eContents().get(0);
		private final Assignment cOwnedBusSubcomponentAssignment_7_1_0_8 = (Assignment)cAlternatives_7_1_0.eContents().get(8);
		private final RuleCall cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_8_0 = (RuleCall)cOwnedBusSubcomponentAssignment_7_1_0_8.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_9 = (Assignment)cAlternatives_7_1_0.eContents().get(9);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_9_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_9.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_10 = (Assignment)cAlternatives_7_1_0.eContents().get(10);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_10_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_10.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_11 = (Assignment)cAlternatives_7_1_0.eContents().get(11);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_11_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_11.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_3 = (Assignment)cAlternatives_10_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_3.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//SystemImplementation returns aadl2::SystemImplementation:
		//    SystemImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ( 'subcomponents'
		//      ((ownedSystemSubcomponent+=SystemSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      | ownedProcessSubcomponent+=ProcessSubcomponent
		//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//SystemImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//( 'subcomponents'
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//SystemImplementationKeywords
		public RuleCall getSystemImplementationKeywordsParserRuleCall_0() { return cSystemImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//( 'subcomponents'
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedSystemSubcomponent+=SystemSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  | ownedProcessSubcomponent+=ProcessSubcomponent
		//  |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedSystemSubcomponent+=SystemSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      | ownedProcessSubcomponent+=ProcessSubcomponent
		//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedSystemSubcomponent+=SystemSubcomponent
		public Assignment getOwnedSystemSubcomponentAssignment_7_1_0_0() { return cOwnedSystemSubcomponentAssignment_7_1_0_0; }
		
		//SystemSubcomponent
		public RuleCall getOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedSystemSubcomponentSystemSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_1() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_1; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedProcessSubcomponent+=ProcessSubcomponent
		public Assignment getOwnedProcessSubcomponentAssignment_7_1_0_3() { return cOwnedProcessSubcomponentAssignment_7_1_0_3; }
		
		//ProcessSubcomponent
		public RuleCall getOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedProcessSubcomponentProcessSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//ownedProcessorSubcomponent+=ProcessorSubcomponent
		public Assignment getOwnedProcessorSubcomponentAssignment_7_1_0_4() { return cOwnedProcessorSubcomponentAssignment_7_1_0_4; }
		
		//ProcessorSubcomponent
		public RuleCall getOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_4_0() { return cOwnedProcessorSubcomponentProcessorSubcomponentParserRuleCall_7_1_0_4_0; }
		
		//ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		public Assignment getOwnedVirtualProcessorSubcomponentAssignment_7_1_0_5() { return cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_5; }
		
		//VirtualProcessorSubcomponent
		public RuleCall getOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_5_0() { return cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_5_0; }
		
		//ownedMemorySubcomponent+=MemorySubcomponent
		public Assignment getOwnedMemorySubcomponentAssignment_7_1_0_6() { return cOwnedMemorySubcomponentAssignment_7_1_0_6; }
		
		//MemorySubcomponent
		public RuleCall getOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_6_0() { return cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_6_0; }
		
		//ownedDeviceSubcomponent+=DeviceSubcomponent
		public Assignment getOwnedDeviceSubcomponentAssignment_7_1_0_7() { return cOwnedDeviceSubcomponentAssignment_7_1_0_7; }
		
		//DeviceSubcomponent
		public RuleCall getOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_7_0() { return cOwnedDeviceSubcomponentDeviceSubcomponentParserRuleCall_7_1_0_7_0; }
		
		//ownedBusSubcomponent+=BusSubcomponent
		public Assignment getOwnedBusSubcomponentAssignment_7_1_0_8() { return cOwnedBusSubcomponentAssignment_7_1_0_8; }
		
		//BusSubcomponent
		public RuleCall getOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_8_0() { return cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_8_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_9() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_9; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_9_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_9_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_10() { return cOwnedDataSubcomponentAssignment_7_1_0_10; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_10_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_10_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_11() { return cOwnedAbstractSubcomponentAssignment_7_1_0_11; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_11_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_11_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_10_1_0_0() { return cOwnedPortConnectionAssignment_10_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_1() { return cOwnedAccessConnectionAssignment_10_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_3() { return cOwnedFeatureConnectionAssignment_10_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class ProcessImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cProcessImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedThreadGroupSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedThreadGroupSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedThreadSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedThreadSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_4 = (Assignment)cAlternatives_7_1_0.eContents().get(4);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_4.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_5 = (Assignment)cAlternatives_7_1_0.eContents().get(5);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_5.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_3 = (Assignment)cAlternatives_10_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_3.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//ProcessImplementation returns aadl2::ProcessImplementation:
		//    ProcessImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//ProcessImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//ProcessImplementationKeywords
		public RuleCall getProcessImplementationKeywordsParserRuleCall_0() { return cProcessImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		public Assignment getOwnedThreadGroupSubcomponentAssignment_7_1_0_0() { return cOwnedThreadGroupSubcomponentAssignment_7_1_0_0; }
		
		//ThreadGroupSubcomponent
		public RuleCall getOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedThreadSubcomponent+=ThreadSubcomponent
		public Assignment getOwnedThreadSubcomponentAssignment_7_1_0_1() { return cOwnedThreadSubcomponentAssignment_7_1_0_1; }
		
		//ThreadSubcomponent
		public RuleCall getOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_2() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_2; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_4() { return cOwnedDataSubcomponentAssignment_7_1_0_4; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_5() { return cOwnedAbstractSubcomponentAssignment_7_1_0_5; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_10_1_0_0() { return cOwnedPortConnectionAssignment_10_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_1() { return cOwnedAccessConnectionAssignment_10_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_3() { return cOwnedFeatureConnectionAssignment_10_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class ThreadGroupImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cThreadGroupImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedThreadGroupSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedThreadGroupSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedThreadSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedThreadSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_4 = (Assignment)cAlternatives_7_1_0.eContents().get(4);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_4.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_5 = (Assignment)cAlternatives_7_1_0.eContents().get(5);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_5.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_3 = (Assignment)cAlternatives_10_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_3.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//ThreadGroupImplementation returns aadl2::ThreadGroupImplementation:
		//    ThreadGroupImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//ThreadGroupImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//ThreadGroupImplementationKeywords
		public RuleCall getThreadGroupImplementationKeywordsParserRuleCall_0() { return cThreadGroupImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
		public Assignment getOwnedThreadGroupSubcomponentAssignment_7_1_0_0() { return cOwnedThreadGroupSubcomponentAssignment_7_1_0_0; }
		
		//ThreadGroupSubcomponent
		public RuleCall getOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedThreadGroupSubcomponentThreadGroupSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedThreadSubcomponent+=ThreadSubcomponent
		public Assignment getOwnedThreadSubcomponentAssignment_7_1_0_1() { return cOwnedThreadSubcomponentAssignment_7_1_0_1; }
		
		//ThreadSubcomponent
		public RuleCall getOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedThreadSubcomponentThreadSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_2() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_2; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_3; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_4() { return cOwnedDataSubcomponentAssignment_7_1_0_4; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_4_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_5() { return cOwnedAbstractSubcomponentAssignment_7_1_0_5; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_5_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_10_1_0_0() { return cOwnedPortConnectionAssignment_10_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_1() { return cOwnedAccessConnectionAssignment_10_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_3() { return cOwnedFeatureConnectionAssignment_10_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class ThreadImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cThreadImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cCallsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Assignment cOwnedSubprogramCallSequenceAssignment_10_1_0 = (Assignment)cAlternatives_10_1.eContents().get(0);
		private final RuleCall cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0 = (RuleCall)cOwnedSubprogramCallSequenceAssignment_10_1_0.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoCallsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoCallsNoneKeyword_10_1_1_0_0 = (Keyword)cNoCallsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cConnectionsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_11_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_11_1_0_2 = (Assignment)cAlternatives_11_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_11_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_11_1_0_3 = (Assignment)cAlternatives_11_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_11_1_0_3.eContents().get(0);
		private final Assignment cOwnedParameterConnectionAssignment_11_1_0_4 = (Assignment)cAlternatives_11_1_0.eContents().get(4);
		private final RuleCall cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0 = (RuleCall)cOwnedParameterConnectionAssignment_11_1_0_4.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_11_1_1_0_0 = (Keyword)cNoConnectionsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cFlowsKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_12_1_1_0_0 = (Keyword)cNoFlowsAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cModesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Alternatives cAlternatives_13_1_0 = (Alternatives)cAlternatives_13_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_13_1_0_0 = (Assignment)cAlternatives_13_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_13_1_0_0_0 = (RuleCall)cOwnedModeAssignment_13_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_13_1_0_1 = (Assignment)cAlternatives_13_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_13_1_0_1.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoModesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_13_1_1_0_0 = (Keyword)cNoModesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cPropertiesKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Alternatives cAlternatives_14_1 = (Alternatives)cGroup_14.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_14_1_0 = (Assignment)cAlternatives_14_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_14_1_0.eContents().get(0);
		private final Group cGroup_14_1_1 = (Group)cAlternatives_14_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_14_1_1_0 = (Assignment)cGroup_14_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_14_1_1_0_0 = (Keyword)cNoPropertiesAssignment_14_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_14_1_1_1 = (Keyword)cGroup_14_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_15 = (Assignment)cGroup.eContents().get(15);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_15.eContents().get(0);
		private final Keyword cEndKeyword_16 = (Keyword)cGroup.eContents().get(16);
		private final RuleCall cFULLINAMEParserRuleCall_17 = (RuleCall)cGroup.eContents().get(17);
		private final Keyword cSemicolonKeyword_18 = (Keyword)cGroup.eContents().get(18);
		
		//ThreadImplementation returns aadl2::ThreadImplementation:
		//    ThreadImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('calls'
		//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//     | noCalls?='none' ';'
		//    ))?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//ThreadImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//))?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//ThreadImplementationKeywords
		public RuleCall getThreadImplementationKeywordsParserRuleCall_0() { return cThreadImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_0() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_0; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_1() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_1; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_2() { return cOwnedDataSubcomponentAssignment_7_1_0_2; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_3() { return cOwnedAbstractSubcomponentAssignment_7_1_0_3; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'calls'
		public Keyword getCallsKeyword_10_0() { return cCallsKeyword_10_0; }
		
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//)
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedSubprogramCallSequence+=SubprogramCallSequence)+
		public Assignment getOwnedSubprogramCallSequenceAssignment_10_1_0() { return cOwnedSubprogramCallSequenceAssignment_10_1_0; }
		
		//SubprogramCallSequence
		public RuleCall getOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0() { return cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0; }
		
		//noCalls?='none' ';'
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noCalls?='none'
		public Assignment getNoCallsAssignment_10_1_1_0() { return cNoCallsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoCallsNoneKeyword_10_1_1_0_0() { return cNoCallsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'connections'
		public Keyword getConnectionsKeyword_11_0() { return cConnectionsKeyword_11_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_11_1_0_0() { return cOwnedPortConnectionAssignment_11_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_11_1_0_1() { return cOwnedAccessConnectionAssignment_11_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_11_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_11_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_11_1_0_3() { return cOwnedFeatureConnectionAssignment_11_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0; }
		
		//ownedParameterConnection+=ParameterConnection
		public Assignment getOwnedParameterConnectionAssignment_11_1_0_4() { return cOwnedParameterConnectionAssignment_11_1_0_4; }
		
		//ParameterConnection
		public RuleCall getOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0() { return cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_11_1_1_0() { return cNoConnectionsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_11_1_1_0_0() { return cNoConnectionsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'flows'
		public Keyword getFlowsKeyword_12_0() { return cFlowsKeyword_12_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_12_1_0_0() { return cOwnedFlowImplementationAssignment_12_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_12_1_0_1() { return cOwnedEndToEndFlowAssignment_12_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_12_1_1_0() { return cNoFlowsAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_12_1_1_0_0() { return cNoFlowsNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'modes'
		public Keyword getModesKeyword_13_0() { return cModesKeyword_13_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_13_1_0() { return cAlternatives_13_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_13_1_0_0() { return cOwnedModeAssignment_13_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_13_1_0_0_0() { return cOwnedModeModeParserRuleCall_13_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_13_1_0_1() { return cOwnedModeTransitionAssignment_13_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_13_1_1_0() { return cNoModesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_13_1_1_0_0() { return cNoModesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_14() { return cGroup_14; }
		
		//'properties'
		public Keyword getPropertiesKeyword_14_0() { return cPropertiesKeyword_14_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_14_1() { return cAlternatives_14_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_14_1_0() { return cOwnedPropertyAssociationAssignment_14_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_14_1_1() { return cGroup_14_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_14_1_1_0() { return cNoPropertiesAssignment_14_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_14_1_1_0_0() { return cNoPropertiesNoneKeyword_14_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_14_1_1_1() { return cSemicolonKeyword_14_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_15() { return cOwnedAnnexSubclauseAssignment_15; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0; }
		
		//'end'
		public Keyword getEndKeyword_16() { return cEndKeyword_16; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_17() { return cFULLINAMEParserRuleCall_17; }
		
		//';'
		public Keyword getSemicolonKeyword_18() { return cSemicolonKeyword_18; }
	}
	public class SubprogramImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cSubprogramImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cCallsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Assignment cOwnedSubprogramCallSequenceAssignment_10_1_0 = (Assignment)cAlternatives_10_1.eContents().get(0);
		private final RuleCall cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0 = (RuleCall)cOwnedSubprogramCallSequenceAssignment_10_1_0.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoCallsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoCallsNoneKeyword_10_1_1_0_0 = (Keyword)cNoCallsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cConnectionsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_11_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_11_1_0_2 = (Assignment)cAlternatives_11_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_11_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_11_1_0_3 = (Assignment)cAlternatives_11_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_11_1_0_3.eContents().get(0);
		private final Assignment cOwnedParameterConnectionAssignment_11_1_0_4 = (Assignment)cAlternatives_11_1_0.eContents().get(4);
		private final RuleCall cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0 = (RuleCall)cOwnedParameterConnectionAssignment_11_1_0_4.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_11_1_1_0_0 = (Keyword)cNoConnectionsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cFlowsKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_12_1_1_0_0 = (Keyword)cNoFlowsAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cModesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Alternatives cAlternatives_13_1_0 = (Alternatives)cAlternatives_13_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_13_1_0_0 = (Assignment)cAlternatives_13_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_13_1_0_0_0 = (RuleCall)cOwnedModeAssignment_13_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_13_1_0_1 = (Assignment)cAlternatives_13_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_13_1_0_1.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoModesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_13_1_1_0_0 = (Keyword)cNoModesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cPropertiesKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Alternatives cAlternatives_14_1 = (Alternatives)cGroup_14.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_14_1_0 = (Assignment)cAlternatives_14_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_14_1_0.eContents().get(0);
		private final Group cGroup_14_1_1 = (Group)cAlternatives_14_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_14_1_1_0 = (Assignment)cGroup_14_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_14_1_1_0_0 = (Keyword)cNoPropertiesAssignment_14_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_14_1_1_1 = (Keyword)cGroup_14_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_15 = (Assignment)cGroup.eContents().get(15);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_15.eContents().get(0);
		private final Keyword cEndKeyword_16 = (Keyword)cGroup.eContents().get(16);
		private final RuleCall cFULLINAMEParserRuleCall_17 = (RuleCall)cGroup.eContents().get(17);
		private final Keyword cSemicolonKeyword_18 = (Keyword)cGroup.eContents().get(18);
		
		//SubprogramImplementation returns aadl2::SubprogramImplementation:
		//    SubprogramImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent)+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('calls'
		//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		//     | noCalls?='none' ';'
		//    ))?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//SubprogramImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent)+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//))?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//SubprogramImplementationKeywords
		public RuleCall getSubprogramImplementationKeywordsParserRuleCall_0() { return cSubprogramImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent)+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  |ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  |ownedDataSubcomponent+=DataSubcomponent)+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      |ownedDataSubcomponent+=DataSubcomponent)+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_1() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_1; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_2() { return cOwnedDataSubcomponentAssignment_7_1_0_2; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('calls'
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'calls'
		public Keyword getCallsKeyword_10_0() { return cCallsKeyword_10_0; }
		
		//((ownedSubprogramCallSequence+=SubprogramCallSequence)+
		// | noCalls?='none' ';'
		//)
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedSubprogramCallSequence+=SubprogramCallSequence)+
		public Assignment getOwnedSubprogramCallSequenceAssignment_10_1_0() { return cOwnedSubprogramCallSequenceAssignment_10_1_0; }
		
		//SubprogramCallSequence
		public RuleCall getOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0() { return cOwnedSubprogramCallSequenceSubprogramCallSequenceParserRuleCall_10_1_0_0; }
		
		//noCalls?='none' ';'
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noCalls?='none'
		public Assignment getNoCallsAssignment_10_1_1_0() { return cNoCallsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoCallsNoneKeyword_10_1_1_0_0() { return cNoCallsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'connections'
		public Keyword getConnectionsKeyword_11_0() { return cConnectionsKeyword_11_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//| ownedParameterConnection+=ParameterConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    | ownedParameterConnection+=ParameterConnection
		//    )+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_11_1_0_0() { return cOwnedPortConnectionAssignment_11_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_11_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_11_1_0_1() { return cOwnedAccessConnectionAssignment_11_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_11_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_11_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_11_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_11_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_11_1_0_3() { return cOwnedFeatureConnectionAssignment_11_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_11_1_0_3_0; }
		
		//ownedParameterConnection+=ParameterConnection
		public Assignment getOwnedParameterConnectionAssignment_11_1_0_4() { return cOwnedParameterConnectionAssignment_11_1_0_4; }
		
		//ParameterConnection
		public RuleCall getOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0() { return cOwnedParameterConnectionParameterConnectionParserRuleCall_11_1_0_4_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_11_1_1_0() { return cNoConnectionsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_11_1_1_0_0() { return cNoConnectionsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'flows'
		public Keyword getFlowsKeyword_12_0() { return cFlowsKeyword_12_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_12_1_0_0() { return cOwnedFlowImplementationAssignment_12_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_12_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_12_1_0_1() { return cOwnedEndToEndFlowAssignment_12_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_12_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_12_1_1_0() { return cNoFlowsAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_12_1_1_0_0() { return cNoFlowsNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'modes'
		public Keyword getModesKeyword_13_0() { return cModesKeyword_13_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_13_1_0() { return cAlternatives_13_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_13_1_0_0() { return cOwnedModeAssignment_13_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_13_1_0_0_0() { return cOwnedModeModeParserRuleCall_13_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_13_1_0_1() { return cOwnedModeTransitionAssignment_13_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_13_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_13_1_1_0() { return cNoModesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_13_1_1_0_0() { return cNoModesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_14() { return cGroup_14; }
		
		//'properties'
		public Keyword getPropertiesKeyword_14_0() { return cPropertiesKeyword_14_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_14_1() { return cAlternatives_14_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_14_1_0() { return cOwnedPropertyAssociationAssignment_14_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_14_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_14_1_1() { return cGroup_14_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_14_1_1_0() { return cNoPropertiesAssignment_14_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_14_1_1_0_0() { return cNoPropertiesNoneKeyword_14_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_14_1_1_1() { return cSemicolonKeyword_14_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_15() { return cOwnedAnnexSubclauseAssignment_15; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_15_0; }
		
		//'end'
		public Keyword getEndKeyword_16() { return cEndKeyword_16; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_17() { return cFULLINAMEParserRuleCall_17; }
		
		//';'
		public Keyword getSemicolonKeyword_18() { return cSemicolonKeyword_18; }
	}
	public class SubprogramGroupImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cSubprogramGroupImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cModesKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedModeAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoModesAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_11_1_1_0_0 = (Keyword)cNoModesAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cPropertiesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_12_1_0 = (Assignment)cAlternatives_12_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_12_1_0.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_12_1_1_0_0 = (Keyword)cNoPropertiesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_13.eContents().get(0);
		private final Keyword cEndKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final RuleCall cFULLINAMEParserRuleCall_15 = (RuleCall)cGroup.eContents().get(15);
		private final Keyword cSemicolonKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//SubprogramGroupImplementation returns aadl2::SubprogramGroupImplementation:
		//    SubprogramGroupImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//    | ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//    | ownedDataSubcomponent+=DataSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    (( ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//SubprogramGroupImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//| ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//| ownedDataSubcomponent+=DataSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//SubprogramGroupImplementationKeywords
		public RuleCall getSubprogramGroupImplementationKeywordsParserRuleCall_0() { return cSubprogramGroupImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//| ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//| ownedDataSubcomponent+=DataSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//| ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//| ownedDataSubcomponent+=DataSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//    | ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		//    | ownedDataSubcomponent+=DataSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_7_1_0_0() { return cOwnedSubprogramSubcomponentAssignment_7_1_0_0; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_1() { return cOwnedAbstractSubcomponentAssignment_7_1_0_1; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
		public Assignment getOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2() { return cOwnedSubprogramGroupSubcomponentAssignment_7_1_0_2; }
		
		//SubprogramGroupSubcomponent
		public RuleCall getOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedSubprogramGroupSubcomponentSubprogramGroupSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_3() { return cOwnedDataSubcomponentAssignment_7_1_0_3; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//( ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_0() { return cOwnedAccessConnectionAssignment_10_1_0_0; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_1() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_1; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_2() { return cOwnedFeatureConnectionAssignment_10_1_0_2; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'modes'
		public Keyword getModesKeyword_11_0() { return cModesKeyword_11_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_11_1_0_0() { return cOwnedModeAssignment_11_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_11_1_0_0_0() { return cOwnedModeModeParserRuleCall_11_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_11_1_0_1() { return cOwnedModeTransitionAssignment_11_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_11_1_1_0() { return cNoModesAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_11_1_1_0_0() { return cNoModesNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'properties'
		public Keyword getPropertiesKeyword_12_0() { return cPropertiesKeyword_12_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_12_1_0() { return cOwnedPropertyAssociationAssignment_12_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_12_1_1_0() { return cNoPropertiesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_12_1_1_0_0() { return cNoPropertiesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_13() { return cOwnedAnnexSubclauseAssignment_13; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0; }
		
		//'end'
		public Keyword getEndKeyword_14() { return cEndKeyword_14; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_15() { return cFULLINAMEParserRuleCall_15; }
		
		//';'
		public Keyword getSemicolonKeyword_16() { return cSemicolonKeyword_16; }
	}
	public class ProcessorImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cProcessorImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedMemorySubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedMemorySubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedBusSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedBusSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Assignment cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_4 = (Assignment)cAlternatives_7_1_0.eContents().get(4);
		private final RuleCall cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_4_0 = (RuleCall)cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_4.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cConnectionsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Alternatives cAlternatives_9_1_0 = (Alternatives)cAlternatives_9_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_9_1_0_0 = (Assignment)cAlternatives_9_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_9_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_9_1_0_1 = (Assignment)cAlternatives_9_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_9_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_9_1_0_2 = (Assignment)cAlternatives_9_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_9_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_9_1_0_3 = (Assignment)cAlternatives_9_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_9_1_0_3.eContents().get(0);
		private final Group cGroup_9_1_1 = (Group)cAlternatives_9_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_9_1_1_0 = (Assignment)cGroup_9_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_9_1_1_0_0 = (Keyword)cNoConnectionsAssignment_9_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_9_1_1_1 = (Keyword)cGroup_9_1_1.eContents().get(1);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cFlowsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_10_1_0_1.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_10_1_1_0_0 = (Keyword)cNoFlowsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cModesKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedModeAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoModesAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_11_1_1_0_0 = (Keyword)cNoModesAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cPropertiesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_12_1_0 = (Assignment)cAlternatives_12_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_12_1_0.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_12_1_1_0_0 = (Keyword)cNoPropertiesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_13.eContents().get(0);
		private final Keyword cEndKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final RuleCall cFULLINAMEParserRuleCall_15 = (RuleCall)cGroup.eContents().get(15);
		private final Keyword cSemicolonKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//ProcessorImplementation returns aadl2::ProcessorImplementation:
		//    ProcessorImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//ProcessorImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//ProcessorImplementationKeywords
		public RuleCall getProcessorImplementationKeywordsParserRuleCall_0() { return cProcessorImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedMemorySubcomponent+=MemorySubcomponent
		public Assignment getOwnedMemorySubcomponentAssignment_7_1_0_0() { return cOwnedMemorySubcomponentAssignment_7_1_0_0; }
		
		//MemorySubcomponent
		public RuleCall getOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_1() { return cOwnedAbstractSubcomponentAssignment_7_1_0_1; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedBusSubcomponent+=BusSubcomponent
		public Assignment getOwnedBusSubcomponentAssignment_7_1_0_2() { return cOwnedBusSubcomponentAssignment_7_1_0_2; }
		
		//BusSubcomponent
		public RuleCall getOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_3() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_3; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		public Assignment getOwnedVirtualProcessorSubcomponentAssignment_7_1_0_4() { return cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_4; }
		
		//VirtualProcessorSubcomponent
		public RuleCall getOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_4_0() { return cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_4_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_9() { return cGroup_9; }
		
		//'connections'
		public Keyword getConnectionsKeyword_9_0() { return cConnectionsKeyword_9_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_9_1_0() { return cAlternatives_9_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_9_1_0_0() { return cOwnedPortConnectionAssignment_9_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_9_1_0_1() { return cOwnedAccessConnectionAssignment_9_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_9_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_9_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_9_1_0_3() { return cOwnedFeatureConnectionAssignment_9_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_9_1_1() { return cGroup_9_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_9_1_1_0() { return cNoConnectionsAssignment_9_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_9_1_1_0_0() { return cNoConnectionsNoneKeyword_9_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_9_1_1_1() { return cSemicolonKeyword_9_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'flows'
		public Keyword getFlowsKeyword_10_0() { return cFlowsKeyword_10_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_10_1_0_0() { return cOwnedFlowImplementationAssignment_10_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_10_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_10_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_10_1_0_1() { return cOwnedEndToEndFlowAssignment_10_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_10_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_10_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_10_1_1_0() { return cNoFlowsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_10_1_1_0_0() { return cNoFlowsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'modes'
		public Keyword getModesKeyword_11_0() { return cModesKeyword_11_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_11_1_0_0() { return cOwnedModeAssignment_11_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_11_1_0_0_0() { return cOwnedModeModeParserRuleCall_11_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_11_1_0_1() { return cOwnedModeTransitionAssignment_11_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_11_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_11_1_1_0() { return cNoModesAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_11_1_1_0_0() { return cNoModesNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'properties'
		public Keyword getPropertiesKeyword_12_0() { return cPropertiesKeyword_12_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_12_1_0() { return cOwnedPropertyAssociationAssignment_12_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_12_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_12_1_1_0() { return cNoPropertiesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_12_1_1_0_0() { return cNoPropertiesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_13() { return cOwnedAnnexSubclauseAssignment_13; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_13_0; }
		
		//'end'
		public Keyword getEndKeyword_14() { return cEndKeyword_14; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_15() { return cFULLINAMEParserRuleCall_15; }
		
		//';'
		public Keyword getSemicolonKeyword_16() { return cSemicolonKeyword_16; }
	}
	public class VirtualProcessorImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cVirtualProcessorImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_3 = (Assignment)cAlternatives_10_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_3.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//VirtualProcessorImplementation returns aadl2::VirtualProcessorImplementation:
		//    VirtualProcessorImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//VirtualProcessorImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//VirtualProcessorImplementationKeywords
		public RuleCall getVirtualProcessorImplementationKeywordsParserRuleCall_0() { return cVirtualProcessorImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_1() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_1; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
		public Assignment getOwnedVirtualProcessorSubcomponentAssignment_7_1_0_2() { return cOwnedVirtualProcessorSubcomponentAssignment_7_1_0_2; }
		
		//VirtualProcessorSubcomponent
		public RuleCall getOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedVirtualProcessorSubcomponentVirtualProcessorSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_10_1_0_0() { return cOwnedPortConnectionAssignment_10_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_1() { return cOwnedAccessConnectionAssignment_10_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_3() { return cOwnedFeatureConnectionAssignment_10_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class DeviceImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DeviceImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cDeviceImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedDataSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedBusSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedBusSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cProcessorFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedPortProxyAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0 = (RuleCall)cOwnedPortProxyAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedSubprogramProxyAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0 = (RuleCall)cOwnedSubprogramProxyAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_3 = (Assignment)cAlternatives_10_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_3.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//DeviceImplementation returns aadl2::DeviceImplementation:
		//    DeviceImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
		//        | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    (
		//        ProcessorFeaturesKeywords (
		//            ownedPortProxy+= PortProxy
		//            | ownedSubprogramProxy+= SubprogramProxy
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//DeviceImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
		//    | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//DeviceImplementationKeywords
		public RuleCall getDeviceImplementationKeywordsParserRuleCall_0() { return cDeviceImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
		//    | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
		//    | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
		//        | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_7_1_0_1() { return cOwnedDataSubcomponentAssignment_7_1_0_1; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_2() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_2; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedBusSubcomponent+=BusSubcomponent
		public Assignment getOwnedBusSubcomponentAssignment_7_1_0_3() { return cOwnedBusSubcomponentAssignment_7_1_0_3; }
		
		//BusSubcomponent
		public RuleCall getOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//(
		//    ProcessorFeaturesKeywords (
		//        ownedPortProxy+= PortProxy
		//        | ownedSubprogramProxy+= SubprogramProxy
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//ProcessorFeaturesKeywords
		public RuleCall getProcessorFeaturesKeywordsParserRuleCall_9_0() { return cProcessorFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedPortProxy+= PortProxy
		//           | ownedSubprogramProxy+= SubprogramProxy
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedPortProxy+= PortProxy
		public Assignment getOwnedPortProxyAssignment_9_1_0() { return cOwnedPortProxyAssignment_9_1_0; }
		
		//PortProxy
		public RuleCall getOwnedPortProxyPortProxyParserRuleCall_9_1_0_0() { return cOwnedPortProxyPortProxyParserRuleCall_9_1_0_0; }
		
		//ownedSubprogramProxy+= SubprogramProxy
		public Assignment getOwnedSubprogramProxyAssignment_9_1_1() { return cOwnedSubprogramProxyAssignment_9_1_1; }
		
		//SubprogramProxy
		public RuleCall getOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0() { return cOwnedSubprogramProxySubprogramProxyParserRuleCall_9_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_10_1_0_0() { return cOwnedPortConnectionAssignment_10_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_1() { return cOwnedAccessConnectionAssignment_10_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_3() { return cOwnedFeatureConnectionAssignment_10_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class MemoryImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.MemoryImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cMemoryImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedMemorySubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedMemorySubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Assignment cOwnedBusSubcomponentAssignment_7_1_0_2 = (Assignment)cAlternatives_7_1_0.eContents().get(2);
		private final RuleCall cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0 = (RuleCall)cOwnedBusSubcomponentAssignment_7_1_0_2.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_3 = (Assignment)cAlternatives_7_1_0.eContents().get(3);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_3.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cConnectionsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Alternatives cAlternatives_9_1_0 = (Alternatives)cAlternatives_9_1.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_9_1_0_0 = (Assignment)cAlternatives_9_1_0.eContents().get(0);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_0_0 = (RuleCall)cOwnedAccessConnectionAssignment_9_1_0_0.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_9_1_0_1 = (Assignment)cAlternatives_9_1_0.eContents().get(1);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_1_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_9_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_9_1_0_2 = (Assignment)cAlternatives_9_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_2_0 = (RuleCall)cOwnedFeatureConnectionAssignment_9_1_0_2.eContents().get(0);
		private final Group cGroup_9_1_1 = (Group)cAlternatives_9_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_9_1_1_0 = (Assignment)cGroup_9_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_9_1_1_0_0 = (Keyword)cNoConnectionsAssignment_9_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_9_1_1_1 = (Keyword)cGroup_9_1_1.eContents().get(1);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cModesKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedModeAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_10_1_0_1.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoModesAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_10_1_1_0_0 = (Keyword)cNoModesAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cPropertiesKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_11_1_0 = (Assignment)cAlternatives_11_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_11_1_0.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_11_1_1_0_0 = (Keyword)cNoPropertiesAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_12 = (Assignment)cGroup.eContents().get(12);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_12.eContents().get(0);
		private final Keyword cEndKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final RuleCall cFULLINAMEParserRuleCall_14 = (RuleCall)cGroup.eContents().get(14);
		private final Keyword cSemicolonKeyword_15 = (Keyword)cGroup.eContents().get(15);
		
		//MemoryImplementation returns aadl2::MemoryImplementation:
		//    MemoryImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//MemoryImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//('connections'
		//((ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//MemoryImplementationKeywords
		public RuleCall getMemoryImplementationKeywordsParserRuleCall_0() { return cMemoryImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedMemorySubcomponent+=MemorySubcomponent
		//  | ownedBusSubcomponent+=BusSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedMemorySubcomponent+=MemorySubcomponent
		//      | ownedBusSubcomponent+=BusSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedMemorySubcomponent+=MemorySubcomponent
		public Assignment getOwnedMemorySubcomponentAssignment_7_1_0_1() { return cOwnedMemorySubcomponentAssignment_7_1_0_1; }
		
		//MemorySubcomponent
		public RuleCall getOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedMemorySubcomponentMemorySubcomponentParserRuleCall_7_1_0_1_0; }
		
		//ownedBusSubcomponent+=BusSubcomponent
		public Assignment getOwnedBusSubcomponentAssignment_7_1_0_2() { return cOwnedBusSubcomponentAssignment_7_1_0_2; }
		
		//BusSubcomponent
		public RuleCall getOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0() { return cOwnedBusSubcomponentBusSubcomponentParserRuleCall_7_1_0_2_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_3() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_3; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_3_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//('connections'
		//((ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_9() { return cGroup_9; }
		
		//'connections'
		public Keyword getConnectionsKeyword_9_0() { return cConnectionsKeyword_9_0; }
		
		//((ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//(ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_9_1_0() { return cAlternatives_9_1_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_9_1_0_0() { return cOwnedAccessConnectionAssignment_9_1_0_0; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_0_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_0_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_9_1_0_1() { return cOwnedFeatureGroupConnectionAssignment_9_1_0_1; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_1_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_1_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_9_1_0_2() { return cOwnedFeatureConnectionAssignment_9_1_0_2; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_2_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_2_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_9_1_1() { return cGroup_9_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_9_1_1_0() { return cNoConnectionsAssignment_9_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_9_1_1_0_0() { return cNoConnectionsNoneKeyword_9_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_9_1_1_1() { return cSemicolonKeyword_9_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'modes'
		public Keyword getModesKeyword_10_0() { return cModesKeyword_10_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_10_1_0_0() { return cOwnedModeAssignment_10_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_10_1_0_0_0() { return cOwnedModeModeParserRuleCall_10_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_10_1_0_1() { return cOwnedModeTransitionAssignment_10_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_10_1_1_0() { return cNoModesAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_10_1_1_0_0() { return cNoModesNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'properties'
		public Keyword getPropertiesKeyword_11_0() { return cPropertiesKeyword_11_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_11_1_0() { return cOwnedPropertyAssociationAssignment_11_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_11_1_1_0() { return cNoPropertiesAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_11_1_1_0_0() { return cNoPropertiesNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_12() { return cOwnedAnnexSubclauseAssignment_12; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0; }
		
		//'end'
		public Keyword getEndKeyword_13() { return cEndKeyword_13; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_14() { return cFULLINAMEParserRuleCall_14; }
		
		//';'
		public Keyword getSemicolonKeyword_15() { return cSemicolonKeyword_15; }
	}
	public class BusImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cBusImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cConnectionsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Alternatives cAlternatives_9_1_0 = (Alternatives)cAlternatives_9_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_9_1_0_0 = (Assignment)cAlternatives_9_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_9_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_9_1_0_1 = (Assignment)cAlternatives_9_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_9_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_9_1_0_2 = (Assignment)cAlternatives_9_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_9_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_9_1_0_3 = (Assignment)cAlternatives_9_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_9_1_0_3.eContents().get(0);
		private final Group cGroup_9_1_1 = (Group)cAlternatives_9_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_9_1_1_0 = (Assignment)cGroup_9_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_9_1_1_0_0 = (Keyword)cNoConnectionsAssignment_9_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_9_1_1_1 = (Keyword)cGroup_9_1_1.eContents().get(1);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cModesKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedModeAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_10_1_0_1.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoModesAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_10_1_1_0_0 = (Keyword)cNoModesAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cPropertiesKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_11_1_0 = (Assignment)cAlternatives_11_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_11_1_0.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_11_1_1_0_0 = (Keyword)cNoPropertiesAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_12 = (Assignment)cGroup.eContents().get(12);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_12.eContents().get(0);
		private final Keyword cEndKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final RuleCall cFULLINAMEParserRuleCall_14 = (RuleCall)cGroup.eContents().get(14);
		private final Keyword cSemicolonKeyword_15 = (Keyword)cGroup.eContents().get(15);
		
		//BusImplementation returns aadl2::BusImplementation:
		//    BusImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//BusImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//BusImplementationKeywords
		public RuleCall getBusImplementationKeywordsParserRuleCall_0() { return cBusImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_1() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_1; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_9() { return cGroup_9; }
		
		//'connections'
		public Keyword getConnectionsKeyword_9_0() { return cConnectionsKeyword_9_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_9_1_0() { return cAlternatives_9_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_9_1_0_0() { return cOwnedPortConnectionAssignment_9_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_9_1_0_1() { return cOwnedAccessConnectionAssignment_9_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_9_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_9_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_9_1_0_3() { return cOwnedFeatureConnectionAssignment_9_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_9_1_1() { return cGroup_9_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_9_1_1_0() { return cNoConnectionsAssignment_9_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_9_1_1_0_0() { return cNoConnectionsNoneKeyword_9_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_9_1_1_1() { return cSemicolonKeyword_9_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'modes'
		public Keyword getModesKeyword_10_0() { return cModesKeyword_10_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_10_1_0_0() { return cOwnedModeAssignment_10_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_10_1_0_0_0() { return cOwnedModeModeParserRuleCall_10_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_10_1_0_1() { return cOwnedModeTransitionAssignment_10_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_10_1_1_0() { return cNoModesAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_10_1_1_0_0() { return cNoModesNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'properties'
		public Keyword getPropertiesKeyword_11_0() { return cPropertiesKeyword_11_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_11_1_0() { return cOwnedPropertyAssociationAssignment_11_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_11_1_1_0() { return cNoPropertiesAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_11_1_1_0_0() { return cNoPropertiesNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_12() { return cOwnedAnnexSubclauseAssignment_12; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0; }
		
		//'end'
		public Keyword getEndKeyword_13() { return cEndKeyword_13; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_14() { return cFULLINAMEParserRuleCall_14; }
		
		//';'
		public Keyword getSemicolonKeyword_15() { return cSemicolonKeyword_15; }
	}
	public class VirtualBusImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cVirtualBusImplementationKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cOwnedRealizationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_1_0 = (RuleCall)cOwnedRealizationAssignment_1.eContents().get(0);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameINAMEParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_4_0 = (RuleCall)cOwnedExtensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_1.eContents().get(0);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Keyword cCommaKeyword_5_2_0 = (Keyword)cGroup_5_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_5_2_1 = (Assignment)cGroup_5_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_5_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPrototypesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPrototypesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cSubcomponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Alternatives cAlternatives_7_1_0 = (Alternatives)cAlternatives_7_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_7_1_0_0 = (Assignment)cAlternatives_7_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_7_1_0_0.eContents().get(0);
		private final Assignment cOwnedVirtualBusSubcomponentAssignment_7_1_0_1 = (Assignment)cAlternatives_7_1_0.eContents().get(1);
		private final RuleCall cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0 = (RuleCall)cOwnedVirtualBusSubcomponentAssignment_7_1_0_1.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_7_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_8_1_0 = (Assignment)cAlternatives_8_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_8_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_8_1_1 = (Assignment)cAlternatives_8_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_8_1_1.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cConnectionsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Alternatives cAlternatives_9_1_0 = (Alternatives)cAlternatives_9_1.eContents().get(0);
		private final Assignment cOwnedPortConnectionAssignment_9_1_0_0 = (Assignment)cAlternatives_9_1_0.eContents().get(0);
		private final RuleCall cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0 = (RuleCall)cOwnedPortConnectionAssignment_9_1_0_0.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_9_1_0_1 = (Assignment)cAlternatives_9_1_0.eContents().get(1);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0 = (RuleCall)cOwnedAccessConnectionAssignment_9_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_9_1_0_2 = (Assignment)cAlternatives_9_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_9_1_0_2.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_9_1_0_3 = (Assignment)cAlternatives_9_1_0.eContents().get(3);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0 = (RuleCall)cOwnedFeatureConnectionAssignment_9_1_0_3.eContents().get(0);
		private final Group cGroup_9_1_1 = (Group)cAlternatives_9_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_9_1_1_0 = (Assignment)cGroup_9_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_9_1_1_0_0 = (Keyword)cNoConnectionsAssignment_9_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_9_1_1_1 = (Keyword)cGroup_9_1_1.eContents().get(1);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cModesKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedModeAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_10_1_0_1.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoModesAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_10_1_1_0_0 = (Keyword)cNoModesAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cPropertiesKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_11_1_0 = (Assignment)cAlternatives_11_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_11_1_0.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_11_1_1_0_0 = (Keyword)cNoPropertiesAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_12 = (Assignment)cGroup.eContents().get(12);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_12.eContents().get(0);
		private final Keyword cEndKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final RuleCall cFULLINAMEParserRuleCall_14 = (RuleCall)cGroup.eContents().get(14);
		private final Keyword cSemicolonKeyword_15 = (Keyword)cGroup.eContents().get(15);
		
		//VirtualBusImplementation returns aadl2::VirtualBusImplementation:
		//    VirtualBusImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';'))
		//    )?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    ('connections'
		//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//VirtualBusImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//VirtualBusImplementationKeywords
		public RuleCall getVirtualBusImplementationKeywordsParserRuleCall_0() { return cVirtualBusImplementationKeywordsParserRuleCall_0; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_1() { return cOwnedRealizationAssignment_1; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_1_0() { return cOwnedRealizationRealizationParserRuleCall_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//name=INAME
		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_3_0() { return cNameINAMEParserRuleCall_3_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_4() { return cOwnedExtensionAssignment_4; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_4_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_4_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_1() { return cOwnedPrototypeBindingAssignment_5_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//','
		public Keyword getCommaKeyword_5_2_0() { return cCommaKeyword_5_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_5_2_1() { return cOwnedPrototypeBindingAssignment_5_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_5_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_6_0() { return cPrototypesKeyword_6_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_6_1_0() { return cOwnedPrototypeAssignment_6_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_6_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_6_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_6_1_1_0() { return cNoPrototypesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_6_1_1_0_0() { return cNoPrototypesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		//)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_7_0() { return cSubcomponentsKeyword_7_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		//      )+
		public Alternatives getAlternatives_7_1_0() { return cAlternatives_7_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_7_1_0_0() { return cOwnedAbstractSubcomponentAssignment_7_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_7_1_0_0_0; }
		
		//ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
		public Assignment getOwnedVirtualBusSubcomponentAssignment_7_1_0_1() { return cOwnedVirtualBusSubcomponentAssignment_7_1_0_1; }
		
		//VirtualBusSubcomponent
		public RuleCall getOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0() { return cOwnedVirtualBusSubcomponentVirtualBusSubcomponentParserRuleCall_7_1_0_1_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_7_1_1_0() { return cNoSubcomponentsAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_7_1_1_0_0() { return cNoSubcomponentsNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_8() { return cGroup_8; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_8_0() { return cInternalFeaturesKeywordsParserRuleCall_8_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_8_1_0() { return cOwnedEventSourceAssignment_8_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_8_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_8_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_8_1_1() { return cOwnedEventDataSourceAssignment_8_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_8_1_1_0; }
		
		//('connections'
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_9() { return cGroup_9; }
		
		//'connections'
		public Keyword getConnectionsKeyword_9_0() { return cConnectionsKeyword_9_0; }
		
		//((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//(ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_9_1_0() { return cAlternatives_9_1_0; }
		
		//ownedPortConnection+=PortConnection
		public Assignment getOwnedPortConnectionAssignment_9_1_0_0() { return cOwnedPortConnectionAssignment_9_1_0_0; }
		
		//PortConnection
		public RuleCall getOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0() { return cOwnedPortConnectionPortConnectionParserRuleCall_9_1_0_0_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_9_1_0_1() { return cOwnedAccessConnectionAssignment_9_1_0_1; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_9_1_0_1_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_9_1_0_2() { return cOwnedFeatureGroupConnectionAssignment_9_1_0_2; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_9_1_0_2_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_9_1_0_3() { return cOwnedFeatureConnectionAssignment_9_1_0_3; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_9_1_0_3_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_9_1_1() { return cGroup_9_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_9_1_1_0() { return cNoConnectionsAssignment_9_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_9_1_1_0_0() { return cNoConnectionsNoneKeyword_9_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_9_1_1_1() { return cSemicolonKeyword_9_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'modes'
		public Keyword getModesKeyword_10_0() { return cModesKeyword_10_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_10_1_0_0() { return cOwnedModeAssignment_10_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_10_1_0_0_0() { return cOwnedModeModeParserRuleCall_10_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_10_1_0_1() { return cOwnedModeTransitionAssignment_10_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_10_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_10_1_1_0() { return cNoModesAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_10_1_1_0_0() { return cNoModesNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'properties'
		public Keyword getPropertiesKeyword_11_0() { return cPropertiesKeyword_11_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_11_1_0() { return cOwnedPropertyAssociationAssignment_11_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_11_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_11_1_1_0() { return cNoPropertiesAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_11_1_1_0_0() { return cNoPropertiesNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_12() { return cOwnedAnnexSubclauseAssignment_12; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_12_0; }
		
		//'end'
		public Keyword getEndKeyword_13() { return cEndKeyword_13; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_14() { return cFULLINAMEParserRuleCall_14; }
		
		//';'
		public Keyword getSemicolonKeyword_15() { return cSemicolonKeyword_15; }
	}
	public class DataImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataImplementation");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cDataImplementationAction_0 = (Action)cGroup.eContents().get(0);
		private final RuleCall cDataImplementationKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cOwnedRealizationAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOwnedRealizationRealizationParserRuleCall_2_0 = (RuleCall)cOwnedRealizationAssignment_2.eContents().get(0);
		private final Keyword cFullStopKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cNameINAMEParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
		private final Assignment cOwnedExtensionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOwnedExtensionImplementationExtensionParserRuleCall_5_0 = (RuleCall)cOwnedExtensionAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftParenthesisKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_6_1.eContents().get(0);
		private final Group cGroup_6_2 = (Group)cGroup_6.eContents().get(2);
		private final Keyword cCommaKeyword_6_2_0 = (Keyword)cGroup_6_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_6_2_1 = (Assignment)cGroup_6_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_6_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPrototypesKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Alternatives cAlternatives_7_1 = (Alternatives)cGroup_7.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_7_1_0 = (Assignment)cAlternatives_7_1.eContents().get(0);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_7_1_0_0 = (RuleCall)cOwnedPrototypeAssignment_7_1_0.eContents().get(0);
		private final Group cGroup_7_1_1 = (Group)cAlternatives_7_1.eContents().get(1);
		private final Assignment cNoPrototypesAssignment_7_1_1_0 = (Assignment)cGroup_7_1_1.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_7_1_1_0_0 = (Keyword)cNoPrototypesAssignment_7_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_7_1_1_1 = (Keyword)cGroup_7_1_1.eContents().get(1);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cSubcomponentsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Alternatives cAlternatives_8_1 = (Alternatives)cGroup_8.eContents().get(1);
		private final Alternatives cAlternatives_8_1_0 = (Alternatives)cAlternatives_8_1.eContents().get(0);
		private final Assignment cOwnedAbstractSubcomponentAssignment_8_1_0_0 = (Assignment)cAlternatives_8_1_0.eContents().get(0);
		private final RuleCall cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_8_1_0_0_0 = (RuleCall)cOwnedAbstractSubcomponentAssignment_8_1_0_0.eContents().get(0);
		private final Assignment cOwnedDataSubcomponentAssignment_8_1_0_1 = (Assignment)cAlternatives_8_1_0.eContents().get(1);
		private final RuleCall cOwnedDataSubcomponentDataSubcomponentParserRuleCall_8_1_0_1_0 = (RuleCall)cOwnedDataSubcomponentAssignment_8_1_0_1.eContents().get(0);
		private final Assignment cOwnedSubprogramSubcomponentAssignment_8_1_0_2 = (Assignment)cAlternatives_8_1_0.eContents().get(2);
		private final RuleCall cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_8_1_0_2_0 = (RuleCall)cOwnedSubprogramSubcomponentAssignment_8_1_0_2.eContents().get(0);
		private final Group cGroup_8_1_1 = (Group)cAlternatives_8_1.eContents().get(1);
		private final Assignment cNoSubcomponentsAssignment_8_1_1_0 = (Assignment)cGroup_8_1_1.eContents().get(0);
		private final Keyword cNoSubcomponentsNoneKeyword_8_1_1_0_0 = (Keyword)cNoSubcomponentsAssignment_8_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_8_1_1_1 = (Keyword)cGroup_8_1_1.eContents().get(1);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cInternalFeaturesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Alternatives cAlternatives_9_1 = (Alternatives)cGroup_9.eContents().get(1);
		private final Assignment cOwnedEventSourceAssignment_9_1_0 = (Assignment)cAlternatives_9_1.eContents().get(0);
		private final RuleCall cOwnedEventSourceEventSourceParserRuleCall_9_1_0_0 = (RuleCall)cOwnedEventSourceAssignment_9_1_0.eContents().get(0);
		private final Assignment cOwnedEventDataSourceAssignment_9_1_1 = (Assignment)cAlternatives_9_1.eContents().get(1);
		private final RuleCall cOwnedEventDataSourceEventDataSourceParserRuleCall_9_1_1_0 = (RuleCall)cOwnedEventDataSourceAssignment_9_1_1.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConnectionsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Alternatives cAlternatives_10_1 = (Alternatives)cGroup_10.eContents().get(1);
		private final Alternatives cAlternatives_10_1_0 = (Alternatives)cAlternatives_10_1.eContents().get(0);
		private final Assignment cOwnedAccessConnectionAssignment_10_1_0_0 = (Assignment)cAlternatives_10_1_0.eContents().get(0);
		private final RuleCall cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0 = (RuleCall)cOwnedAccessConnectionAssignment_10_1_0_0.eContents().get(0);
		private final Assignment cOwnedFeatureGroupConnectionAssignment_10_1_0_1 = (Assignment)cAlternatives_10_1_0.eContents().get(1);
		private final RuleCall cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0 = (RuleCall)cOwnedFeatureGroupConnectionAssignment_10_1_0_1.eContents().get(0);
		private final Assignment cOwnedFeatureConnectionAssignment_10_1_0_2 = (Assignment)cAlternatives_10_1_0.eContents().get(2);
		private final RuleCall cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0 = (RuleCall)cOwnedFeatureConnectionAssignment_10_1_0_2.eContents().get(0);
		private final Group cGroup_10_1_1 = (Group)cAlternatives_10_1.eContents().get(1);
		private final Assignment cNoConnectionsAssignment_10_1_1_0 = (Assignment)cGroup_10_1_1.eContents().get(0);
		private final Keyword cNoConnectionsNoneKeyword_10_1_1_0_0 = (Keyword)cNoConnectionsAssignment_10_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_10_1_1_1 = (Keyword)cGroup_10_1_1.eContents().get(1);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cFlowsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Alternatives cAlternatives_11_1 = (Alternatives)cGroup_11.eContents().get(1);
		private final Alternatives cAlternatives_11_1_0 = (Alternatives)cAlternatives_11_1.eContents().get(0);
		private final Assignment cOwnedFlowImplementationAssignment_11_1_0_0 = (Assignment)cAlternatives_11_1_0.eContents().get(0);
		private final RuleCall cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0 = (RuleCall)cOwnedFlowImplementationAssignment_11_1_0_0.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowAssignment_11_1_0_1 = (Assignment)cAlternatives_11_1_0.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0 = (RuleCall)cOwnedEndToEndFlowAssignment_11_1_0_1.eContents().get(0);
		private final Group cGroup_11_1_1 = (Group)cAlternatives_11_1.eContents().get(1);
		private final Assignment cNoFlowsAssignment_11_1_1_0 = (Assignment)cGroup_11_1_1.eContents().get(0);
		private final Keyword cNoFlowsNoneKeyword_11_1_1_0_0 = (Keyword)cNoFlowsAssignment_11_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_11_1_1_1 = (Keyword)cGroup_11_1_1.eContents().get(1);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cModesKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Alternatives cAlternatives_12_1 = (Alternatives)cGroup_12.eContents().get(1);
		private final Alternatives cAlternatives_12_1_0 = (Alternatives)cAlternatives_12_1.eContents().get(0);
		private final Assignment cOwnedModeAssignment_12_1_0_0 = (Assignment)cAlternatives_12_1_0.eContents().get(0);
		private final RuleCall cOwnedModeModeParserRuleCall_12_1_0_0_0 = (RuleCall)cOwnedModeAssignment_12_1_0_0.eContents().get(0);
		private final Assignment cOwnedModeTransitionAssignment_12_1_0_1 = (Assignment)cAlternatives_12_1_0.eContents().get(1);
		private final RuleCall cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0 = (RuleCall)cOwnedModeTransitionAssignment_12_1_0_1.eContents().get(0);
		private final Group cGroup_12_1_1 = (Group)cAlternatives_12_1.eContents().get(1);
		private final Assignment cNoModesAssignment_12_1_1_0 = (Assignment)cGroup_12_1_1.eContents().get(0);
		private final Keyword cNoModesNoneKeyword_12_1_1_0_0 = (Keyword)cNoModesAssignment_12_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_12_1_1_1 = (Keyword)cGroup_12_1_1.eContents().get(1);
		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
		private final Keyword cPropertiesKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
		private final Alternatives cAlternatives_13_1 = (Alternatives)cGroup_13.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_13_1_0 = (Assignment)cAlternatives_13_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_13_1_0.eContents().get(0);
		private final Group cGroup_13_1_1 = (Group)cAlternatives_13_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_13_1_1_0 = (Assignment)cGroup_13_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_13_1_1_0_0 = (Keyword)cNoPropertiesAssignment_13_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_13_1_1_1 = (Keyword)cGroup_13_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_14.eContents().get(0);
		private final Keyword cEndKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final RuleCall cFULLINAMEParserRuleCall_16 = (RuleCall)cGroup.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cGroup.eContents().get(17);
		
		//DataImplementation returns aadl2::DataImplementation:
		//    {aadl2::DataImplementation}
		//    DataImplementationKeywords
		//    ownedRealization=Realization '.' name=INAME
		//    (ownedExtension=ImplementationExtension )?
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    ('prototypes'
		//        (  (ownedPrototype+=Prototype)+
		//        |(noPrototypes?='none' ';')
		//    ))?
		//    ('subcomponents'
		//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      )+
		//    | (noSubcomponents?='none' ';')))?
		//    (
		//        InternalFeaturesKeywords (
		//            ownedEventSource+= EventSource
		//            | ownedEventDataSource+= EventDataSource
		//        )+
		//    )?
		//    ('connections'
		//    (( ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		//    | (noConnections?='none' ';')))?
		//    ('flows'
		//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//    (noFlows?='none' ';')))?
		//    ('modes'
		//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//    | (noModes?='none' ';')))?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' FULLINAME ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::DataImplementation}
		//DataImplementationKeywords
		//ownedRealization=Realization '.' name=INAME
		//(ownedExtension=ImplementationExtension )?
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';')))?
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		//('connections'
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' FULLINAME ';'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::DataImplementation}
		public Action getDataImplementationAction_0() { return cDataImplementationAction_0; }
		
		//DataImplementationKeywords
		public RuleCall getDataImplementationKeywordsParserRuleCall_1() { return cDataImplementationKeywordsParserRuleCall_1; }
		
		//ownedRealization=Realization
		public Assignment getOwnedRealizationAssignment_2() { return cOwnedRealizationAssignment_2; }
		
		//Realization
		public RuleCall getOwnedRealizationRealizationParserRuleCall_2_0() { return cOwnedRealizationRealizationParserRuleCall_2_0; }
		
		//'.'
		public Keyword getFullStopKeyword_3() { return cFullStopKeyword_3; }
		
		//name=INAME
		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
		
		//INAME
		public RuleCall getNameINAMEParserRuleCall_4_0() { return cNameINAMEParserRuleCall_4_0; }
		
		//(ownedExtension=ImplementationExtension )?
		public Assignment getOwnedExtensionAssignment_5() { return cOwnedExtensionAssignment_5; }
		
		//ImplementationExtension
		public RuleCall getOwnedExtensionImplementationExtensionParserRuleCall_5_0() { return cOwnedExtensionImplementationExtensionParserRuleCall_5_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6_0() { return cLeftParenthesisKeyword_6_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_6_1() { return cOwnedPrototypeBindingAssignment_6_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_6_2() { return cGroup_6_2; }
		
		//','
		public Keyword getCommaKeyword_6_2_0() { return cCommaKeyword_6_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_6_2_1() { return cOwnedPrototypeBindingAssignment_6_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_6_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6_3() { return cRightParenthesisKeyword_6_3; }
		
		//('prototypes'
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//))?
		public Group getGroup_7() { return cGroup_7; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_7_0() { return cPrototypesKeyword_7_0; }
		
		//    (  (ownedPrototype+=Prototype)+
		//    |(noPrototypes?='none' ';')
		//)
		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_7_1_0() { return cOwnedPrototypeAssignment_7_1_0; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_7_1_0_0() { return cOwnedPrototypePrototypeParserRuleCall_7_1_0_0; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_7_1_1_0() { return cNoPrototypesAssignment_7_1_1_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_7_1_1_0_0() { return cNoPrototypesNoneKeyword_7_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_7_1_1_1() { return cSemicolonKeyword_7_1_1_1; }
		
		//('subcomponents'
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';')))?
		public Group getGroup_8() { return cGroup_8; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_8_0() { return cSubcomponentsKeyword_8_0; }
		
		//  ((ownedAbstractSubcomponent+=AbstractSubcomponent
		//  | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//  )+
		//| (noSubcomponents?='none' ';'))
		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
		
		//(ownedAbstractSubcomponent+=AbstractSubcomponent
		//      | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
		//      )+
		public Alternatives getAlternatives_8_1_0() { return cAlternatives_8_1_0; }
		
		//ownedAbstractSubcomponent+=AbstractSubcomponent
		public Assignment getOwnedAbstractSubcomponentAssignment_8_1_0_0() { return cOwnedAbstractSubcomponentAssignment_8_1_0_0; }
		
		//AbstractSubcomponent
		public RuleCall getOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_8_1_0_0_0() { return cOwnedAbstractSubcomponentAbstractSubcomponentParserRuleCall_8_1_0_0_0; }
		
		//ownedDataSubcomponent+=DataSubcomponent
		public Assignment getOwnedDataSubcomponentAssignment_8_1_0_1() { return cOwnedDataSubcomponentAssignment_8_1_0_1; }
		
		//DataSubcomponent
		public RuleCall getOwnedDataSubcomponentDataSubcomponentParserRuleCall_8_1_0_1_0() { return cOwnedDataSubcomponentDataSubcomponentParserRuleCall_8_1_0_1_0; }
		
		//ownedSubprogramSubcomponent+=SubprogramSubcomponent
		public Assignment getOwnedSubprogramSubcomponentAssignment_8_1_0_2() { return cOwnedSubprogramSubcomponentAssignment_8_1_0_2; }
		
		//SubprogramSubcomponent
		public RuleCall getOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_8_1_0_2_0() { return cOwnedSubprogramSubcomponentSubprogramSubcomponentParserRuleCall_8_1_0_2_0; }
		
		//(noSubcomponents?='none' ';')
		public Group getGroup_8_1_1() { return cGroup_8_1_1; }
		
		//noSubcomponents?='none'
		public Assignment getNoSubcomponentsAssignment_8_1_1_0() { return cNoSubcomponentsAssignment_8_1_1_0; }
		
		//'none'
		public Keyword getNoSubcomponentsNoneKeyword_8_1_1_0_0() { return cNoSubcomponentsNoneKeyword_8_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_8_1_1_1() { return cSemicolonKeyword_8_1_1_1; }
		
		//(
		//    InternalFeaturesKeywords (
		//        ownedEventSource+= EventSource
		//        | ownedEventDataSource+= EventDataSource
		//    )+
		//)?
		public Group getGroup_9() { return cGroup_9; }
		
		//InternalFeaturesKeywords
		public RuleCall getInternalFeaturesKeywordsParserRuleCall_9_0() { return cInternalFeaturesKeywordsParserRuleCall_9_0; }
		
		//(
		//           ownedEventSource+= EventSource
		//           | ownedEventDataSource+= EventDataSource
		//       )+
		public Alternatives getAlternatives_9_1() { return cAlternatives_9_1; }
		
		//ownedEventSource+= EventSource
		public Assignment getOwnedEventSourceAssignment_9_1_0() { return cOwnedEventSourceAssignment_9_1_0; }
		
		//EventSource
		public RuleCall getOwnedEventSourceEventSourceParserRuleCall_9_1_0_0() { return cOwnedEventSourceEventSourceParserRuleCall_9_1_0_0; }
		
		//ownedEventDataSource+= EventDataSource
		public Assignment getOwnedEventDataSourceAssignment_9_1_1() { return cOwnedEventDataSourceAssignment_9_1_1; }
		
		//EventDataSource
		public RuleCall getOwnedEventDataSourceEventDataSourceParserRuleCall_9_1_1_0() { return cOwnedEventDataSourceEventDataSourceParserRuleCall_9_1_1_0; }
		
		//('connections'
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';')))?
		public Group getGroup_10() { return cGroup_10; }
		
		//'connections'
		public Keyword getConnectionsKeyword_10_0() { return cConnectionsKeyword_10_0; }
		
		//(( ownedAccessConnection+=AccessConnection
		//|ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//)+
		//| (noConnections?='none' ';'))
		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
		
		//( ownedAccessConnection+=AccessConnection
		//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
		//    )+
		public Alternatives getAlternatives_10_1_0() { return cAlternatives_10_1_0; }
		
		//ownedAccessConnection+=AccessConnection
		public Assignment getOwnedAccessConnectionAssignment_10_1_0_0() { return cOwnedAccessConnectionAssignment_10_1_0_0; }
		
		//AccessConnection
		public RuleCall getOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0() { return cOwnedAccessConnectionAccessConnectionParserRuleCall_10_1_0_0_0; }
		
		//ownedFeatureGroupConnection+=FeatureGroupConnection
		public Assignment getOwnedFeatureGroupConnectionAssignment_10_1_0_1() { return cOwnedFeatureGroupConnectionAssignment_10_1_0_1; }
		
		//FeatureGroupConnection
		public RuleCall getOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0() { return cOwnedFeatureGroupConnectionFeatureGroupConnectionParserRuleCall_10_1_0_1_0; }
		
		//ownedFeatureConnection+=FeatureConnection
		public Assignment getOwnedFeatureConnectionAssignment_10_1_0_2() { return cOwnedFeatureConnectionAssignment_10_1_0_2; }
		
		//FeatureConnection
		public RuleCall getOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0() { return cOwnedFeatureConnectionFeatureConnectionParserRuleCall_10_1_0_2_0; }
		
		//(noConnections?='none' ';')
		public Group getGroup_10_1_1() { return cGroup_10_1_1; }
		
		//noConnections?='none'
		public Assignment getNoConnectionsAssignment_10_1_1_0() { return cNoConnectionsAssignment_10_1_1_0; }
		
		//'none'
		public Keyword getNoConnectionsNoneKeyword_10_1_1_0_0() { return cNoConnectionsNoneKeyword_10_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_10_1_1_1() { return cSemicolonKeyword_10_1_1_1; }
		
		//('flows'
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';')))?
		public Group getGroup_11() { return cGroup_11; }
		
		//'flows'
		public Keyword getFlowsKeyword_11_0() { return cFlowsKeyword_11_0; }
		
		//    ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
		//(noFlows?='none' ';'))
		public Alternatives getAlternatives_11_1() { return cAlternatives_11_1; }
		
		//(ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+
		public Alternatives getAlternatives_11_1_0() { return cAlternatives_11_1_0; }
		
		//ownedFlowImplementation+=(FlowImplementation)
		public Assignment getOwnedFlowImplementationAssignment_11_1_0_0() { return cOwnedFlowImplementationAssignment_11_1_0_0; }
		
		//(FlowImplementation)
		public RuleCall getOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0() { return cOwnedFlowImplementationFlowImplementationParserRuleCall_11_1_0_0_0; }
		
		//ownedEndToEndFlow+=EndToEndFlow
		public Assignment getOwnedEndToEndFlowAssignment_11_1_0_1() { return cOwnedEndToEndFlowAssignment_11_1_0_1; }
		
		//EndToEndFlow
		public RuleCall getOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0() { return cOwnedEndToEndFlowEndToEndFlowParserRuleCall_11_1_0_1_0; }
		
		//(noFlows?='none' ';')
		public Group getGroup_11_1_1() { return cGroup_11_1_1; }
		
		//noFlows?='none'
		public Assignment getNoFlowsAssignment_11_1_1_0() { return cNoFlowsAssignment_11_1_1_0; }
		
		//'none'
		public Keyword getNoFlowsNoneKeyword_11_1_1_0_0() { return cNoFlowsNoneKeyword_11_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_11_1_1_1() { return cSemicolonKeyword_11_1_1_1; }
		
		//('modes'
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';')))?
		public Group getGroup_12() { return cGroup_12; }
		
		//'modes'
		public Keyword getModesKeyword_12_0() { return cModesKeyword_12_0; }
		
		//((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		//| (noModes?='none' ';'))
		public Alternatives getAlternatives_12_1() { return cAlternatives_12_1; }
		
		//(ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
		public Alternatives getAlternatives_12_1_0() { return cAlternatives_12_1_0; }
		
		//ownedMode+=Mode
		public Assignment getOwnedModeAssignment_12_1_0_0() { return cOwnedModeAssignment_12_1_0_0; }
		
		//Mode
		public RuleCall getOwnedModeModeParserRuleCall_12_1_0_0_0() { return cOwnedModeModeParserRuleCall_12_1_0_0_0; }
		
		//ownedModeTransition+=ModeTransition
		public Assignment getOwnedModeTransitionAssignment_12_1_0_1() { return cOwnedModeTransitionAssignment_12_1_0_1; }
		
		//ModeTransition
		public RuleCall getOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0() { return cOwnedModeTransitionModeTransitionParserRuleCall_12_1_0_1_0; }
		
		//(noModes?='none' ';')
		public Group getGroup_12_1_1() { return cGroup_12_1_1; }
		
		//noModes?='none'
		public Assignment getNoModesAssignment_12_1_1_0() { return cNoModesAssignment_12_1_1_0; }
		
		//'none'
		public Keyword getNoModesNoneKeyword_12_1_1_0_0() { return cNoModesNoneKeyword_12_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_12_1_1_1() { return cSemicolonKeyword_12_1_1_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_13() { return cGroup_13; }
		
		//'properties'
		public Keyword getPropertiesKeyword_13_0() { return cPropertiesKeyword_13_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_13_1() { return cAlternatives_13_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_13_1_0() { return cOwnedPropertyAssociationAssignment_13_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_13_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_13_1_1() { return cGroup_13_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_13_1_1_0() { return cNoPropertiesAssignment_13_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_13_1_1_0_0() { return cNoPropertiesNoneKeyword_13_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_13_1_1_1() { return cSemicolonKeyword_13_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_14() { return cOwnedAnnexSubclauseAssignment_14; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_14_0; }
		
		//'end'
		public Keyword getEndKeyword_15() { return cEndKeyword_15; }
		
		//FULLINAME
		public RuleCall getFULLINAMEParserRuleCall_16() { return cFULLINAMEParserRuleCall_16; }
		
		//';'
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }
	}
	public class SubprogramCallSequenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramCallSequence");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cOwnedSubprogramCallAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cOwnedSubprogramCallSubprogramCallParserRuleCall_3_0 = (RuleCall)cOwnedSubprogramCallAssignment_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final RuleCall cInModesKeywordsParserRuleCall_6_0 = (RuleCall)cGroup_6.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Group cGroup_6_2 = (Group)cGroup_6.eContents().get(2);
		private final Assignment cInModeAssignment_6_2_0 = (Assignment)cGroup_6_2.eContents().get(0);
		private final CrossReference cInModeModeCrossReference_6_2_0_0 = (CrossReference)cInModeAssignment_6_2_0.eContents().get(0);
		private final RuleCall cInModeModeIDTerminalRuleCall_6_2_0_0_1 = (RuleCall)cInModeModeCrossReference_6_2_0_0.eContents().get(1);
		private final Group cGroup_6_2_1 = (Group)cGroup_6_2.eContents().get(1);
		private final Keyword cCommaKeyword_6_2_1_0 = (Keyword)cGroup_6_2_1.eContents().get(0);
		private final Assignment cInModeAssignment_6_2_1_1 = (Assignment)cGroup_6_2_1.eContents().get(1);
		private final CrossReference cInModeModeCrossReference_6_2_1_1_0 = (CrossReference)cInModeAssignment_6_2_1_1.eContents().get(0);
		private final RuleCall cInModeModeIDTerminalRuleCall_6_2_1_1_0_1 = (RuleCall)cInModeModeCrossReference_6_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		///* subprogram calls */
		//SubprogramCallSequence returns aadl2::SubprogramCallSequence:
		//    name = ID ':' '{'
		//    ( ownedSubprogramCall+=SubprogramCall)+
		//    '}'
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name = ID ':' '{'
		//( ownedSubprogramCall+=SubprogramCall)+
		//'}'
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name = ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//( ownedSubprogramCall+=SubprogramCall)+
		public Assignment getOwnedSubprogramCallAssignment_3() { return cOwnedSubprogramCallAssignment_3; }
		
		//SubprogramCall
		public RuleCall getOwnedSubprogramCallSubprogramCallParserRuleCall_3_0() { return cOwnedSubprogramCallSubprogramCallParserRuleCall_3_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		public Group getGroup_6() { return cGroup_6; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_6_0() { return cInModesKeywordsParserRuleCall_6_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6_1() { return cLeftParenthesisKeyword_6_1; }
		
		//(inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* )
		public Group getGroup_6_2() { return cGroup_6_2; }
		
		//inMode+=[aadl2::Mode|ID]
		public Assignment getInModeAssignment_6_2_0() { return cInModeAssignment_6_2_0; }
		
		//[aadl2::Mode|ID]
		public CrossReference getInModeModeCrossReference_6_2_0_0() { return cInModeModeCrossReference_6_2_0_0; }
		
		//ID
		public RuleCall getInModeModeIDTerminalRuleCall_6_2_0_0_1() { return cInModeModeIDTerminalRuleCall_6_2_0_0_1; }
		
		//(',' inMode+=[aadl2::Mode|ID])*
		public Group getGroup_6_2_1() { return cGroup_6_2_1; }
		
		//','
		public Keyword getCommaKeyword_6_2_1_0() { return cCommaKeyword_6_2_1_0; }
		
		//inMode+=[aadl2::Mode|ID]
		public Assignment getInModeAssignment_6_2_1_1() { return cInModeAssignment_6_2_1_1; }
		
		//[aadl2::Mode|ID]
		public CrossReference getInModeModeCrossReference_6_2_1_1_0() { return cInModeModeCrossReference_6_2_1_1_0; }
		
		//ID
		public RuleCall getInModeModeIDTerminalRuleCall_6_2_1_1_0_1() { return cInModeModeIDTerminalRuleCall_6_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6_3() { return cRightParenthesisKeyword_6_3; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class SubprogramCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cSubprogramCallAction_0 = (Action)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 cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cSubprogramKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Group cGroup_4_0 = (Group)cAlternatives_4.eContents().get(0);
		private final Assignment cContextAssignment_4_0_0 = (Assignment)cGroup_4_0.eContents().get(0);
		private final CrossReference cContextCallContextCrossReference_4_0_0_0 = (CrossReference)cContextAssignment_4_0_0.eContents().get(0);
		private final RuleCall cContextCallContextPNAMEParserRuleCall_4_0_0_0_1 = (RuleCall)cContextCallContextCrossReference_4_0_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_4_0_1 = (Keyword)cGroup_4_0.eContents().get(1);
		private final Assignment cCalledSubprogramAssignment_4_0_2 = (Assignment)cGroup_4_0.eContents().get(2);
		private final CrossReference cCalledSubprogramCalledSubprogramCrossReference_4_0_2_0 = (CrossReference)cCalledSubprogramAssignment_4_0_2.eContents().get(0);
		private final RuleCall cCalledSubprogramCalledSubprogramIDTerminalRuleCall_4_0_2_0_1 = (RuleCall)cCalledSubprogramCalledSubprogramCrossReference_4_0_2_0.eContents().get(1);
		private final Assignment cCalledSubprogramAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final CrossReference cCalledSubprogramCalledSubprogramCrossReference_4_1_0 = (CrossReference)cCalledSubprogramAssignment_4_1.eContents().get(0);
		private final RuleCall cCalledSubprogramCalledSubprogramPNAMEParserRuleCall_4_1_0_1 = (RuleCall)cCalledSubprogramCalledSubprogramCrossReference_4_1_0.eContents().get(1);
		private final Group cGroup_4_2 = (Group)cAlternatives_4.eContents().get(2);
		private final Keyword cProcessorKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Keyword cFullStopKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
		private final Assignment cCalledSubprogramAssignment_4_2_2 = (Assignment)cGroup_4_2.eContents().get(2);
		private final CrossReference cCalledSubprogramSubprogramProxyCrossReference_4_2_2_0 = (CrossReference)cCalledSubprogramAssignment_4_2_2.eContents().get(0);
		private final RuleCall cCalledSubprogramSubprogramProxyIDTerminalRuleCall_4_2_2_0_1 = (RuleCall)cCalledSubprogramSubprogramProxyCrossReference_4_2_2_0.eContents().get(1);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SubprogramCall returns aadl2::SubprogramCall:
		//     {aadl2::SubprogramCall}name=ID ':' 'subprogram'
		//        // direct assignment of context does not work because the name <id>.<id> could also refer to a component implementation
		//        // therefore we let the LinkingService figure out what kind of reference we have and set the context as appropriate
		//         //calledSubprogram=[aadl2::CalledSubprogram|QCREF]
		//        (
		//            (context=[aadl2::CallContext|PNAME] '.' calledSubprogram=[aadl2::CalledSubprogram|ID])
		//             | calledSubprogram=[aadl2::CalledSubprogram|PNAME]
		//            | ('processor' '.' calledSubprogram=[aadl2::SubprogramProxy|ID])
		//        )
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		// {aadl2::SubprogramCall}name=ID ':' 'subprogram'
		//    // direct assignment of context does not work because the name <id>.<id> could also refer to a component implementation
		//    // therefore we let the LinkingService figure out what kind of reference we have and set the context as appropriate
		//     //calledSubprogram=[aadl2::CalledSubprogram|QCREF]
		//    (
		//        (context=[aadl2::CallContext|PNAME] '.' calledSubprogram=[aadl2::CalledSubprogram|ID])
		//         | calledSubprogram=[aadl2::CalledSubprogram|PNAME]
		//        | ('processor' '.' calledSubprogram=[aadl2::SubprogramProxy|ID])
		//    )
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::SubprogramCall}
		public Action getSubprogramCallAction_0() { return cSubprogramCallAction_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//':'
		public Keyword getColonKeyword_2() { return cColonKeyword_2; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_3() { return cSubprogramKeyword_3; }
		
		//// direct assignment of context does not work because the name <id>.<id> could also refer to a component implementation
		//// therefore we let the LinkingService figure out what kind of reference we have and set the context as appropriate
		// //calledSubprogram=[aadl2::CalledSubprogram|QCREF]
		//(
		//    (context=[aadl2::CallContext|PNAME] '.' calledSubprogram=[aadl2::CalledSubprogram|ID])
		//     | calledSubprogram=[aadl2::CalledSubprogram|PNAME]
		//    | ('processor' '.' calledSubprogram=[aadl2::SubprogramProxy|ID])
		//)
		public Alternatives getAlternatives_4() { return cAlternatives_4; }
		
		//(context=[aadl2::CallContext|PNAME] '.' calledSubprogram=[aadl2::CalledSubprogram|ID])
		public Group getGroup_4_0() { return cGroup_4_0; }
		
		//context=[aadl2::CallContext|PNAME]
		public Assignment getContextAssignment_4_0_0() { return cContextAssignment_4_0_0; }
		
		//[aadl2::CallContext|PNAME]
		public CrossReference getContextCallContextCrossReference_4_0_0_0() { return cContextCallContextCrossReference_4_0_0_0; }
		
		//PNAME
		public RuleCall getContextCallContextPNAMEParserRuleCall_4_0_0_0_1() { return cContextCallContextPNAMEParserRuleCall_4_0_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_4_0_1() { return cFullStopKeyword_4_0_1; }
		
		//calledSubprogram=[aadl2::CalledSubprogram|ID]
		public Assignment getCalledSubprogramAssignment_4_0_2() { return cCalledSubprogramAssignment_4_0_2; }
		
		//[aadl2::CalledSubprogram|ID]
		public CrossReference getCalledSubprogramCalledSubprogramCrossReference_4_0_2_0() { return cCalledSubprogramCalledSubprogramCrossReference_4_0_2_0; }
		
		//ID
		public RuleCall getCalledSubprogramCalledSubprogramIDTerminalRuleCall_4_0_2_0_1() { return cCalledSubprogramCalledSubprogramIDTerminalRuleCall_4_0_2_0_1; }
		
		//calledSubprogram=[aadl2::CalledSubprogram|PNAME]
		public Assignment getCalledSubprogramAssignment_4_1() { return cCalledSubprogramAssignment_4_1; }
		
		//[aadl2::CalledSubprogram|PNAME]
		public CrossReference getCalledSubprogramCalledSubprogramCrossReference_4_1_0() { return cCalledSubprogramCalledSubprogramCrossReference_4_1_0; }
		
		//PNAME
		public RuleCall getCalledSubprogramCalledSubprogramPNAMEParserRuleCall_4_1_0_1() { return cCalledSubprogramCalledSubprogramPNAMEParserRuleCall_4_1_0_1; }
		
		//('processor' '.' calledSubprogram=[aadl2::SubprogramProxy|ID])
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//'processor'
		public Keyword getProcessorKeyword_4_2_0() { return cProcessorKeyword_4_2_0; }
		
		//'.'
		public Keyword getFullStopKeyword_4_2_1() { return cFullStopKeyword_4_2_1; }
		
		//calledSubprogram=[aadl2::SubprogramProxy|ID]
		public Assignment getCalledSubprogramAssignment_4_2_2() { return cCalledSubprogramAssignment_4_2_2; }
		
		//[aadl2::SubprogramProxy|ID]
		public CrossReference getCalledSubprogramSubprogramProxyCrossReference_4_2_2_0() { return cCalledSubprogramSubprogramProxyCrossReference_4_2_2_0; }
		
		//ID
		public RuleCall getCalledSubprogramSubprogramProxyIDTerminalRuleCall_4_2_2_0_1() { return cCalledSubprogramSubprogramProxyIDTerminalRuleCall_4_2_2_0_1; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class PrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Prototype");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cComponentPrototypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cFeatureGroupPrototypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cFeaturePrototypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		////******* Prototypes
		//Prototype returns aadl2::Prototype:
		//    ComponentPrototype | FeatureGroupPrototype | FeaturePrototype
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ComponentPrototype | FeatureGroupPrototype | FeaturePrototype
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ComponentPrototype
		public RuleCall getComponentPrototypeParserRuleCall_0() { return cComponentPrototypeParserRuleCall_0; }
		
		//FeatureGroupPrototype
		public RuleCall getFeatureGroupPrototypeParserRuleCall_1() { return cFeatureGroupPrototypeParserRuleCall_1; }
		
		//FeaturePrototype
		public RuleCall getFeaturePrototypeParserRuleCall_2() { return cFeaturePrototypeParserRuleCall_2; }
	}
	public class ComponentPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentPrototype");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAbstractPrototypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cBusPrototypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cDevicePrototypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cMemoryPrototypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cProcessPrototypeParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cProcessorPrototypeParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cSubprogramPrototypeParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cSubprogramGroupPrototypeParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cThreadPrototypeParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cThreadGroupPrototypeParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		private final RuleCall cVirtualBusPrototypeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
		private final RuleCall cVirtualProcessorPrototypeParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
		private final RuleCall cSystemPrototypeParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
		private final RuleCall cDataPrototypeParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
		
		//ComponentPrototype returns aadl2::ComponentPrototype:
		//    AbstractPrototype | BusPrototype | DevicePrototype | MemoryPrototype | ProcessPrototype | ProcessorPrototype |
		//        SubprogramPrototype | SubprogramGroupPrototype | ThreadPrototype | ThreadGroupPrototype | VirtualBusPrototype | VirtualProcessorPrototype |
		//    SystemPrototype | DataPrototype
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//AbstractPrototype | BusPrototype | DevicePrototype | MemoryPrototype | ProcessPrototype | ProcessorPrototype |
		//    SubprogramPrototype | SubprogramGroupPrototype | ThreadPrototype | ThreadGroupPrototype | VirtualBusPrototype | VirtualProcessorPrototype |
		//SystemPrototype | DataPrototype
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//AbstractPrototype
		public RuleCall getAbstractPrototypeParserRuleCall_0() { return cAbstractPrototypeParserRuleCall_0; }
		
		//BusPrototype
		public RuleCall getBusPrototypeParserRuleCall_1() { return cBusPrototypeParserRuleCall_1; }
		
		//DevicePrototype
		public RuleCall getDevicePrototypeParserRuleCall_2() { return cDevicePrototypeParserRuleCall_2; }
		
		//MemoryPrototype
		public RuleCall getMemoryPrototypeParserRuleCall_3() { return cMemoryPrototypeParserRuleCall_3; }
		
		//ProcessPrototype
		public RuleCall getProcessPrototypeParserRuleCall_4() { return cProcessPrototypeParserRuleCall_4; }
		
		//ProcessorPrototype
		public RuleCall getProcessorPrototypeParserRuleCall_5() { return cProcessorPrototypeParserRuleCall_5; }
		
		//SubprogramPrototype
		public RuleCall getSubprogramPrototypeParserRuleCall_6() { return cSubprogramPrototypeParserRuleCall_6; }
		
		//SubprogramGroupPrototype
		public RuleCall getSubprogramGroupPrototypeParserRuleCall_7() { return cSubprogramGroupPrototypeParserRuleCall_7; }
		
		//ThreadPrototype
		public RuleCall getThreadPrototypeParserRuleCall_8() { return cThreadPrototypeParserRuleCall_8; }
		
		//ThreadGroupPrototype
		public RuleCall getThreadGroupPrototypeParserRuleCall_9() { return cThreadGroupPrototypeParserRuleCall_9; }
		
		//VirtualBusPrototype
		public RuleCall getVirtualBusPrototypeParserRuleCall_10() { return cVirtualBusPrototypeParserRuleCall_10; }
		
		//VirtualProcessorPrototype
		public RuleCall getVirtualProcessorPrototypeParserRuleCall_11() { return cVirtualProcessorPrototypeParserRuleCall_11; }
		
		//SystemPrototype
		public RuleCall getSystemPrototypeParserRuleCall_12() { return cSystemPrototypeParserRuleCall_12; }
		
		//DataPrototype
		public RuleCall getDataPrototypeParserRuleCall_13() { return cDataPrototypeParserRuleCall_13; }
	}
	public class AbstractPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cAbstractKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//AbstractPrototype returns aadl2::AbstractPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'abstract'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'abstract'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'abstract'
		public Keyword getAbstractKeyword_1() { return cAbstractKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class BusPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cBusKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//BusPrototype returns aadl2::BusPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'bus'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'bus'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'bus'
		public Keyword getBusKeyword_1() { return cBusKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class DataPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//DataPrototype returns aadl2::DataPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'data'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'data'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'data'
		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class DevicePrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DevicePrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cDeviceKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//DevicePrototype returns aadl2::DevicePrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'device'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'device'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'device'
		public Keyword getDeviceKeyword_1() { return cDeviceKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class MemoryPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.MemoryPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cMemoryKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//MemoryPrototype returns aadl2::MemoryPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'memory'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'memory'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'memory'
		public Keyword getMemoryKeyword_1() { return cMemoryKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ProcessPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cProcessKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//ProcessPrototype returns aadl2::ProcessPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'process'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'process'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'process'
		public Keyword getProcessKeyword_1() { return cProcessKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ProcessorPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cProcessorKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//ProcessorPrototype returns aadl2::ProcessorPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'processor'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'processor'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'processor'
		public Keyword getProcessorKeyword_1() { return cProcessorKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class SubprogramPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cSubprogramKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//SubprogramPrototype returns aadl2::SubprogramPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'subprogram'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'subprogram'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_1() { return cSubprogramKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class SubprogramGroupPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cSubprogramGroupKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//SubprogramGroupPrototype returns aadl2::SubprogramGroupPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    SubprogramGroupKeywords
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//SubprogramGroupKeywords
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//SubprogramGroupKeywords
		public RuleCall getSubprogramGroupKeywordsParserRuleCall_1() { return cSubprogramGroupKeywordsParserRuleCall_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class SystemPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SystemPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cSystemKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//SystemPrototype returns aadl2::SystemPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'system'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'system'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'system'
		public Keyword getSystemKeyword_1() { return cSystemKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ThreadPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cThreadKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//ThreadPrototype returns aadl2::ThreadPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    'thread'
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//'thread'
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'thread'
		public Keyword getThreadKeyword_1() { return cThreadKeyword_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ThreadGroupPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cThreadGroupKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//ThreadGroupPrototype returns aadl2::ThreadGroupPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    ThreadGroupKeywords
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//ThreadGroupKeywords
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//ThreadGroupKeywords
		public RuleCall getThreadGroupKeywordsParserRuleCall_1() { return cThreadGroupKeywordsParserRuleCall_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class VirtualBusPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cVirtualBusKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//VirtualBusPrototype returns aadl2::VirtualBusPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    VirtualBusKeywords
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//VirtualBusKeywords
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//VirtualBusKeywords
		public RuleCall getVirtualBusKeywordsParserRuleCall_1() { return cVirtualBusKeywordsParserRuleCall_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class VirtualProcessorPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedComponentPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedComponentPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cVirtualProcessorKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cConstrainingClassifierAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_2_0 = (CrossReference)cConstrainingClassifierAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Keyword cArrayLeftSquareBracketKeyword_3_0_0 = (Keyword)cArrayAssignment_3_0.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//VirtualProcessorPrototype returns aadl2::VirtualProcessorPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    VirtualProcessorKeywords
		//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//    (array?='[' ']')?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//VirtualProcessorKeywords
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		//(array?='[' ']')?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ComponentPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ComponentPrototype|REFINEDNAME]
		public CrossReference getRefinedComponentPrototypeCrossReference_0_1_0_0() { return cRefinedComponentPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedComponentPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//VirtualProcessorKeywords
		public RuleCall getVirtualProcessorKeywordsParserRuleCall_1() { return cVirtualProcessorKeywordsParserRuleCall_1; }
		
		//constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
		public Assignment getConstrainingClassifierAssignment_2() { return cConstrainingClassifierAssignment_2; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_2_0() { return cConstrainingClassifierComponentClassifierCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_2_0_1; }
		
		//(array?='[' ']')?
		public Group getGroup_3() { return cGroup_3; }
		
		//array?='['
		public Assignment getArrayAssignment_3_0() { return cArrayAssignment_3_0; }
		
		//'['
		public Keyword getArrayLeftSquareBracketKeyword_3_0_0() { return cArrayLeftSquareBracketKeyword_3_0_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3_1() { return cRightSquareBracketKeyword_3_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class FeatureGroupPrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupPrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureGroupPrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureGroupPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureGroupPrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cConstrainingFeatureGroupTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConstrainingFeatureGroupTypeFeatureGroupTypeCrossReference_2_0 = (CrossReference)cConstrainingFeatureGroupTypeAssignment_2.eContents().get(0);
		private final RuleCall cConstrainingFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_2_0_1 = (RuleCall)cConstrainingFeatureGroupTypeFeatureGroupTypeCrossReference_2_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//FeatureGroupPrototype returns aadl2::FeatureGroupPrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::FeatureGroupPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    FeatureGroupKeywords
		//    (constrainingFeatureGroupType=[aadl2::FeatureGroupType|QCREF])?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::FeatureGroupPrototype|REFINEDNAME] ':' RefinedToKeywords))
		//FeatureGroupKeywords
		//(constrainingFeatureGroupType=[aadl2::FeatureGroupType|QCREF])?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::FeatureGroupPrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::FeatureGroupPrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::FeatureGroupPrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::FeatureGroupPrototype|REFINEDNAME]
		public CrossReference getRefinedFeatureGroupPrototypeCrossReference_0_1_0_0() { return cRefinedFeatureGroupPrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureGroupPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureGroupPrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_1() { return cFeatureGroupKeywordsParserRuleCall_1; }
		
		//(constrainingFeatureGroupType=[aadl2::FeatureGroupType|QCREF])?
		public Assignment getConstrainingFeatureGroupTypeAssignment_2() { return cConstrainingFeatureGroupTypeAssignment_2; }
		
		//[aadl2::FeatureGroupType|QCREF]
		public CrossReference getConstrainingFeatureGroupTypeFeatureGroupTypeCrossReference_2_0() { return cConstrainingFeatureGroupTypeFeatureGroupTypeCrossReference_2_0; }
		
		//QCREF
		public RuleCall getConstrainingFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_2_0_1() { return cConstrainingFeatureGroupTypeFeatureGroupTypeQCREFParserRuleCall_2_0_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_3() { return cGroup_3; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_3_1() { return cOwnedPropertyAssociationAssignment_3_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class FeaturePrototypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeaturePrototype");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeaturePrototypeCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeaturePrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeaturePrototypeCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cInAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cInInKeyword_1_0_0 = (Keyword)cInAssignment_1_0.eContents().get(0);
		private final Assignment cOutAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cOutOutKeyword_1_1_0 = (Keyword)cOutAssignment_1_1.eContents().get(0);
		private final Keyword cFeatureKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cConstrainingClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cConstrainingClassifierComponentClassifierCrossReference_3_0 = (CrossReference)cConstrainingClassifierAssignment_3.eContents().get(0);
		private final RuleCall cConstrainingClassifierComponentClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cConstrainingClassifierComponentClassifierCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//FeaturePrototype returns aadl2::FeaturePrototype:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::FeaturePrototype|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' | out ?= 'out')? // only in or out not inout
		//    'feature'
		//    (constrainingClassifier=[aadl2::ComponentClassifier|QCREF])?
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::FeaturePrototype|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' | out ?= 'out')? // only in or out not inout
		//'feature'
		//(constrainingClassifier=[aadl2::ComponentClassifier|QCREF])?
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::FeaturePrototype|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::FeaturePrototype|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::FeaturePrototype|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::FeaturePrototype|REFINEDNAME]
		public CrossReference getRefinedFeaturePrototypeCrossReference_0_1_0_0() { return cRefinedFeaturePrototypeCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeaturePrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeaturePrototypeREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//(in ?= 'in' | out ?= 'out')?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//in ?= 'in'
		public Assignment getInAssignment_1_0() { return cInAssignment_1_0; }
		
		//'in'
		public Keyword getInInKeyword_1_0_0() { return cInInKeyword_1_0_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_1_1() { return cOutAssignment_1_1; }
		
		//'out'
		public Keyword getOutOutKeyword_1_1_0() { return cOutOutKeyword_1_1_0; }
		
		//// only in or out not inout
		//   'feature'
		public Keyword getFeatureKeyword_2() { return cFeatureKeyword_2; }
		
		//(constrainingClassifier=[aadl2::ComponentClassifier|QCREF])?
		public Assignment getConstrainingClassifierAssignment_3() { return cConstrainingClassifierAssignment_3; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getConstrainingClassifierComponentClassifierCrossReference_3_0() { return cConstrainingClassifierComponentClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getConstrainingClassifierComponentClassifierQCREFParserRuleCall_3_0_1() { return cConstrainingClassifierComponentClassifierQCREFParserRuleCall_3_0_1; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class PrototypeBindingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PrototypeBinding");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cFeatureGroupPrototypeBindingParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cFeaturePrototypeBindingParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cComponentPrototypeBindingParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		///*
		// * Prototype Bindings
		// */
		//PrototypeBinding returns aadl2::PrototypeBinding:
		//    FeatureGroupPrototypeBinding | FeaturePrototypeBinding | ComponentPrototypeBinding
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//FeatureGroupPrototypeBinding | FeaturePrototypeBinding | ComponentPrototypeBinding
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//FeatureGroupPrototypeBinding
		public RuleCall getFeatureGroupPrototypeBindingParserRuleCall_0() { return cFeatureGroupPrototypeBindingParserRuleCall_0; }
		
		//FeaturePrototypeBinding
		public RuleCall getFeaturePrototypeBindingParserRuleCall_1() { return cFeaturePrototypeBindingParserRuleCall_1; }
		
		//ComponentPrototypeBinding
		public RuleCall getComponentPrototypeBindingParserRuleCall_2() { return cComponentPrototypeBindingParserRuleCall_2; }
	}
	public class FeatureGroupPrototypeBindingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupPrototypeBinding");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFormalAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cFormalPrototypeCrossReference_0_0 = (CrossReference)cFormalAssignment_0.eContents().get(0);
		private final RuleCall cFormalPrototypeIDTerminalRuleCall_0_0_1 = (RuleCall)cFormalPrototypeCrossReference_0_0.eContents().get(1);
		private final Keyword cEqualsSignGreaterThanSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cActualAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cActualFeatureGroupPrototypeActualParserRuleCall_3_0 = (RuleCall)cActualAssignment_3.eContents().get(0);
		
		//FeatureGroupPrototypeBinding returns aadl2::FeatureGroupPrototypeBinding:
		//    formal=[aadl2::Prototype|ID] '=>'  FeatureGroupKeywords
		//    actual=FeatureGroupPrototypeActual
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//formal=[aadl2::Prototype|ID] '=>'  FeatureGroupKeywords
		//actual=FeatureGroupPrototypeActual
		public Group getGroup() { return cGroup; }
		
		//formal=[aadl2::Prototype|ID]
		public Assignment getFormalAssignment_0() { return cFormalAssignment_0; }
		
		//[aadl2::Prototype|ID]
		public CrossReference getFormalPrototypeCrossReference_0_0() { return cFormalPrototypeCrossReference_0_0; }
		
		//ID
		public RuleCall getFormalPrototypeIDTerminalRuleCall_0_0_1() { return cFormalPrototypeIDTerminalRuleCall_0_0_1; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_1() { return cEqualsSignGreaterThanSignKeyword_1; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_2() { return cFeatureGroupKeywordsParserRuleCall_2; }
		
		//actual=FeatureGroupPrototypeActual
		public Assignment getActualAssignment_3() { return cActualAssignment_3; }
		
		//FeatureGroupPrototypeActual
		public RuleCall getActualFeatureGroupPrototypeActualParserRuleCall_3_0() { return cActualFeatureGroupPrototypeActualParserRuleCall_3_0; }
	}
	public class FeatureGroupPrototypeActualElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupPrototypeActual");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFeatureTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cFeatureTypeFeatureTypeCrossReference_0_0 = (CrossReference)cFeatureTypeAssignment_0.eContents().get(0);
		private final RuleCall cFeatureTypeFeatureTypeQCREFParserRuleCall_0_0_1 = (RuleCall)cFeatureTypeFeatureTypeCrossReference_0_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cBindingAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cBindingPrototypeBindingParserRuleCall_1_1_0 = (RuleCall)cBindingAssignment_1_1.eContents().get(0);
		private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final Keyword cCommaKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0);
		private final Assignment cBindingAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final RuleCall cBindingPrototypeBindingParserRuleCall_1_2_1_0 = (RuleCall)cBindingAssignment_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		
		//FeatureGroupPrototypeActual returns aadl2::FeatureGroupPrototypeActual:
		//    featureType=[aadl2::FeatureType|QCREF]
		//      ('(' binding+=PrototypeBinding (','  binding+=PrototypeBinding)* ')')?
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//featureType=[aadl2::FeatureType|QCREF]
		//  ('(' binding+=PrototypeBinding (','  binding+=PrototypeBinding)* ')')?
		public Group getGroup() { return cGroup; }
		
		//featureType=[aadl2::FeatureType|QCREF]
		public Assignment getFeatureTypeAssignment_0() { return cFeatureTypeAssignment_0; }
		
		//[aadl2::FeatureType|QCREF]
		public CrossReference getFeatureTypeFeatureTypeCrossReference_0_0() { return cFeatureTypeFeatureTypeCrossReference_0_0; }
		
		//QCREF
		public RuleCall getFeatureTypeFeatureTypeQCREFParserRuleCall_0_0_1() { return cFeatureTypeFeatureTypeQCREFParserRuleCall_0_0_1; }
		
		//('(' binding+=PrototypeBinding (','  binding+=PrototypeBinding)* ')')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; }
		
		//binding+=PrototypeBinding
		public Assignment getBindingAssignment_1_1() { return cBindingAssignment_1_1; }
		
		//PrototypeBinding
		public RuleCall getBindingPrototypeBindingParserRuleCall_1_1_0() { return cBindingPrototypeBindingParserRuleCall_1_1_0; }
		
		//(','  binding+=PrototypeBinding)*
		public Group getGroup_1_2() { return cGroup_1_2; }
		
		//','
		public Keyword getCommaKeyword_1_2_0() { return cCommaKeyword_1_2_0; }
		
		//binding+=PrototypeBinding
		public Assignment getBindingAssignment_1_2_1() { return cBindingAssignment_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getBindingPrototypeBindingParserRuleCall_1_2_1_0() { return cBindingPrototypeBindingParserRuleCall_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_1_3() { return cRightParenthesisKeyword_1_3; }
	}
	public class FeaturePrototypeBindingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeaturePrototypeBinding");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFormalAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cFormalPrototypeCrossReference_0_0 = (CrossReference)cFormalAssignment_0.eContents().get(0);
		private final RuleCall cFormalPrototypeIDTerminalRuleCall_0_0_1 = (RuleCall)cFormalPrototypeCrossReference_0_0.eContents().get(1);
		private final Keyword cEqualsSignGreaterThanSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cActualAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Alternatives cActualAlternatives_2_0 = (Alternatives)cActualAssignment_2.eContents().get(0);
		private final RuleCall cActualPortSpecificationParserRuleCall_2_0_0 = (RuleCall)cActualAlternatives_2_0.eContents().get(0);
		private final RuleCall cActualAccessSpecificationParserRuleCall_2_0_1 = (RuleCall)cActualAlternatives_2_0.eContents().get(1);
		private final RuleCall cActualFeaturePrototypeReferenceParserRuleCall_2_0_2 = (RuleCall)cActualAlternatives_2_0.eContents().get(2);
		
		//FeaturePrototypeBinding returns aadl2::FeaturePrototypeBinding:
		//    formal=[aadl2::Prototype|ID] '=>'
		//    actual=(PortSpecification|AccessSpecification|FeaturePrototypeReference)
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//formal=[aadl2::Prototype|ID] '=>'
		//actual=(PortSpecification|AccessSpecification|FeaturePrototypeReference)
		public Group getGroup() { return cGroup; }
		
		//formal=[aadl2::Prototype|ID]
		public Assignment getFormalAssignment_0() { return cFormalAssignment_0; }
		
		//[aadl2::Prototype|ID]
		public CrossReference getFormalPrototypeCrossReference_0_0() { return cFormalPrototypeCrossReference_0_0; }
		
		//ID
		public RuleCall getFormalPrototypeIDTerminalRuleCall_0_0_1() { return cFormalPrototypeIDTerminalRuleCall_0_0_1; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_1() { return cEqualsSignGreaterThanSignKeyword_1; }
		
		//actual=(PortSpecification|AccessSpecification|FeaturePrototypeReference)
		public Assignment getActualAssignment_2() { return cActualAssignment_2; }
		
		//(PortSpecification|AccessSpecification|FeaturePrototypeReference)
		public Alternatives getActualAlternatives_2_0() { return cActualAlternatives_2_0; }
		
		//PortSpecification
		public RuleCall getActualPortSpecificationParserRuleCall_2_0_0() { return cActualPortSpecificationParserRuleCall_2_0_0; }
		
		//AccessSpecification
		public RuleCall getActualAccessSpecificationParserRuleCall_2_0_1() { return cActualAccessSpecificationParserRuleCall_2_0_1; }
		
		//FeaturePrototypeReference
		public RuleCall getActualFeaturePrototypeReferenceParserRuleCall_2_0_2() { return cActualFeaturePrototypeReferenceParserRuleCall_2_0_2; }
	}
	public class PortSpecificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PortSpecification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cInAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final Keyword cInInKeyword_0_0_0_0 = (Keyword)cInAssignment_0_0_0.eContents().get(0);
		private final Assignment cOutAssignment_0_0_1 = (Assignment)cGroup_0_0.eContents().get(1);
		private final Keyword cOutOutKeyword_0_0_1_0 = (Keyword)cOutAssignment_0_0_1.eContents().get(0);
		private final Assignment cOutAssignment_0_1 = (Assignment)cAlternatives_0.eContents().get(1);
		private final Keyword cOutOutKeyword_0_1_0 = (Keyword)cOutAssignment_0_1.eContents().get(0);
		private final Assignment cCategoryAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cCategoryPortCategoryParserRuleCall_1_0 = (RuleCall)cCategoryAssignment_1.eContents().get(0);
		private final Keyword cPortKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cClassifierComponentClassifierCrossReference_3_0 = (CrossReference)cClassifierAssignment_3.eContents().get(0);
		private final RuleCall cClassifierComponentClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cClassifierComponentClassifierCrossReference_3_0.eContents().get(1);
		
		//PortSpecification returns aadl2::PortSpecification:
		//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
		//    category=PortCategory 'port' (classifier=[aadl2::ComponentClassifier|QCREF])?
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		//category=PortCategory 'port' (classifier=[aadl2::ComponentClassifier|QCREF])?
		public Group getGroup() { return cGroup; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//in ?= 'in' out ?= 'out'?
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_0_0_0() { return cInAssignment_0_0_0; }
		
		//'in'
		public Keyword getInInKeyword_0_0_0_0() { return cInInKeyword_0_0_0_0; }
		
		//out ?= 'out'?
		public Assignment getOutAssignment_0_0_1() { return cOutAssignment_0_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_0_0_1_0() { return cOutOutKeyword_0_0_1_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_0_1() { return cOutAssignment_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_0_1_0() { return cOutOutKeyword_0_1_0; }
		
		//category=PortCategory
		public Assignment getCategoryAssignment_1() { return cCategoryAssignment_1; }
		
		//PortCategory
		public RuleCall getCategoryPortCategoryParserRuleCall_1_0() { return cCategoryPortCategoryParserRuleCall_1_0; }
		
		//'port'
		public Keyword getPortKeyword_2() { return cPortKeyword_2; }
		
		//(classifier=[aadl2::ComponentClassifier|QCREF])?
		public Assignment getClassifierAssignment_3() { return cClassifierAssignment_3; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getClassifierComponentClassifierCrossReference_3_0() { return cClassifierComponentClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getClassifierComponentClassifierQCREFParserRuleCall_3_0_1() { return cClassifierComponentClassifierQCREFParserRuleCall_3_0_1; }
	}
	public class AccessSpecificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AccessSpecification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cKindAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cKindAccessDirectionParserRuleCall_0_0 = (RuleCall)cKindAssignment_0.eContents().get(0);
		private final Assignment cCategoryAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cCategoryAccessCategoryParserRuleCall_1_0 = (RuleCall)cCategoryAssignment_1.eContents().get(0);
		private final Keyword cAccessKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cClassifierComponentClassifierCrossReference_3_0 = (CrossReference)cClassifierAssignment_3.eContents().get(0);
		private final RuleCall cClassifierComponentClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cClassifierComponentClassifierCrossReference_3_0.eContents().get(1);
		
		//AccessSpecification returns aadl2::AccessSpecification:
		//    kind=AccessDirection category=AccessCategory 'access' (classifier=[aadl2::ComponentClassifier|QCREF])?
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//kind=AccessDirection category=AccessCategory 'access' (classifier=[aadl2::ComponentClassifier|QCREF])?
		public Group getGroup() { return cGroup; }
		
		//kind=AccessDirection
		public Assignment getKindAssignment_0() { return cKindAssignment_0; }
		
		//AccessDirection
		public RuleCall getKindAccessDirectionParserRuleCall_0_0() { return cKindAccessDirectionParserRuleCall_0_0; }
		
		//category=AccessCategory
		public Assignment getCategoryAssignment_1() { return cCategoryAssignment_1; }
		
		//AccessCategory
		public RuleCall getCategoryAccessCategoryParserRuleCall_1_0() { return cCategoryAccessCategoryParserRuleCall_1_0; }
		
		//'access'
		public Keyword getAccessKeyword_2() { return cAccessKeyword_2; }
		
		//(classifier=[aadl2::ComponentClassifier|QCREF])?
		public Assignment getClassifierAssignment_3() { return cClassifierAssignment_3; }
		
		//[aadl2::ComponentClassifier|QCREF]
		public CrossReference getClassifierComponentClassifierCrossReference_3_0() { return cClassifierComponentClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getClassifierComponentClassifierQCREFParserRuleCall_3_0_1() { return cClassifierComponentClassifierQCREFParserRuleCall_3_0_1; }
	}
	public class FeaturePrototypeReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeaturePrototypeReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Assignment cInAssignment_0_0 = (Assignment)cAlternatives_0.eContents().get(0);
		private final Keyword cInInKeyword_0_0_0 = (Keyword)cInAssignment_0_0.eContents().get(0);
		private final Assignment cOutAssignment_0_1 = (Assignment)cAlternatives_0.eContents().get(1);
		private final Keyword cOutOutKeyword_0_1_0 = (Keyword)cOutAssignment_0_1.eContents().get(0);
		private final Keyword cFeatureKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cPrototypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cPrototypeFeaturePrototypeCrossReference_2_0 = (CrossReference)cPrototypeAssignment_2.eContents().get(0);
		private final RuleCall cPrototypeFeaturePrototypeIDTerminalRuleCall_2_0_1 = (RuleCall)cPrototypeFeaturePrototypeCrossReference_2_0.eContents().get(1);
		
		//FeaturePrototypeReference returns aadl2::FeaturePrototypeReference:
		//    (in ?= 'in' | out ?= 'out')? 'feature' prototype=[aadl2::FeaturePrototype|ID]
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//(in ?= 'in' | out ?= 'out')? 'feature' prototype=[aadl2::FeaturePrototype|ID]
		public Group getGroup() { return cGroup; }
		
		//(in ?= 'in' | out ?= 'out')?
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_0_0() { return cInAssignment_0_0; }
		
		//'in'
		public Keyword getInInKeyword_0_0_0() { return cInInKeyword_0_0_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_0_1() { return cOutAssignment_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_0_1_0() { return cOutOutKeyword_0_1_0; }
		
		//'feature'
		public Keyword getFeatureKeyword_1() { return cFeatureKeyword_1; }
		
		//prototype=[aadl2::FeaturePrototype|ID]
		public Assignment getPrototypeAssignment_2() { return cPrototypeAssignment_2; }
		
		//[aadl2::FeaturePrototype|ID]
		public CrossReference getPrototypeFeaturePrototypeCrossReference_2_0() { return cPrototypeFeaturePrototypeCrossReference_2_0; }
		
		//ID
		public RuleCall getPrototypeFeaturePrototypeIDTerminalRuleCall_2_0_1() { return cPrototypeFeaturePrototypeIDTerminalRuleCall_2_0_1; }
	}
	public class ComponentPrototypeBindingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentPrototypeBinding");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFormalAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cFormalPrototypeCrossReference_0_0 = (CrossReference)cFormalAssignment_0.eContents().get(0);
		private final RuleCall cFormalPrototypeIDTerminalRuleCall_0_0_1 = (RuleCall)cFormalPrototypeCrossReference_0_0.eContents().get(1);
		private final Keyword cEqualsSignGreaterThanSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cActualAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final RuleCall cActualComponentReferenceParserRuleCall_2_0_0 = (RuleCall)cActualAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cActualAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cActualComponentReferenceParserRuleCall_2_1_1_0 = (RuleCall)cActualAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cActualAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cActualComponentReferenceParserRuleCall_2_1_2_1_0 = (RuleCall)cActualAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		
		//ComponentPrototypeBinding returns aadl2::ComponentPrototypeBinding:
		//    formal=[aadl2::Prototype|ID] '=>'
		//    (actual+=ComponentReference |
		//    '(' actual+=ComponentReference (',' actual+=ComponentReference)* ')'
		//    )
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//formal=[aadl2::Prototype|ID] '=>'
		//(actual+=ComponentReference |
		//'(' actual+=ComponentReference (',' actual+=ComponentReference)* ')'
		//)
		public Group getGroup() { return cGroup; }
		
		//formal=[aadl2::Prototype|ID]
		public Assignment getFormalAssignment_0() { return cFormalAssignment_0; }
		
		//[aadl2::Prototype|ID]
		public CrossReference getFormalPrototypeCrossReference_0_0() { return cFormalPrototypeCrossReference_0_0; }
		
		//ID
		public RuleCall getFormalPrototypeIDTerminalRuleCall_0_0_1() { return cFormalPrototypeIDTerminalRuleCall_0_0_1; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_1() { return cEqualsSignGreaterThanSignKeyword_1; }
		
		//(actual+=ComponentReference |
		//'(' actual+=ComponentReference (',' actual+=ComponentReference)* ')'
		//)
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//actual+=ComponentReference
		public Assignment getActualAssignment_2_0() { return cActualAssignment_2_0; }
		
		//ComponentReference
		public RuleCall getActualComponentReferenceParserRuleCall_2_0_0() { return cActualComponentReferenceParserRuleCall_2_0_0; }
		
		//'(' actual+=ComponentReference (',' actual+=ComponentReference)* ')'
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//actual+=ComponentReference
		public Assignment getActualAssignment_2_1_1() { return cActualAssignment_2_1_1; }
		
		//ComponentReference
		public RuleCall getActualComponentReferenceParserRuleCall_2_1_1_0() { return cActualComponentReferenceParserRuleCall_2_1_1_0; }
		
		//(',' actual+=ComponentReference)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//actual+=ComponentReference
		public Assignment getActualAssignment_2_1_2_1() { return cActualAssignment_2_1_2_1; }
		
		//ComponentReference
		public RuleCall getActualComponentReferenceParserRuleCall_2_1_2_1_0() { return cActualComponentReferenceParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
	}
	public class ComponentReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCategoryAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCategoryComponentCategoryParserRuleCall_0_0 = (RuleCall)cCategoryAssignment_0.eContents().get(0);
		private final Assignment cSubcomponentTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cSubcomponentTypeSubcomponentTypeCrossReference_1_0 = (CrossReference)cSubcomponentTypeAssignment_1.eContents().get(0);
		private final RuleCall cSubcomponentTypeSubcomponentTypeQCREFParserRuleCall_1_0_1 = (RuleCall)cSubcomponentTypeSubcomponentTypeCrossReference_1_0.eContents().get(1);
		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 cBindingAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cBindingPrototypeBindingParserRuleCall_2_1_0 = (RuleCall)cBindingAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cBindingAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cBindingPrototypeBindingParserRuleCall_2_2_1_0 = (RuleCall)cBindingAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//ComponentReference returns aadl2::ComponentPrototypeActual:
		//     category=ComponentCategory subcomponentType=[aadl2::SubcomponentType|QCREF]('(' binding+=PrototypeBinding (',' binding+=PrototypeBinding)*')')?
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//category=ComponentCategory subcomponentType=[aadl2::SubcomponentType|QCREF]('(' binding+=PrototypeBinding (',' binding+=PrototypeBinding)*')')?
		public Group getGroup() { return cGroup; }
		
		//category=ComponentCategory
		public Assignment getCategoryAssignment_0() { return cCategoryAssignment_0; }
		
		//ComponentCategory
		public RuleCall getCategoryComponentCategoryParserRuleCall_0_0() { return cCategoryComponentCategoryParserRuleCall_0_0; }
		
		//subcomponentType=[aadl2::SubcomponentType|QCREF]
		public Assignment getSubcomponentTypeAssignment_1() { return cSubcomponentTypeAssignment_1; }
		
		//[aadl2::SubcomponentType|QCREF]
		public CrossReference getSubcomponentTypeSubcomponentTypeCrossReference_1_0() { return cSubcomponentTypeSubcomponentTypeCrossReference_1_0; }
		
		//QCREF
		public RuleCall getSubcomponentTypeSubcomponentTypeQCREFParserRuleCall_1_0_1() { return cSubcomponentTypeSubcomponentTypeQCREFParserRuleCall_1_0_1; }
		
		//('(' binding+=PrototypeBinding (',' binding+=PrototypeBinding)*')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
		
		//binding+=PrototypeBinding
		public Assignment getBindingAssignment_2_1() { return cBindingAssignment_2_1; }
		
		//PrototypeBinding
		public RuleCall getBindingPrototypeBindingParserRuleCall_2_1_0() { return cBindingPrototypeBindingParserRuleCall_2_1_0; }
		
		//(',' binding+=PrototypeBinding)*
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//','
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
		
		//binding+=PrototypeBinding
		public Assignment getBindingAssignment_2_2_1() { return cBindingAssignment_2_2_1; }
		
		//PrototypeBinding
		public RuleCall getBindingPrototypeBindingParserRuleCall_2_2_1_0() { return cBindingPrototypeBindingParserRuleCall_2_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}
	public class AbstractSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedAbstractSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedAbstractSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedAbstractSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cAbstractKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cAbstractSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cAbstractSubcomponentTypeAbstractSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cAbstractSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cAbstractSubcomponentTypeAbstractSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cAbstractSubcomponentTypeAbstractSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		///*
		// * Subcomponents
		// */
		//AbstractSubcomponent returns aadl2::AbstractSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::AbstractSubcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'abstract'
		//    (abstractSubcomponentType=[aadl2::AbstractSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::AbstractSubcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'abstract'
		//(abstractSubcomponentType=[aadl2::AbstractSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::AbstractSubcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::AbstractSubcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::AbstractSubcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::AbstractSubcomponent|REFINEDNAME]
		public CrossReference getRefinedAbstractSubcomponentCrossReference_0_1_0_0() { return cRefinedAbstractSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedAbstractSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedAbstractSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'abstract'
		public Keyword getAbstractKeyword_1() { return cAbstractKeyword_1; }
		
		//(abstractSubcomponentType=[aadl2::AbstractSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//abstractSubcomponentType=[aadl2::AbstractSubcomponentType|QCREF]
		public Assignment getAbstractSubcomponentTypeAssignment_2_0() { return cAbstractSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::AbstractSubcomponentType|QCREF]
		public CrossReference getAbstractSubcomponentTypeAbstractSubcomponentTypeCrossReference_2_0_0() { return cAbstractSubcomponentTypeAbstractSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getAbstractSubcomponentTypeAbstractSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cAbstractSubcomponentTypeAbstractSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class SystemSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SystemSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cSystemKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cSystemSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cSystemSubcomponentTypeSystemSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cSystemSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cSystemSubcomponentTypeSystemSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cSystemSubcomponentTypeSystemSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SystemSubcomponent returns aadl2::SystemSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'system'
		//    (systemSubcomponentType=[aadl2::SystemSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'system'
		//(systemSubcomponentType=[aadl2::SystemSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'system'
		public Keyword getSystemKeyword_1() { return cSystemKeyword_1; }
		
		//(systemSubcomponentType=[aadl2::SystemSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//systemSubcomponentType=[aadl2::SystemSubcomponentType|QCREF]
		public Assignment getSystemSubcomponentTypeAssignment_2_0() { return cSystemSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::SystemSubcomponentType|QCREF]
		public CrossReference getSystemSubcomponentTypeSystemSubcomponentTypeCrossReference_2_0_0() { return cSystemSubcomponentTypeSystemSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getSystemSubcomponentTypeSystemSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cSystemSubcomponentTypeSystemSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ProcessSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cProcessKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cProcessSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cProcessSubcomponentTypeProcessSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cProcessSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cProcessSubcomponentTypeProcessSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cProcessSubcomponentTypeProcessSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ProcessSubcomponent returns aadl2::ProcessSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'process'
		//    (processSubcomponentType=[aadl2::ProcessSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'process'
		//(processSubcomponentType=[aadl2::ProcessSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'process'
		public Keyword getProcessKeyword_1() { return cProcessKeyword_1; }
		
		//(processSubcomponentType=[aadl2::ProcessSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//processSubcomponentType=[aadl2::ProcessSubcomponentType|QCREF]
		public Assignment getProcessSubcomponentTypeAssignment_2_0() { return cProcessSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::ProcessSubcomponentType|QCREF]
		public CrossReference getProcessSubcomponentTypeProcessSubcomponentTypeCrossReference_2_0_0() { return cProcessSubcomponentTypeProcessSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getProcessSubcomponentTypeProcessSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cProcessSubcomponentTypeProcessSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ThreadGroupSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cThreadGroupKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cThreadGroupSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cThreadGroupSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ThreadGroupSubcomponent returns aadl2::ThreadGroupSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    ThreadGroupKeywords
		//    (threadGroupSubcomponentType=[aadl2::ThreadGroupSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//ThreadGroupKeywords
		//(threadGroupSubcomponentType=[aadl2::ThreadGroupSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//ThreadGroupKeywords
		public RuleCall getThreadGroupKeywordsParserRuleCall_1() { return cThreadGroupKeywordsParserRuleCall_1; }
		
		//(threadGroupSubcomponentType=[aadl2::ThreadGroupSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//threadGroupSubcomponentType=[aadl2::ThreadGroupSubcomponentType|QCREF]
		public Assignment getThreadGroupSubcomponentTypeAssignment_2_0() { return cThreadGroupSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::ThreadGroupSubcomponentType|QCREF]
		public CrossReference getThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeCrossReference_2_0_0() { return cThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cThreadGroupSubcomponentTypeThreadGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ThreadSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cThreadKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cThreadSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cThreadSubcomponentTypeThreadSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cThreadSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cThreadSubcomponentTypeThreadSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cThreadSubcomponentTypeThreadSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ThreadSubcomponent returns aadl2::ThreadSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'thread'
		//    (threadSubcomponentType=[aadl2::ThreadSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'thread'
		//(threadSubcomponentType=[aadl2::ThreadSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'thread'
		public Keyword getThreadKeyword_1() { return cThreadKeyword_1; }
		
		//(threadSubcomponentType=[aadl2::ThreadSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//threadSubcomponentType=[aadl2::ThreadSubcomponentType|QCREF]
		public Assignment getThreadSubcomponentTypeAssignment_2_0() { return cThreadSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::ThreadSubcomponentType|QCREF]
		public CrossReference getThreadSubcomponentTypeThreadSubcomponentTypeCrossReference_2_0_0() { return cThreadSubcomponentTypeThreadSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getThreadSubcomponentTypeThreadSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cThreadSubcomponentTypeThreadSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class SubprogramSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cSubprogramKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cSubprogramSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cSubprogramSubcomponentTypeSubprogramSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cSubprogramSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cSubprogramSubcomponentTypeSubprogramSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cSubprogramSubcomponentTypeSubprogramSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SubprogramSubcomponent returns aadl2::SubprogramSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'subprogram'
		//    (subprogramSubcomponentType=[aadl2::SubprogramSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'subprogram'
		//(subprogramSubcomponentType=[aadl2::SubprogramSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_1() { return cSubprogramKeyword_1; }
		
		//(subprogramSubcomponentType=[aadl2::SubprogramSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//subprogramSubcomponentType=[aadl2::SubprogramSubcomponentType|QCREF]
		public Assignment getSubprogramSubcomponentTypeAssignment_2_0() { return cSubprogramSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::SubprogramSubcomponentType|QCREF]
		public CrossReference getSubprogramSubcomponentTypeSubprogramSubcomponentTypeCrossReference_2_0_0() { return cSubprogramSubcomponentTypeSubprogramSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getSubprogramSubcomponentTypeSubprogramSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cSubprogramSubcomponentTypeSubprogramSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class SubprogramGroupSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cSubprogramGroupKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cSubprogramGroupSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cSubprogramGroupSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SubprogramGroupSubcomponent returns aadl2::SubprogramGroupSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    SubprogramGroupKeywords
		//    (subprogramGroupSubcomponentType=[aadl2::SubprogramGroupSubcomponentType|QCREF]
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//SubprogramGroupKeywords
		//(subprogramGroupSubcomponentType=[aadl2::SubprogramGroupSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//SubprogramGroupKeywords
		public RuleCall getSubprogramGroupKeywordsParserRuleCall_1() { return cSubprogramGroupKeywordsParserRuleCall_1; }
		
		//(subprogramGroupSubcomponentType=[aadl2::SubprogramGroupSubcomponentType|QCREF]
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		public Group getGroup_2() { return cGroup_2; }
		
		//subprogramGroupSubcomponentType=[aadl2::SubprogramGroupSubcomponentType|QCREF]
		public Assignment getSubprogramGroupSubcomponentTypeAssignment_2_0() { return cSubprogramGroupSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::SubprogramGroupSubcomponentType|QCREF]
		public CrossReference getSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeCrossReference_2_0_0() { return cSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cSubprogramGroupSubcomponentTypeSubprogramGroupSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ProcessorSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cProcessorKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cProcessorSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cProcessorSubcomponentTypeProcessorSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cProcessorSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cProcessorSubcomponentTypeProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cProcessorSubcomponentTypeProcessorSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ProcessorSubcomponent returns aadl2::ProcessorSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'processor'
		//     (processorSubcomponentType=[aadl2::ProcessorSubcomponentType|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'processor'
		// (processorSubcomponentType=[aadl2::ProcessorSubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'processor'
		public Keyword getProcessorKeyword_1() { return cProcessorKeyword_1; }
		
		//(processorSubcomponentType=[aadl2::ProcessorSubcomponentType|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//processorSubcomponentType=[aadl2::ProcessorSubcomponentType|QCREF]
		public Assignment getProcessorSubcomponentTypeAssignment_2_0() { return cProcessorSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::ProcessorSubcomponentType|QCREF]
		public CrossReference getProcessorSubcomponentTypeProcessorSubcomponentTypeCrossReference_2_0_0() { return cProcessorSubcomponentTypeProcessorSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getProcessorSubcomponentTypeProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cProcessorSubcomponentTypeProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class VirtualProcessorSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cVirtualProcessorKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cVirtualProcessorSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cVirtualProcessorSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//VirtualProcessorSubcomponent returns aadl2::VirtualProcessorSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    VirtualProcessorKeywords
		//     (virtualProcessorSubcomponentType=[aadl2::VirtualProcessorSubcomponentType|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//VirtualProcessorKeywords
		// (virtualProcessorSubcomponentType=[aadl2::VirtualProcessorSubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//VirtualProcessorKeywords
		public RuleCall getVirtualProcessorKeywordsParserRuleCall_1() { return cVirtualProcessorKeywordsParserRuleCall_1; }
		
		//(virtualProcessorSubcomponentType=[aadl2::VirtualProcessorSubcomponentType|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//virtualProcessorSubcomponentType=[aadl2::VirtualProcessorSubcomponentType|QCREF]
		public Assignment getVirtualProcessorSubcomponentTypeAssignment_2_0() { return cVirtualProcessorSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::VirtualProcessorSubcomponentType|QCREF]
		public CrossReference getVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeCrossReference_2_0_0() { return cVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cVirtualProcessorSubcomponentTypeVirtualProcessorSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class DeviceSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DeviceSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cDeviceKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cDeviceSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cDeviceSubcomponentTypeDeviceSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cDeviceSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cDeviceSubcomponentTypeDeviceSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cDeviceSubcomponentTypeDeviceSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//DeviceSubcomponent returns aadl2::DeviceSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'device'
		//     (deviceSubcomponentType=[aadl2::DeviceSubcomponentType|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'device'
		// (deviceSubcomponentType=[aadl2::DeviceSubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'device'
		public Keyword getDeviceKeyword_1() { return cDeviceKeyword_1; }
		
		//(deviceSubcomponentType=[aadl2::DeviceSubcomponentType|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//deviceSubcomponentType=[aadl2::DeviceSubcomponentType|QCREF]
		public Assignment getDeviceSubcomponentTypeAssignment_2_0() { return cDeviceSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::DeviceSubcomponentType|QCREF]
		public CrossReference getDeviceSubcomponentTypeDeviceSubcomponentTypeCrossReference_2_0_0() { return cDeviceSubcomponentTypeDeviceSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getDeviceSubcomponentTypeDeviceSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cDeviceSubcomponentTypeDeviceSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class MemorySubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.MemorySubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cMemoryKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cMemorySubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cMemorySubcomponentTypeMemorySubcomponentTypeCrossReference_2_0_0 = (CrossReference)cMemorySubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cMemorySubcomponentTypeMemorySubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cMemorySubcomponentTypeMemorySubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//MemorySubcomponent returns aadl2::MemorySubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'memory'
		//     (memorySubcomponentType=[aadl2::MemorySubcomponentType|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'memory'
		// (memorySubcomponentType=[aadl2::MemorySubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'memory'
		public Keyword getMemoryKeyword_1() { return cMemoryKeyword_1; }
		
		//(memorySubcomponentType=[aadl2::MemorySubcomponentType|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//memorySubcomponentType=[aadl2::MemorySubcomponentType|QCREF]
		public Assignment getMemorySubcomponentTypeAssignment_2_0() { return cMemorySubcomponentTypeAssignment_2_0; }
		
		//[aadl2::MemorySubcomponentType|QCREF]
		public CrossReference getMemorySubcomponentTypeMemorySubcomponentTypeCrossReference_2_0_0() { return cMemorySubcomponentTypeMemorySubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getMemorySubcomponentTypeMemorySubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cMemorySubcomponentTypeMemorySubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class BusSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cBusKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cBusSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cBusSubcomponentTypeBusSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cBusSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cBusSubcomponentTypeBusSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cBusSubcomponentTypeBusSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//BusSubcomponent returns aadl2::BusSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'bus'
		//     (busSubcomponentType=[aadl2::BusSubcomponentType|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'bus'
		// (busSubcomponentType=[aadl2::BusSubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'bus'
		public Keyword getBusKeyword_1() { return cBusKeyword_1; }
		
		//(busSubcomponentType=[aadl2::BusSubcomponentType|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//busSubcomponentType=[aadl2::BusSubcomponentType|QCREF]
		public Assignment getBusSubcomponentTypeAssignment_2_0() { return cBusSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::BusSubcomponentType|QCREF]
		public CrossReference getBusSubcomponentTypeBusSubcomponentTypeCrossReference_2_0_0() { return cBusSubcomponentTypeBusSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getBusSubcomponentTypeBusSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cBusSubcomponentTypeBusSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class VirtualBusSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cVirtualBusKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cVirtualBusSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cVirtualBusSubcomponentTypeVirtualBusClassifierCrossReference_2_0_0 = (CrossReference)cVirtualBusSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cVirtualBusSubcomponentTypeVirtualBusClassifierQCREFParserRuleCall_2_0_0_1 = (RuleCall)cVirtualBusSubcomponentTypeVirtualBusClassifierCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//VirtualBusSubcomponent returns aadl2::VirtualBusSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    VirtualBusKeywords
		//     (virtualBusSubcomponentType=[aadl2::VirtualBusClassifier|QCREF]
		//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//     )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//VirtualBusKeywords
		// (virtualBusSubcomponentType=[aadl2::VirtualBusClassifier|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		// )?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//VirtualBusKeywords
		public RuleCall getVirtualBusKeywordsParserRuleCall_1() { return cVirtualBusKeywordsParserRuleCall_1; }
		
		//(virtualBusSubcomponentType=[aadl2::VirtualBusClassifier|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//virtualBusSubcomponentType=[aadl2::VirtualBusClassifier|QCREF]
		public Assignment getVirtualBusSubcomponentTypeAssignment_2_0() { return cVirtualBusSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::VirtualBusClassifier|QCREF]
		public CrossReference getVirtualBusSubcomponentTypeVirtualBusClassifierCrossReference_2_0_0() { return cVirtualBusSubcomponentTypeVirtualBusClassifierCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getVirtualBusSubcomponentTypeVirtualBusClassifierQCREFParserRuleCall_2_0_0_1() { return cVirtualBusSubcomponentTypeVirtualBusClassifierQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class DataSubcomponentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataSubcomponent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedSubcomponentCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedSubcomponentCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Assignment cDataSubcomponentTypeAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final CrossReference cDataSubcomponentTypeDataSubcomponentTypeCrossReference_2_0_0 = (CrossReference)cDataSubcomponentTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cDataSubcomponentTypeDataSubcomponentTypeQCREFParserRuleCall_2_0_0_1 = (RuleCall)cDataSubcomponentTypeDataSubcomponentTypeCrossReference_2_0_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0_0 = (RuleCall)cArrayDimensionAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_3_1_2 = (Group)cGroup_3_1.eContents().get(2);
		private final Keyword cCommaKeyword_3_1_2_0 = (Keyword)cGroup_3_1_2.eContents().get(0);
		private final Assignment cImplementationReferenceAssignment_3_1_2_1 = (Assignment)cGroup_3_1_2.eContents().get(1);
		private final RuleCall cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0 = (RuleCall)cImplementationReferenceAssignment_3_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInModesKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Group cGroup_5_2 = (Group)cGroup_5.eContents().get(2);
		private final Assignment cOwnedModeBindingAssignment_5_2_0 = (Assignment)cGroup_5_2.eContents().get(0);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_0_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_0.eContents().get(0);
		private final Group cGroup_5_2_1 = (Group)cGroup_5_2.eContents().get(1);
		private final Keyword cCommaKeyword_5_2_1_0 = (Keyword)cGroup_5_2_1.eContents().get(0);
		private final Assignment cOwnedModeBindingAssignment_5_2_1_1 = (Assignment)cGroup_5_2_1.eContents().get(1);
		private final RuleCall cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0 = (RuleCall)cOwnedModeBindingAssignment_5_2_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//DataSubcomponent returns aadl2::DataSubcomponent:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//    'data'
		//    (dataSubcomponentType=[aadl2::DataSubcomponentType|QCREF]
		//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//     ( (arrayDimension+=ArrayDimension )+
		//      ( '(' implementationReference+=ComponentImplementationReference
		//      (',' implementationReference+=ComponentImplementationReference)*
		//      ')' )?
		//     )?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//         ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		//'data'
		//(dataSubcomponentType=[aadl2::DataSubcomponentType|QCREF]
		// ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		// ( (arrayDimension+=ArrayDimension )+
		//  ( '(' implementationReference+=ComponentImplementationReference
		//  (',' implementationReference+=ComponentImplementationReference)*
		//  ')' )?
		// )?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Subcomponent|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Subcomponent|REFINEDNAME]
		public CrossReference getRefinedSubcomponentCrossReference_0_1_0_0() { return cRefinedSubcomponentCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedSubcomponentREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'data'
		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
		
		//(dataSubcomponentType=[aadl2::DataSubcomponentType|QCREF]
		// ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//dataSubcomponentType=[aadl2::DataSubcomponentType|QCREF]
		public Assignment getDataSubcomponentTypeAssignment_2_0() { return cDataSubcomponentTypeAssignment_2_0; }
		
		//[aadl2::DataSubcomponentType|QCREF]
		public CrossReference getDataSubcomponentTypeDataSubcomponentTypeCrossReference_2_0_0() { return cDataSubcomponentTypeDataSubcomponentTypeCrossReference_2_0_0; }
		
		//QCREF
		public RuleCall getDataSubcomponentTypeDataSubcomponentTypeQCREFParserRuleCall_2_0_0_1() { return cDataSubcomponentTypeDataSubcomponentTypeQCREFParserRuleCall_2_0_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//( (arrayDimension+=ArrayDimension )+
		// ( '(' implementationReference+=ComponentImplementationReference
		// (',' implementationReference+=ComponentImplementationReference)*
		// ')' )?
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//(arrayDimension+=ArrayDimension )+
		public Assignment getArrayDimensionAssignment_3_0() { return cArrayDimensionAssignment_3_0; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0_0; }
		
		//( '(' implementationReference+=ComponentImplementationReference
		//(',' implementationReference+=ComponentImplementationReference)*
		//')' )?
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1_0() { return cLeftParenthesisKeyword_3_1_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_1() { return cImplementationReferenceAssignment_3_1_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_1_0; }
		
		//(',' implementationReference+=ComponentImplementationReference)*
		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
		
		//','
		public Keyword getCommaKeyword_3_1_2_0() { return cCommaKeyword_3_1_2_0; }
		
		//implementationReference+=ComponentImplementationReference
		public Assignment getImplementationReferenceAssignment_3_1_2_1() { return cImplementationReferenceAssignment_3_1_2_1; }
		
		//ComponentImplementationReference
		public RuleCall getImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0() { return cImplementationReferenceComponentImplementationReferenceParserRuleCall_3_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//(InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//     ) ')')?
		public Group getGroup_5() { return cGroup_5; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_5_0() { return cInModesKeywordsParserRuleCall_5_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
		
		//(ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
		//        )
		public Group getGroup_5_2() { return cGroup_5_2; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_0() { return cOwnedModeBindingAssignment_5_2_0; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_0_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_0_0; }
		
		//(',' ownedModeBinding+=ModeRef)*
		public Group getGroup_5_2_1() { return cGroup_5_2_1; }
		
		//','
		public Keyword getCommaKeyword_5_2_1_0() { return cCommaKeyword_5_2_1_0; }
		
		//ownedModeBinding+=ModeRef
		public Assignment getOwnedModeBindingAssignment_5_2_1_1() { return cOwnedModeBindingAssignment_5_2_1_1; }
		
		//ModeRef
		public RuleCall getOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0() { return cOwnedModeBindingModeRefParserRuleCall_5_2_1_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_5_3() { return cRightParenthesisKeyword_5_3; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ArrayDimensionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ArrayDimension");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cArrayDimensionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cSizeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cSizeArraySizeParserRuleCall_2_0 = (RuleCall)cSizeAssignment_2.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//ArrayDimension returns aadl2::ArrayDimension:
		//    {aadl2::ArrayDimension}'[' (size=ArraySize)? ']'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::ArrayDimension}'[' (size=ArraySize)? ']'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::ArrayDimension}
		public Action getArrayDimensionAction_0() { return cArrayDimensionAction_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_1() { return cLeftSquareBracketKeyword_1; }
		
		//(size=ArraySize)?
		public Assignment getSizeAssignment_2() { return cSizeAssignment_2; }
		
		//ArraySize
		public RuleCall getSizeArraySizeParserRuleCall_2_0() { return cSizeArraySizeParserRuleCall_2_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_3() { return cRightSquareBracketKeyword_3; }
	}
	public class ArraySizeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ArraySize");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Assignment cSizeAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
		private final RuleCall cSizeINTVALUEParserRuleCall_0_0 = (RuleCall)cSizeAssignment_0.eContents().get(0);
		private final Assignment cSizePropertyAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final CrossReference cSizePropertyArraySizePropertyCrossReference_1_0 = (CrossReference)cSizePropertyAssignment_1.eContents().get(0);
		private final RuleCall cSizePropertyArraySizePropertyQPREFParserRuleCall_1_0_1 = (RuleCall)cSizePropertyArraySizePropertyCrossReference_1_0.eContents().get(1);
		
		//ArraySize returns aadl2::ArraySize:
		//    size=INTVALUE | sizeProperty=[aadl2::ArraySizeProperty|QPREF]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//size=INTVALUE | sizeProperty=[aadl2::ArraySizeProperty|QPREF]
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//size=INTVALUE
		public Assignment getSizeAssignment_0() { return cSizeAssignment_0; }
		
		//INTVALUE
		public RuleCall getSizeINTVALUEParserRuleCall_0_0() { return cSizeINTVALUEParserRuleCall_0_0; }
		
		//sizeProperty=[aadl2::ArraySizeProperty|QPREF]
		public Assignment getSizePropertyAssignment_1() { return cSizePropertyAssignment_1; }
		
		//[aadl2::ArraySizeProperty|QPREF]
		public CrossReference getSizePropertyArraySizePropertyCrossReference_1_0() { return cSizePropertyArraySizePropertyCrossReference_1_0; }
		
		//QPREF
		public RuleCall getSizePropertyArraySizePropertyQPREFParserRuleCall_1_0_1() { return cSizePropertyArraySizePropertyQPREFParserRuleCall_1_0_1; }
	}
	public class ComponentImplementationReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ComponentImplementationReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cComponentImplementationReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cImplementationAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cImplementationComponentImplementationCrossReference_1_0 = (CrossReference)cImplementationAssignment_1.eContents().get(0);
		private final RuleCall cImplementationComponentImplementationQCREFParserRuleCall_1_0_1 = (RuleCall)cImplementationComponentImplementationCrossReference_1_0.eContents().get(1);
		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 cOwnedPrototypeBindingAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//ComponentImplementationReference returns aadl2::ComponentImplementationReference:
		//    {aadl2::ComponentImplementationReference}implementation=[aadl2::ComponentImplementation|QCREF]
		//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::ComponentImplementationReference}implementation=[aadl2::ComponentImplementation|QCREF]
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup() { return cGroup; }
		
		//{aadl2::ComponentImplementationReference}
		public Action getComponentImplementationReferenceAction_0() { return cComponentImplementationReferenceAction_0; }
		
		//implementation=[aadl2::ComponentImplementation|QCREF]
		public Assignment getImplementationAssignment_1() { return cImplementationAssignment_1; }
		
		//[aadl2::ComponentImplementation|QCREF]
		public CrossReference getImplementationComponentImplementationCrossReference_1_0() { return cImplementationComponentImplementationCrossReference_1_0; }
		
		//QCREF
		public RuleCall getImplementationComponentImplementationQCREFParserRuleCall_1_0_1() { return cImplementationComponentImplementationQCREFParserRuleCall_1_0_1; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1() { return cOwnedPrototypeBindingAssignment_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//','
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_2_1() { return cOwnedPrototypeBindingAssignment_2_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}
	public class DataPortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataPort");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cDataPortAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cNameAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_1_0_0_0 = (RuleCall)cNameAssignment_1_0_0.eContents().get(0);
		private final Keyword cColonKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Assignment cRefinedAssignment_1_1_0 = (Assignment)cGroup_1_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_1_1_0_0 = (CrossReference)cRefinedAssignment_1_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_1_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_1_1_2 = (RuleCall)cGroup_1_1.eContents().get(2);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cInAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final Keyword cInInKeyword_2_0_0_0 = (Keyword)cInAssignment_2_0_0.eContents().get(0);
		private final Assignment cOutAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final Keyword cOutOutKeyword_2_0_1_0 = (Keyword)cOutAssignment_2_0_1.eContents().get(0);
		private final Assignment cOutAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final Keyword cOutOutKeyword_2_1_0 = (Keyword)cOutAssignment_2_1.eContents().get(0);
		private final RuleCall cDataPortKeywordsParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cDataFeatureClassifierAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0 = (CrossReference)cDataFeatureClassifierAssignment_4.eContents().get(0);
		private final RuleCall cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1 = (RuleCall)cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_5_0 = (RuleCall)cArrayDimensionAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//// ******** Features
		//DataPort returns aadl2::DataPort:
		//    {aadl2::DataPort}
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
		//    DataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::DataPort}
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		//DataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::DataPort}
		public Action getDataPortAction_0() { return cDataPortAction_0; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//(name=ID ':' )
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_0_0() { return cNameAssignment_1_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_0_0() { return cNameIDTerminalRuleCall_1_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_1_0_1() { return cColonKeyword_1_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_1_1_0() { return cRefinedAssignment_1_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_1_1_0_0() { return cRefinedFeatureCrossReference_1_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_1_1_1() { return cColonKeyword_1_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_1_1_2() { return cRefinedToKeywordsParserRuleCall_1_1_2; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//in ?= 'in' out ?= 'out'?
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_2_0_0() { return cInAssignment_2_0_0; }
		
		//'in'
		public Keyword getInInKeyword_2_0_0_0() { return cInInKeyword_2_0_0_0; }
		
		//out ?= 'out'?
		public Assignment getOutAssignment_2_0_1() { return cOutAssignment_2_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_0_1_0() { return cOutOutKeyword_2_0_1_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_2_1() { return cOutAssignment_2_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_1_0() { return cOutOutKeyword_2_1_0; }
		
		//DataPortKeywords
		public RuleCall getDataPortKeywordsParserRuleCall_3() { return cDataPortKeywordsParserRuleCall_3; }
		
		//(dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		public Assignment getDataFeatureClassifierAssignment_4() { return cDataFeatureClassifierAssignment_4; }
		
		//[aadl2::DataSubcomponentType|QCREF]
		public CrossReference getDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0() { return cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0; }
		
		//QCREF
		public RuleCall getDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1() { return cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_5() { return cArrayDimensionAssignment_5; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_5_0() { return cArrayDimensionArrayDimensionParserRuleCall_5_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1() { return cOwnedPropertyAssociationAssignment_6_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class EventDataPortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventDataPort");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cEventDataPortAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cNameAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_1_0_0_0 = (RuleCall)cNameAssignment_1_0_0.eContents().get(0);
		private final Keyword cColonKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Assignment cRefinedAssignment_1_1_0 = (Assignment)cGroup_1_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_1_1_0_0 = (CrossReference)cRefinedAssignment_1_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_1_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_1_1_2 = (RuleCall)cGroup_1_1.eContents().get(2);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cInAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final Keyword cInInKeyword_2_0_0_0 = (Keyword)cInAssignment_2_0_0.eContents().get(0);
		private final Assignment cOutAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final Keyword cOutOutKeyword_2_0_1_0 = (Keyword)cOutAssignment_2_0_1.eContents().get(0);
		private final Assignment cOutAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final Keyword cOutOutKeyword_2_1_0 = (Keyword)cOutAssignment_2_1.eContents().get(0);
		private final RuleCall cEventDataPortKeywordsParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cDataFeatureClassifierAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0 = (CrossReference)cDataFeatureClassifierAssignment_4.eContents().get(0);
		private final RuleCall cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1 = (RuleCall)cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_5_0 = (RuleCall)cArrayDimensionAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//EventDataPort returns aadl2::EventDataPort:
		//    {aadl2::EventDataPort}
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
		//    EventDataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::EventDataPort}
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		//EventDataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::EventDataPort}
		public Action getEventDataPortAction_0() { return cEventDataPortAction_0; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//(name=ID ':' )
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_0_0() { return cNameAssignment_1_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_0_0() { return cNameIDTerminalRuleCall_1_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_1_0_1() { return cColonKeyword_1_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_1_1_0() { return cRefinedAssignment_1_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_1_1_0_0() { return cRefinedFeatureCrossReference_1_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_1_1_1() { return cColonKeyword_1_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_1_1_2() { return cRefinedToKeywordsParserRuleCall_1_1_2; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//in ?= 'in' out ?= 'out'?
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_2_0_0() { return cInAssignment_2_0_0; }
		
		//'in'
		public Keyword getInInKeyword_2_0_0_0() { return cInInKeyword_2_0_0_0; }
		
		//out ?= 'out'?
		public Assignment getOutAssignment_2_0_1() { return cOutAssignment_2_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_0_1_0() { return cOutOutKeyword_2_0_1_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_2_1() { return cOutAssignment_2_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_1_0() { return cOutOutKeyword_2_1_0; }
		
		//EventDataPortKeywords
		public RuleCall getEventDataPortKeywordsParserRuleCall_3() { return cEventDataPortKeywordsParserRuleCall_3; }
		
		//(dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		public Assignment getDataFeatureClassifierAssignment_4() { return cDataFeatureClassifierAssignment_4; }
		
		//[aadl2::DataSubcomponentType|QCREF]
		public CrossReference getDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0() { return cDataFeatureClassifierDataSubcomponentTypeCrossReference_4_0; }
		
		//QCREF
		public RuleCall getDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1() { return cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_4_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_5() { return cArrayDimensionAssignment_5; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_5_0() { return cArrayDimensionArrayDimensionParserRuleCall_5_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1() { return cOwnedPropertyAssociationAssignment_6_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class EventPortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventPort");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cEventPortAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cNameAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_1_0_0_0 = (RuleCall)cNameAssignment_1_0_0.eContents().get(0);
		private final Keyword cColonKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Assignment cRefinedAssignment_1_1_0 = (Assignment)cGroup_1_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_1_1_0_0 = (CrossReference)cRefinedAssignment_1_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_1_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_1_1_2 = (RuleCall)cGroup_1_1.eContents().get(2);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cInAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final Keyword cInInKeyword_2_0_0_0 = (Keyword)cInAssignment_2_0_0.eContents().get(0);
		private final Assignment cOutAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final Keyword cOutOutKeyword_2_0_1_0 = (Keyword)cOutAssignment_2_0_1.eContents().get(0);
		private final Assignment cOutAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final Keyword cOutOutKeyword_2_1_0 = (Keyword)cOutAssignment_2_1.eContents().get(0);
		private final RuleCall cEventPortKeywordsParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//EventPort returns aadl2::EventPort:
		//    {aadl2::EventPort}
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
		//    EventPortKeywords
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::EventPort}
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		//EventPortKeywords
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::EventPort}
		public Action getEventPortAction_0() { return cEventPortAction_0; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//(name=ID ':' )
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//name=ID
		public Assignment getNameAssignment_1_0_0() { return cNameAssignment_1_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0_0_0() { return cNameIDTerminalRuleCall_1_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_1_0_1() { return cColonKeyword_1_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_1_1() { return cGroup_1_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_1_1_0() { return cRefinedAssignment_1_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_1_1_0_0() { return cRefinedFeatureCrossReference_1_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_1_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_1_1_1() { return cColonKeyword_1_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_1_1_2() { return cRefinedToKeywordsParserRuleCall_1_1_2; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//in ?= 'in' out ?= 'out'?
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_2_0_0() { return cInAssignment_2_0_0; }
		
		//'in'
		public Keyword getInInKeyword_2_0_0_0() { return cInInKeyword_2_0_0_0; }
		
		//out ?= 'out'?
		public Assignment getOutAssignment_2_0_1() { return cOutAssignment_2_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_0_1_0() { return cOutOutKeyword_2_0_1_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_2_1() { return cOutAssignment_2_1; }
		
		//'out'
		public Keyword getOutOutKeyword_2_1_0() { return cOutOutKeyword_2_1_0; }
		
		//EventPortKeywords
		public RuleCall getEventPortKeywordsParserRuleCall_3() { return cEventPortKeywordsParserRuleCall_3; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class FeatureGroupElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroup");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cInAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cInInKeyword_1_0_0 = (Keyword)cInAssignment_1_0.eContents().get(0);
		private final Assignment cOutAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cOutOutKeyword_1_1_0 = (Keyword)cOutAssignment_1_1.eContents().get(0);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cInverseAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final RuleCall cInverseInverseOfKeywordsParserRuleCall_3_0_0 = (RuleCall)cInverseAssignment_3_0.eContents().get(0);
		private final Assignment cFeatureTypeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final CrossReference cFeatureTypeFeatureTypeCrossReference_3_1_0 = (CrossReference)cFeatureTypeAssignment_3_1.eContents().get(0);
		private final RuleCall cFeatureTypeFeatureTypeQCREFParserRuleCall_3_1_0_1 = (RuleCall)cFeatureTypeFeatureTypeCrossReference_3_1_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//FeatureGroup returns aadl2::FeatureGroup:
		//        // default is inout if no direction
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' | out ?= 'out')? FeatureGroupKeywords
		//    (( inverse?=InverseOfKeywords)?
		//    featureType=[aadl2::FeatureType|QCREF] )?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')? ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//    // default is inout if no direction
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' | out ?= 'out')? FeatureGroupKeywords
		//(( inverse?=InverseOfKeywords)?
		//featureType=[aadl2::FeatureType|QCREF] )?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//    // default is inout if no direction
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//(in ?= 'in' | out ?= 'out')?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//in ?= 'in'
		public Assignment getInAssignment_1_0() { return cInAssignment_1_0; }
		
		//'in'
		public Keyword getInInKeyword_1_0_0() { return cInInKeyword_1_0_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_1_1() { return cOutAssignment_1_1; }
		
		//'out'
		public Keyword getOutOutKeyword_1_1_0() { return cOutOutKeyword_1_1_0; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_2() { return cFeatureGroupKeywordsParserRuleCall_2; }
		
		//(( inverse?=InverseOfKeywords)?
		//featureType=[aadl2::FeatureType|QCREF] )?
		public Group getGroup_3() { return cGroup_3; }
		
		//( inverse?=InverseOfKeywords)?
		public Assignment getInverseAssignment_3_0() { return cInverseAssignment_3_0; }
		
		//InverseOfKeywords
		public RuleCall getInverseInverseOfKeywordsParserRuleCall_3_0_0() { return cInverseInverseOfKeywordsParserRuleCall_3_0_0; }
		
		//featureType=[aadl2::FeatureType|QCREF]
		public Assignment getFeatureTypeAssignment_3_1() { return cFeatureTypeAssignment_3_1; }
		
		//[aadl2::FeatureType|QCREF]
		public CrossReference getFeatureTypeFeatureTypeCrossReference_3_1_0() { return cFeatureTypeFeatureTypeCrossReference_3_1_0; }
		
		//QCREF
		public RuleCall getFeatureTypeFeatureTypeQCREFParserRuleCall_3_1_0_1() { return cFeatureTypeFeatureTypeQCREFParserRuleCall_3_1_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class ParameterElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Parameter");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cInAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final Keyword cInInKeyword_1_0_0_0 = (Keyword)cInAssignment_1_0_0.eContents().get(0);
		private final Assignment cOutAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final Keyword cOutOutKeyword_1_0_1_0 = (Keyword)cOutAssignment_1_0_1.eContents().get(0);
		private final Assignment cOutAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cOutOutKeyword_1_1_0 = (Keyword)cOutAssignment_1_1.eContents().get(0);
		private final Keyword cParameterKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cDataFeatureClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0 = (CrossReference)cDataFeatureClassifierAssignment_3.eContents().get(0);
		private final RuleCall cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//Parameter returns aadl2::Parameter:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' out ?= 'out'? | out ?= 'out') 'parameter' (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' out ?= 'out'? | out ?= 'out') 'parameter' (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//(in ?= 'in' out ?= 'out'? | out ?= 'out')
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//in ?= 'in' out ?= 'out'?
		public Group getGroup_1_0() { return cGroup_1_0; }
		
		//in ?= 'in'
		public Assignment getInAssignment_1_0_0() { return cInAssignment_1_0_0; }
		
		//'in'
		public Keyword getInInKeyword_1_0_0_0() { return cInInKeyword_1_0_0_0; }
		
		//out ?= 'out'?
		public Assignment getOutAssignment_1_0_1() { return cOutAssignment_1_0_1; }
		
		//'out'
		public Keyword getOutOutKeyword_1_0_1_0() { return cOutOutKeyword_1_0_1_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_1_1() { return cOutAssignment_1_1; }
		
		//'out'
		public Keyword getOutOutKeyword_1_1_0() { return cOutOutKeyword_1_1_0; }
		
		//'parameter'
		public Keyword getParameterKeyword_2() { return cParameterKeyword_2; }
		
		//(dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		public Assignment getDataFeatureClassifierAssignment_3() { return cDataFeatureClassifierAssignment_3; }
		
		//[aadl2::DataSubcomponentType|QCREF]
		public CrossReference getDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0() { return cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1() { return cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class SubprogramAccessElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramAccess");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Assignment cKindAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cKindAccessDirectionParserRuleCall_1_0 = (RuleCall)cKindAssignment_1.eContents().get(0);
		private final RuleCall cSubprogramAccessKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cSubprogramFeatureClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cSubprogramFeatureClassifierSubprogramSubcomponentTypeCrossReference_3_0 = (CrossReference)cSubprogramFeatureClassifierAssignment_3.eContents().get(0);
		private final RuleCall cSubprogramFeatureClassifierSubprogramSubcomponentTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cSubprogramFeatureClassifierSubprogramSubcomponentTypeCrossReference_3_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//// AccessCategory not set (is encoded in type)
		//SubprogramAccess returns aadl2::SubprogramAccess:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    kind=AccessDirection
		//    SubprogramAccessKeywords (subprogramFeatureClassifier=[aadl2::SubprogramSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//kind=AccessDirection
		//SubprogramAccessKeywords (subprogramFeatureClassifier=[aadl2::SubprogramSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//kind=AccessDirection
		public Assignment getKindAssignment_1() { return cKindAssignment_1; }
		
		//AccessDirection
		public RuleCall getKindAccessDirectionParserRuleCall_1_0() { return cKindAccessDirectionParserRuleCall_1_0; }
		
		//SubprogramAccessKeywords
		public RuleCall getSubprogramAccessKeywordsParserRuleCall_2() { return cSubprogramAccessKeywordsParserRuleCall_2; }
		
		//(subprogramFeatureClassifier=[aadl2::SubprogramSubcomponentType|QCREF])?
		public Assignment getSubprogramFeatureClassifierAssignment_3() { return cSubprogramFeatureClassifierAssignment_3; }
		
		//[aadl2::SubprogramSubcomponentType|QCREF]
		public CrossReference getSubprogramFeatureClassifierSubprogramSubcomponentTypeCrossReference_3_0() { return cSubprogramFeatureClassifierSubprogramSubcomponentTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getSubprogramFeatureClassifierSubprogramSubcomponentTypeQCREFParserRuleCall_3_0_1() { return cSubprogramFeatureClassifierSubprogramSubcomponentTypeQCREFParserRuleCall_3_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class SubprogramGroupAccessElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupAccess");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Assignment cKindAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cKindAccessDirectionParserRuleCall_1_0 = (RuleCall)cKindAssignment_1.eContents().get(0);
		private final RuleCall cSubprogramGroupAccessKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cSubprogramGroupFeatureClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeCrossReference_3_0 = (CrossReference)cSubprogramGroupFeatureClassifierAssignment_3.eContents().get(0);
		private final RuleCall cSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeCrossReference_3_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//SubprogramGroupAccess returns aadl2::SubprogramGroupAccess:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    kind=AccessDirection
		//    SubprogramGroupAccessKeywords (subprogramGroupFeatureClassifier=[aadl2::SubprogramGroupSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//kind=AccessDirection
		//SubprogramGroupAccessKeywords (subprogramGroupFeatureClassifier=[aadl2::SubprogramGroupSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//kind=AccessDirection
		public Assignment getKindAssignment_1() { return cKindAssignment_1; }
		
		//AccessDirection
		public RuleCall getKindAccessDirectionParserRuleCall_1_0() { return cKindAccessDirectionParserRuleCall_1_0; }
		
		//SubprogramGroupAccessKeywords
		public RuleCall getSubprogramGroupAccessKeywordsParserRuleCall_2() { return cSubprogramGroupAccessKeywordsParserRuleCall_2; }
		
		//(subprogramGroupFeatureClassifier=[aadl2::SubprogramGroupSubcomponentType|QCREF])?
		public Assignment getSubprogramGroupFeatureClassifierAssignment_3() { return cSubprogramGroupFeatureClassifierAssignment_3; }
		
		//[aadl2::SubprogramGroupSubcomponentType|QCREF]
		public CrossReference getSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeCrossReference_3_0() { return cSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeQCREFParserRuleCall_3_0_1() { return cSubprogramGroupFeatureClassifierSubprogramGroupSubcomponentTypeQCREFParserRuleCall_3_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class BusAccessElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusAccess");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Assignment cKindAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cKindAccessDirectionParserRuleCall_1_0 = (RuleCall)cKindAssignment_1.eContents().get(0);
		private final Assignment cVirtualAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cVirtualVirtualKeyword_2_0 = (Keyword)cVirtualAssignment_2.eContents().get(0);
		private final RuleCall cBusAccessKeywordsParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cBusFeatureClassifierAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cBusFeatureClassifierBusSubcomponentTypeCrossReference_4_0 = (CrossReference)cBusFeatureClassifierAssignment_4.eContents().get(0);
		private final RuleCall cBusFeatureClassifierBusSubcomponentTypeQCREFParserRuleCall_4_0_1 = (RuleCall)cBusFeatureClassifierBusSubcomponentTypeCrossReference_4_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_5_0 = (RuleCall)cArrayDimensionAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//BusAccess returns aadl2::BusAccess:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    kind=AccessDirection (virtual?='virtual')?
		//    BusAccessKeywords (busFeatureClassifier=[aadl2::BusSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//kind=AccessDirection (virtual?='virtual')?
		//BusAccessKeywords (busFeatureClassifier=[aadl2::BusSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//kind=AccessDirection
		public Assignment getKindAssignment_1() { return cKindAssignment_1; }
		
		//AccessDirection
		public RuleCall getKindAccessDirectionParserRuleCall_1_0() { return cKindAccessDirectionParserRuleCall_1_0; }
		
		//(virtual?='virtual')?
		public Assignment getVirtualAssignment_2() { return cVirtualAssignment_2; }
		
		//'virtual'
		public Keyword getVirtualVirtualKeyword_2_0() { return cVirtualVirtualKeyword_2_0; }
		
		//BusAccessKeywords
		public RuleCall getBusAccessKeywordsParserRuleCall_3() { return cBusAccessKeywordsParserRuleCall_3; }
		
		//(busFeatureClassifier=[aadl2::BusSubcomponentType|QCREF])?
		public Assignment getBusFeatureClassifierAssignment_4() { return cBusFeatureClassifierAssignment_4; }
		
		//[aadl2::BusSubcomponentType|QCREF]
		public CrossReference getBusFeatureClassifierBusSubcomponentTypeCrossReference_4_0() { return cBusFeatureClassifierBusSubcomponentTypeCrossReference_4_0; }
		
		//QCREF
		public RuleCall getBusFeatureClassifierBusSubcomponentTypeQCREFParserRuleCall_4_0_1() { return cBusFeatureClassifierBusSubcomponentTypeQCREFParserRuleCall_4_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_5() { return cArrayDimensionAssignment_5; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_5_0() { return cArrayDimensionArrayDimensionParserRuleCall_5_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1() { return cOwnedPropertyAssociationAssignment_6_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class DataAccessElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataAccess");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Assignment cKindAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cKindAccessDirectionParserRuleCall_1_0 = (RuleCall)cKindAssignment_1.eContents().get(0);
		private final RuleCall cDataAccessKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cDataFeatureClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0 = (CrossReference)cDataFeatureClassifierAssignment_3.eContents().get(0);
		private final RuleCall cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1 = (RuleCall)cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0.eContents().get(1);
		private final Assignment cArrayDimensionAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_4_0 = (RuleCall)cArrayDimensionAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//DataAccess returns aadl2::DataAccess:
		//    ((name=ID ':' )|
		//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//    kind=AccessDirection
		//    DataAccessKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		//kind=AccessDirection
		//DataAccessKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' )|
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::Feature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::Feature|REFINEDNAME]
		public CrossReference getRefinedFeatureCrossReference_0_1_0_0() { return cRefinedFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//kind=AccessDirection
		public Assignment getKindAssignment_1() { return cKindAssignment_1; }
		
		//AccessDirection
		public RuleCall getKindAccessDirectionParserRuleCall_1_0() { return cKindAccessDirectionParserRuleCall_1_0; }
		
		//DataAccessKeywords
		public RuleCall getDataAccessKeywordsParserRuleCall_2() { return cDataAccessKeywordsParserRuleCall_2; }
		
		//(dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
		public Assignment getDataFeatureClassifierAssignment_3() { return cDataFeatureClassifierAssignment_3; }
		
		//[aadl2::DataSubcomponentType|QCREF]
		public CrossReference getDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0() { return cDataFeatureClassifierDataSubcomponentTypeCrossReference_3_0; }
		
		//QCREF
		public RuleCall getDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1() { return cDataFeatureClassifierDataSubcomponentTypeQCREFParserRuleCall_3_0_1; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_4() { return cArrayDimensionAssignment_4; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_4_0() { return cArrayDimensionArrayDimensionParserRuleCall_4_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class AbstractFeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractFeature");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedAbstractFeatureCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedAbstractFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedAbstractFeatureCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cInAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final Keyword cInInKeyword_1_0_0 = (Keyword)cInAssignment_1_0.eContents().get(0);
		private final Assignment cOutAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final Keyword cOutOutKeyword_1_1_0 = (Keyword)cOutAssignment_1_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Keyword cPrototypeKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
		private final Assignment cFeaturePrototypeAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final CrossReference cFeaturePrototypeFeaturePrototypeCrossReference_2_0_1_0 = (CrossReference)cFeaturePrototypeAssignment_2_0_1.eContents().get(0);
		private final RuleCall cFeaturePrototypeFeaturePrototypeQCREFParserRuleCall_2_0_1_0_1 = (RuleCall)cFeaturePrototypeFeaturePrototypeCrossReference_2_0_1_0.eContents().get(1);
		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
		private final Keyword cFeatureKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cAbstractFeatureClassifierAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final CrossReference cAbstractFeatureClassifierAbstractFeatureClassifierCrossReference_2_1_1_0 = (CrossReference)cAbstractFeatureClassifierAssignment_2_1_1.eContents().get(0);
		private final RuleCall cAbstractFeatureClassifierAbstractFeatureClassifierQCREFParserRuleCall_2_1_1_0_1 = (RuleCall)cAbstractFeatureClassifierAbstractFeatureClassifierCrossReference_2_1_1_0.eContents().get(1);
		private final Keyword cFeatureKeyword_2_2 = (Keyword)cAlternatives_2.eContents().get(2);
		private final Assignment cArrayDimensionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cArrayDimensionArrayDimensionParserRuleCall_3_0 = (RuleCall)cArrayDimensionAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//AbstractFeature returns aadl2::AbstractFeature:
		//    // default is inout if no direction
		//    ((name=ID ':' )|
		//    (refined=[aadl2::AbstractFeature|REFINEDNAME] ':' RefinedToKeywords))
		//    (in ?= 'in' | out ?= 'out')?
		//    (
		//    'prototype' featurePrototype=[aadl2::FeaturePrototype|QCREF]
		//    | 'feature' abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF] | 'feature'
		//    )
		//    (arrayDimension+=ArrayDimension)?
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//// default is inout if no direction
		//((name=ID ':' )|
		//(refined=[aadl2::AbstractFeature|REFINEDNAME] ':' RefinedToKeywords))
		//(in ?= 'in' | out ?= 'out')?
		//(
		//'prototype' featurePrototype=[aadl2::FeaturePrototype|QCREF]
		//| 'feature' abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF] | 'feature'
		//)
		//(arrayDimension+=ArrayDimension)?
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
		public Group getGroup() { return cGroup; }
		
		//// default is inout if no direction
		//((name=ID ':' )|
		//(refined=[aadl2::AbstractFeature|REFINEDNAME] ':' RefinedToKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//(refined=[aadl2::AbstractFeature|REFINEDNAME] ':' RefinedToKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::AbstractFeature|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::AbstractFeature|REFINEDNAME]
		public CrossReference getRefinedAbstractFeatureCrossReference_0_1_0_0() { return cRefinedAbstractFeatureCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedAbstractFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedAbstractFeatureREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//(in ?= 'in' | out ?= 'out')?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//in ?= 'in'
		public Assignment getInAssignment_1_0() { return cInAssignment_1_0; }
		
		//'in'
		public Keyword getInInKeyword_1_0_0() { return cInInKeyword_1_0_0; }
		
		//out ?= 'out'
		public Assignment getOutAssignment_1_1() { return cOutAssignment_1_1; }
		
		//'out'
		public Keyword getOutOutKeyword_1_1_0() { return cOutOutKeyword_1_1_0; }
		
		//(
		//'prototype' featurePrototype=[aadl2::FeaturePrototype|QCREF]
		//| 'feature' abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF] | 'feature'
		//)
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//'prototype' featurePrototype=[aadl2::FeaturePrototype|QCREF]
		public Group getGroup_2_0() { return cGroup_2_0; }
		
		//'prototype'
		public Keyword getPrototypeKeyword_2_0_0() { return cPrototypeKeyword_2_0_0; }
		
		//featurePrototype=[aadl2::FeaturePrototype|QCREF]
		public Assignment getFeaturePrototypeAssignment_2_0_1() { return cFeaturePrototypeAssignment_2_0_1; }
		
		//[aadl2::FeaturePrototype|QCREF]
		public CrossReference getFeaturePrototypeFeaturePrototypeCrossReference_2_0_1_0() { return cFeaturePrototypeFeaturePrototypeCrossReference_2_0_1_0; }
		
		//QCREF
		public RuleCall getFeaturePrototypeFeaturePrototypeQCREFParserRuleCall_2_0_1_0_1() { return cFeaturePrototypeFeaturePrototypeQCREFParserRuleCall_2_0_1_0_1; }
		
		//'feature' abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF]
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'feature'
		public Keyword getFeatureKeyword_2_1_0() { return cFeatureKeyword_2_1_0; }
		
		//abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF]
		public Assignment getAbstractFeatureClassifierAssignment_2_1_1() { return cAbstractFeatureClassifierAssignment_2_1_1; }
		
		//[aadl2::AbstractFeatureClassifier|QCREF]
		public CrossReference getAbstractFeatureClassifierAbstractFeatureClassifierCrossReference_2_1_1_0() { return cAbstractFeatureClassifierAbstractFeatureClassifierCrossReference_2_1_1_0; }
		
		//QCREF
		public RuleCall getAbstractFeatureClassifierAbstractFeatureClassifierQCREFParserRuleCall_2_1_1_0_1() { return cAbstractFeatureClassifierAbstractFeatureClassifierQCREFParserRuleCall_2_1_1_0_1; }
		
		//'feature'
		public Keyword getFeatureKeyword_2_2() { return cFeatureKeyword_2_2; }
		
		//(arrayDimension+=ArrayDimension)?
		public Assignment getArrayDimensionAssignment_3() { return cArrayDimensionAssignment_3; }
		
		//ArrayDimension
		public RuleCall getArrayDimensionArrayDimensionParserRuleCall_3_0() { return cArrayDimensionArrayDimensionParserRuleCall_3_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class PortDirectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PortDirection");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cInKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cOutKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Keyword cInKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cOutKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		
		//PortDirection returns aadl2::DirectionType: 'in' | 'out' |  'in' 'out';
		@Override public ParserRule getRule() { return rule; }
		
		//'in' | 'out' |  'in' 'out'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'in'
		public Keyword getInKeyword_0() { return cInKeyword_0; }
		
		//'out'
		public Keyword getOutKeyword_1() { return cOutKeyword_1; }
		
		//'in' 'out'
		public Group getGroup_2() { return cGroup_2; }
		
		//'in'
		public Keyword getInKeyword_2_0() { return cInKeyword_2_0; }
		
		//'out'
		public Keyword getOutKeyword_2_1() { return cOutKeyword_2_1; }
	}
	public class InOutDirectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.InOutDirection");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cInKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cOutKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//InOutDirection returns aadl2::DirectionType: 'in' | 'out' ;
		@Override public ParserRule getRule() { return rule; }
		
		//'in' | 'out'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'in'
		public Keyword getInKeyword_0() { return cInKeyword_0; }
		
		//'out'
		public Keyword getOutKeyword_1() { return cOutKeyword_1; }
	}
	public class AccessDirectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AccessDirection");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cRequiresKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cProvidesKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//AccessDirection returns aadl2::AccessType: 'requires' | 'provides';
		@Override public ParserRule getRule() { return rule; }
		
		//'requires' | 'provides'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'requires'
		public Keyword getRequiresKeyword_0() { return cRequiresKeyword_0; }
		
		//'provides'
		public Keyword getProvidesKeyword_1() { return cProvidesKeyword_1; }
	}
	public class PortCategoryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PortCategory");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cDataKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cEventKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Keyword cEventKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cDataKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		
		//PortCategory returns aadl2::PortCategory: 'data' | 'event' |  ('event' 'data');
		@Override public ParserRule getRule() { return rule; }
		
		//'data' | 'event' |  ('event' 'data')
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'data'
		public Keyword getDataKeyword_0() { return cDataKeyword_0; }
		
		//'event'
		public Keyword getEventKeyword_1() { return cEventKeyword_1; }
		
		//('event' 'data')
		public Group getGroup_2() { return cGroup_2; }
		
		//'event'
		public Keyword getEventKeyword_2_0() { return cEventKeyword_2_0; }
		
		//'data'
		public Keyword getDataKeyword_2_1() { return cDataKeyword_2_1; }
	}
	public class FeatureGroupTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_0 = (RuleCall)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 Assignment cOwnedExtensionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
		private final RuleCall cOwnedExtensionGroupExtensionParserRuleCall_2_0_0 = (RuleCall)cOwnedExtensionAssignment_2_0.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cGroup_2.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_1.eContents().get(0);
		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
		private final Assignment cOwnedPrototypeBindingAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
		private final RuleCall cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0 = (RuleCall)cOwnedPrototypeBindingAssignment_2_1_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cPrototypesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Alternatives cAlternatives_3_1 = (Alternatives)cGroup_3.eContents().get(1);
		private final Group cGroup_3_1_0 = (Group)cAlternatives_3_1.eContents().get(0);
		private final Assignment cNoPrototypesAssignment_3_1_0_0 = (Assignment)cGroup_3_1_0.eContents().get(0);
		private final Keyword cNoPrototypesNoneKeyword_3_1_0_0_0 = (Keyword)cNoPrototypesAssignment_3_1_0_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_3_1_0_1 = (Keyword)cGroup_3_1_0.eContents().get(1);
		private final Assignment cOwnedPrototypeAssignment_3_1_1 = (Assignment)cAlternatives_3_1.eContents().get(1);
		private final RuleCall cOwnedPrototypePrototypeParserRuleCall_3_1_1_0 = (RuleCall)cOwnedPrototypeAssignment_3_1_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cFeaturesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Alternatives cAlternatives_4_1 = (Alternatives)cGroup_4.eContents().get(1);
		private final Assignment cOwnedDataPortAssignment_4_1_0 = (Assignment)cAlternatives_4_1.eContents().get(0);
		private final RuleCall cOwnedDataPortDataPortParserRuleCall_4_1_0_0 = (RuleCall)cOwnedDataPortAssignment_4_1_0.eContents().get(0);
		private final Assignment cOwnedEventPortAssignment_4_1_1 = (Assignment)cAlternatives_4_1.eContents().get(1);
		private final RuleCall cOwnedEventPortEventPortParserRuleCall_4_1_1_0 = (RuleCall)cOwnedEventPortAssignment_4_1_1.eContents().get(0);
		private final Assignment cOwnedEventDataPortAssignment_4_1_2 = (Assignment)cAlternatives_4_1.eContents().get(2);
		private final RuleCall cOwnedEventDataPortEventDataPortParserRuleCall_4_1_2_0 = (RuleCall)cOwnedEventDataPortAssignment_4_1_2.eContents().get(0);
		private final Assignment cOwnedFeatureGroupAssignment_4_1_3 = (Assignment)cAlternatives_4_1.eContents().get(3);
		private final RuleCall cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_3_0 = (RuleCall)cOwnedFeatureGroupAssignment_4_1_3.eContents().get(0);
		private final Assignment cOwnedDataAccessAssignment_4_1_4 = (Assignment)cAlternatives_4_1.eContents().get(4);
		private final RuleCall cOwnedDataAccessDataAccessParserRuleCall_4_1_4_0 = (RuleCall)cOwnedDataAccessAssignment_4_1_4.eContents().get(0);
		private final Assignment cOwnedBusAccessAssignment_4_1_5 = (Assignment)cAlternatives_4_1.eContents().get(5);
		private final RuleCall cOwnedBusAccessBusAccessParserRuleCall_4_1_5_0 = (RuleCall)cOwnedBusAccessAssignment_4_1_5.eContents().get(0);
		private final Assignment cOwnedSubprogramAccessAssignment_4_1_6 = (Assignment)cAlternatives_4_1.eContents().get(6);
		private final RuleCall cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_6_0 = (RuleCall)cOwnedSubprogramAccessAssignment_4_1_6.eContents().get(0);
		private final Assignment cOwnedSubprogramGroupAccessAssignment_4_1_7 = (Assignment)cAlternatives_4_1.eContents().get(7);
		private final RuleCall cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_7_0 = (RuleCall)cOwnedSubprogramGroupAccessAssignment_4_1_7.eContents().get(0);
		private final Assignment cOwnedAbstractFeatureAssignment_4_1_8 = (Assignment)cAlternatives_4_1.eContents().get(8);
		private final RuleCall cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_8_0 = (RuleCall)cOwnedAbstractFeatureAssignment_4_1_8.eContents().get(0);
		private final Assignment cOwnedParameterAssignment_4_1_9 = (Assignment)cAlternatives_4_1.eContents().get(9);
		private final RuleCall cOwnedParameterParameterParserRuleCall_4_1_9_0 = (RuleCall)cOwnedParameterAssignment_4_1_9.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final RuleCall cInverseOfKeywordsParserRuleCall_5_0 = (RuleCall)cGroup_5.eContents().get(0);
		private final Assignment cInverseAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final CrossReference cInverseFeatureGroupTypeCrossReference_5_1_0 = (CrossReference)cInverseAssignment_5_1.eContents().get(0);
		private final RuleCall cInverseFeatureGroupTypeQCREFParserRuleCall_5_1_0_1 = (RuleCall)cInverseFeatureGroupTypeCrossReference_5_1_0.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cPropertiesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Alternatives cAlternatives_6_1 = (Alternatives)cGroup_6.eContents().get(1);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1_0 = (Assignment)cAlternatives_6_1.eContents().get(0);
		private final RuleCall cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1_0.eContents().get(0);
		private final Group cGroup_6_1_1 = (Group)cAlternatives_6_1.eContents().get(1);
		private final Assignment cNoPropertiesAssignment_6_1_1_0 = (Assignment)cGroup_6_1_1.eContents().get(0);
		private final Keyword cNoPropertiesNoneKeyword_6_1_1_0_0 = (Keyword)cNoPropertiesAssignment_6_1_1_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_6_1_1_1 = (Keyword)cGroup_6_1_1.eContents().get(1);
		private final Assignment cOwnedAnnexSubclauseAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_7.eContents().get(0);
		private final Keyword cEndKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final RuleCall cIDTerminalRuleCall_9 = (RuleCall)cGroup.eContents().get(9);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//FeatureGroupType returns aadl2::FeatureGroupType:
		//    FeatureGroupKeywords name=ID
		//    (  ownedExtension=GroupExtension
		//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//    )?
		//    ('prototypes' ((noPrototypes?='none' ';') |
		//    (ownedPrototype+=Prototype)+))?
		//    ('features' (// no none for FGT in standard 2.1 (noFeatures?='none' ';') |
		//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//    | ownedAbstractFeature+=AbstractFeature
		//    | ownedParameter+=Parameter
		//    )+ ) )?
		//    (InverseOfKeywords inverse=[aadl2::FeatureGroupType|QCREF])?
		//    ('properties'
		//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//    | (noProperties?='none' ';')))?
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';';
		@Override public ParserRule getRule() { return rule; }
		
		//FeatureGroupKeywords name=ID
		//(  ownedExtension=GroupExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		//('features' (// no none for FGT in standard 2.1 (noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//| ownedParameter+=Parameter
		//)+ ) )?
		//(InverseOfKeywords inverse=[aadl2::FeatureGroupType|QCREF])?
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_0() { return cFeatureGroupKeywordsParserRuleCall_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//(  ownedExtension=GroupExtension
		//  ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		//)?
		public Group getGroup_2() { return cGroup_2; }
		
		//ownedExtension=GroupExtension
		public Assignment getOwnedExtensionAssignment_2_0() { return cOwnedExtensionAssignment_2_0; }
		
		//GroupExtension
		public RuleCall getOwnedExtensionGroupExtensionParserRuleCall_2_0_0() { return cOwnedExtensionGroupExtensionParserRuleCall_2_0_0; }
		
		//('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
		public Group getGroup_2_1() { return cGroup_2_1; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1_0() { return cLeftParenthesisKeyword_2_1_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_1() { return cOwnedPrototypeBindingAssignment_2_1_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_1_0; }
		
		//(','  ownedPrototypeBinding+=PrototypeBinding)*
		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
		
		//','
		public Keyword getCommaKeyword_2_1_2_0() { return cCommaKeyword_2_1_2_0; }
		
		//ownedPrototypeBinding+=PrototypeBinding
		public Assignment getOwnedPrototypeBindingAssignment_2_1_2_1() { return cOwnedPrototypeBindingAssignment_2_1_2_1; }
		
		//PrototypeBinding
		public RuleCall getOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0() { return cOwnedPrototypeBindingPrototypeBindingParserRuleCall_2_1_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_1_3() { return cRightParenthesisKeyword_2_1_3; }
		
		//('prototypes' ((noPrototypes?='none' ';') |
		//(ownedPrototype+=Prototype)+))?
		public Group getGroup_3() { return cGroup_3; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_3_0() { return cPrototypesKeyword_3_0; }
		
		//((noPrototypes?='none' ';') |
		//   (ownedPrototype+=Prototype)+)
		public Alternatives getAlternatives_3_1() { return cAlternatives_3_1; }
		
		//(noPrototypes?='none' ';')
		public Group getGroup_3_1_0() { return cGroup_3_1_0; }
		
		//noPrototypes?='none'
		public Assignment getNoPrototypesAssignment_3_1_0_0() { return cNoPrototypesAssignment_3_1_0_0; }
		
		//'none'
		public Keyword getNoPrototypesNoneKeyword_3_1_0_0_0() { return cNoPrototypesNoneKeyword_3_1_0_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3_1_0_1() { return cSemicolonKeyword_3_1_0_1; }
		
		//(ownedPrototype+=Prototype)+
		public Assignment getOwnedPrototypeAssignment_3_1_1() { return cOwnedPrototypeAssignment_3_1_1; }
		
		//Prototype
		public RuleCall getOwnedPrototypePrototypeParserRuleCall_3_1_1_0() { return cOwnedPrototypePrototypeParserRuleCall_3_1_1_0; }
		
		//('features' (// no none for FGT in standard 2.1 (noFeatures?='none' ';') |
		//(ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//| ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//| ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//| ownedAbstractFeature+=AbstractFeature
		//| ownedParameter+=Parameter
		//)+ ) )?
		public Group getGroup_4() { return cGroup_4; }
		
		//'features'
		public Keyword getFeaturesKeyword_4_0() { return cFeaturesKeyword_4_0; }
		
		//(// no none for FGT in standard 2.1 (noFeatures?='none' ';') |
		//   (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
		//   | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
		//   | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
		//   | ownedAbstractFeature+=AbstractFeature
		//   | ownedParameter+=Parameter
		//   )+ )
		public Alternatives getAlternatives_4_1() { return cAlternatives_4_1; }
		
		//ownedDataPort+=DataPort
		public Assignment getOwnedDataPortAssignment_4_1_0() { return cOwnedDataPortAssignment_4_1_0; }
		
		//DataPort
		public RuleCall getOwnedDataPortDataPortParserRuleCall_4_1_0_0() { return cOwnedDataPortDataPortParserRuleCall_4_1_0_0; }
		
		//ownedEventPort+=EventPort
		public Assignment getOwnedEventPortAssignment_4_1_1() { return cOwnedEventPortAssignment_4_1_1; }
		
		//EventPort
		public RuleCall getOwnedEventPortEventPortParserRuleCall_4_1_1_0() { return cOwnedEventPortEventPortParserRuleCall_4_1_1_0; }
		
		//ownedEventDataPort+=EventDataPort
		public Assignment getOwnedEventDataPortAssignment_4_1_2() { return cOwnedEventDataPortAssignment_4_1_2; }
		
		//EventDataPort
		public RuleCall getOwnedEventDataPortEventDataPortParserRuleCall_4_1_2_0() { return cOwnedEventDataPortEventDataPortParserRuleCall_4_1_2_0; }
		
		//ownedFeatureGroup+=FeatureGroup
		public Assignment getOwnedFeatureGroupAssignment_4_1_3() { return cOwnedFeatureGroupAssignment_4_1_3; }
		
		//FeatureGroup
		public RuleCall getOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_3_0() { return cOwnedFeatureGroupFeatureGroupParserRuleCall_4_1_3_0; }
		
		//ownedDataAccess+=DataAccess
		public Assignment getOwnedDataAccessAssignment_4_1_4() { return cOwnedDataAccessAssignment_4_1_4; }
		
		//DataAccess
		public RuleCall getOwnedDataAccessDataAccessParserRuleCall_4_1_4_0() { return cOwnedDataAccessDataAccessParserRuleCall_4_1_4_0; }
		
		//ownedBusAccess+=BusAccess
		public Assignment getOwnedBusAccessAssignment_4_1_5() { return cOwnedBusAccessAssignment_4_1_5; }
		
		//BusAccess
		public RuleCall getOwnedBusAccessBusAccessParserRuleCall_4_1_5_0() { return cOwnedBusAccessBusAccessParserRuleCall_4_1_5_0; }
		
		//ownedSubprogramAccess+=SubprogramAccess
		public Assignment getOwnedSubprogramAccessAssignment_4_1_6() { return cOwnedSubprogramAccessAssignment_4_1_6; }
		
		//SubprogramAccess
		public RuleCall getOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_6_0() { return cOwnedSubprogramAccessSubprogramAccessParserRuleCall_4_1_6_0; }
		
		//ownedSubprogramGroupAccess+=SubprogramGroupAccess
		public Assignment getOwnedSubprogramGroupAccessAssignment_4_1_7() { return cOwnedSubprogramGroupAccessAssignment_4_1_7; }
		
		//SubprogramGroupAccess
		public RuleCall getOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_7_0() { return cOwnedSubprogramGroupAccessSubprogramGroupAccessParserRuleCall_4_1_7_0; }
		
		//ownedAbstractFeature+=AbstractFeature
		public Assignment getOwnedAbstractFeatureAssignment_4_1_8() { return cOwnedAbstractFeatureAssignment_4_1_8; }
		
		//AbstractFeature
		public RuleCall getOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_8_0() { return cOwnedAbstractFeatureAbstractFeatureParserRuleCall_4_1_8_0; }
		
		//ownedParameter+=Parameter
		public Assignment getOwnedParameterAssignment_4_1_9() { return cOwnedParameterAssignment_4_1_9; }
		
		//Parameter
		public RuleCall getOwnedParameterParameterParserRuleCall_4_1_9_0() { return cOwnedParameterParameterParserRuleCall_4_1_9_0; }
		
		//(InverseOfKeywords inverse=[aadl2::FeatureGroupType|QCREF])?
		public Group getGroup_5() { return cGroup_5; }
		
		//InverseOfKeywords
		public RuleCall getInverseOfKeywordsParserRuleCall_5_0() { return cInverseOfKeywordsParserRuleCall_5_0; }
		
		//inverse=[aadl2::FeatureGroupType|QCREF]
		public Assignment getInverseAssignment_5_1() { return cInverseAssignment_5_1; }
		
		//[aadl2::FeatureGroupType|QCREF]
		public CrossReference getInverseFeatureGroupTypeCrossReference_5_1_0() { return cInverseFeatureGroupTypeCrossReference_5_1_0; }
		
		//QCREF
		public RuleCall getInverseFeatureGroupTypeQCREFParserRuleCall_5_1_0_1() { return cInverseFeatureGroupTypeQCREFParserRuleCall_5_1_0_1; }
		
		//('properties'
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';')))?
		public Group getGroup_6() { return cGroup_6; }
		
		//'properties'
		public Keyword getPropertiesKeyword_6_0() { return cPropertiesKeyword_6_0; }
		
		//((ownedPropertyAssociation+=ContainedPropertyAssociation)+
		//| (noProperties?='none' ';'))
		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
		
		//(ownedPropertyAssociation+=ContainedPropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1_0() { return cOwnedPropertyAssociationAssignment_6_1_0; }
		
		//ContainedPropertyAssociation
		public RuleCall getOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0() { return cOwnedPropertyAssociationContainedPropertyAssociationParserRuleCall_6_1_0_0; }
		
		//(noProperties?='none' ';')
		public Group getGroup_6_1_1() { return cGroup_6_1_1; }
		
		//noProperties?='none'
		public Assignment getNoPropertiesAssignment_6_1_1_0() { return cNoPropertiesAssignment_6_1_1_0; }
		
		//'none'
		public Keyword getNoPropertiesNoneKeyword_6_1_1_0_0() { return cNoPropertiesNoneKeyword_6_1_1_0_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6_1_1_1() { return cSemicolonKeyword_6_1_1_1; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_7() { return cOwnedAnnexSubclauseAssignment_7; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_7_0; }
		
		//'end'
		public Keyword getEndKeyword_8() { return cEndKeyword_8; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_9() { return cIDTerminalRuleCall_9; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class EventSourceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventSource");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cEventKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//// ********* internal features
		//EventSource returns aadl2::EventSource:
		//    name = ID ':' 'event'
		//    (
		//        '{'
		//            (ownedPropertyAssociation+=PropertyAssociation)+
		//        '}'
		//    )?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name = ID ':' 'event'
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name = ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'event'
		public Keyword getEventKeyword_2() { return cEventKeyword_2; }
		
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_3_1() { return cOwnedPropertyAssociationAssignment_3_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class EventDataSourceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventDataSource");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cEventDataKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Assignment cDataClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cDataClassifierDataClassifierCrossReference_3_0 = (CrossReference)cDataClassifierAssignment_3.eContents().get(0);
		private final RuleCall cDataClassifierDataClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cDataClassifierDataClassifierCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//EventDataSource returns aadl2::EventDataSource:
		//    name = ID ':' EventDataKeywords
		//    (
		//        dataClassifier = [aadl2::DataClassifier|QCREF]
		//    )?
		//    (
		//        '{'
		//            (ownedPropertyAssociation+=PropertyAssociation)+
		//        '}'
		//    )?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name = ID ':' EventDataKeywords
		//(
		//    dataClassifier = [aadl2::DataClassifier|QCREF]
		//)?
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name = ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//EventDataKeywords
		public RuleCall getEventDataKeywordsParserRuleCall_2() { return cEventDataKeywordsParserRuleCall_2; }
		
		//(
		//    dataClassifier = [aadl2::DataClassifier|QCREF]
		//)?
		public Assignment getDataClassifierAssignment_3() { return cDataClassifierAssignment_3; }
		
		//[aadl2::DataClassifier|QCREF]
		public CrossReference getDataClassifierDataClassifierCrossReference_3_0() { return cDataClassifierDataClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getDataClassifierDataClassifierQCREFParserRuleCall_3_0_1() { return cDataClassifierDataClassifierQCREFParserRuleCall_3_0_1; }
		
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class PortProxyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PortProxy");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cPortKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cDataClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cDataClassifierDataClassifierCrossReference_3_0 = (CrossReference)cDataClassifierAssignment_3.eContents().get(0);
		private final RuleCall cDataClassifierDataClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cDataClassifierDataClassifierCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//PortProxy returns aadl2::PortProxy:
		//    name = ID ':' 'port'
		//    (
		//        dataClassifier = [aadl2::DataClassifier|QCREF]
		//    )?
		//    (
		//        '{'
		//            (ownedPropertyAssociation+=PropertyAssociation)+
		//        '}'
		//    )?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name = ID ':' 'port'
		//(
		//    dataClassifier = [aadl2::DataClassifier|QCREF]
		//)?
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name = ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'port'
		public Keyword getPortKeyword_2() { return cPortKeyword_2; }
		
		//(
		//    dataClassifier = [aadl2::DataClassifier|QCREF]
		//)?
		public Assignment getDataClassifierAssignment_3() { return cDataClassifierAssignment_3; }
		
		//[aadl2::DataClassifier|QCREF]
		public CrossReference getDataClassifierDataClassifierCrossReference_3_0() { return cDataClassifierDataClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getDataClassifierDataClassifierQCREFParserRuleCall_3_0_1() { return cDataClassifierDataClassifierQCREFParserRuleCall_3_0_1; }
		
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class SubprogramProxyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramProxy");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cSubprogramKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cSubprogramClassifierAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cSubprogramClassifierSubprogramClassifierCrossReference_3_0 = (CrossReference)cSubprogramClassifierAssignment_3.eContents().get(0);
		private final RuleCall cSubprogramClassifierSubprogramClassifierQCREFParserRuleCall_3_0_1 = (RuleCall)cSubprogramClassifierSubprogramClassifierCrossReference_3_0.eContents().get(1);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//SubprogramProxy returns aadl2::SubprogramProxy:
		//    name = ID ':' 'subprogram'
		//    (
		//        subprogramClassifier = [aadl2::SubprogramClassifier|QCREF]
		//    )?
		//    (
		//        '{'
		//            (ownedPropertyAssociation+=PropertyAssociation)+
		//        '}'
		//    )?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name = ID ':' 'subprogram'
		//(
		//    subprogramClassifier = [aadl2::SubprogramClassifier|QCREF]
		//)?
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name = ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_2() { return cSubprogramKeyword_2; }
		
		//(
		//    subprogramClassifier = [aadl2::SubprogramClassifier|QCREF]
		//)?
		public Assignment getSubprogramClassifierAssignment_3() { return cSubprogramClassifierAssignment_3; }
		
		//[aadl2::SubprogramClassifier|QCREF]
		public CrossReference getSubprogramClassifierSubprogramClassifierCrossReference_3_0() { return cSubprogramClassifierSubprogramClassifierCrossReference_3_0; }
		
		//QCREF
		public RuleCall getSubprogramClassifierSubprogramClassifierQCREFParserRuleCall_3_0_1() { return cSubprogramClassifierSubprogramClassifierQCREFParserRuleCall_3_0_1; }
		
		//(
		//    '{'
		//        (ownedPropertyAssociation+=PropertyAssociation)+
		//    '}'
		//)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class NestedConnectedElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.NestedConnectedElement");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cConnectedElementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cContextAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cContextContextCrossReference_1_0_0 = (CrossReference)cContextAssignment_1_0.eContents().get(0);
		private final RuleCall cContextContextIDTerminalRuleCall_1_0_0_1 = (RuleCall)cContextContextCrossReference_1_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cConnectionEndAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final CrossReference cConnectionEndConnectionEndCrossReference_1_2_0 = (CrossReference)cConnectionEndAssignment_1_2.eContents().get(0);
		private final RuleCall cConnectionEndConnectionEndIDTerminalRuleCall_1_2_0_1 = (RuleCall)cConnectionEndConnectionEndCrossReference_1_2_0.eContents().get(1);
		private final Keyword cFullStopKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		private final Assignment cNextAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
		private final RuleCall cNextConnectedElementChainParserRuleCall_1_4_0 = (RuleCall)cNextAssignment_1_4.eContents().get(0);
		
		//// ********* connections
		//NestedConnectedElement returns aadl2::ConnectedElement:
		//    ConnectedElement |
		//    context=[aadl2::Context|ID] '.' connectionEnd=[aadl2::ConnectionEnd|ID] '.' next=ConnectedElementChain
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ConnectedElement |
		//context=[aadl2::Context|ID] '.' connectionEnd=[aadl2::ConnectionEnd|ID] '.' next=ConnectedElementChain
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ConnectedElement
		public RuleCall getConnectedElementParserRuleCall_0() { return cConnectedElementParserRuleCall_0; }
		
		//context=[aadl2::Context|ID] '.' connectionEnd=[aadl2::ConnectionEnd|ID] '.' next=ConnectedElementChain
		public Group getGroup_1() { return cGroup_1; }
		
		//context=[aadl2::Context|ID]
		public Assignment getContextAssignment_1_0() { return cContextAssignment_1_0; }
		
		//[aadl2::Context|ID]
		public CrossReference getContextContextCrossReference_1_0_0() { return cContextContextCrossReference_1_0_0; }
		
		//ID
		public RuleCall getContextContextIDTerminalRuleCall_1_0_0_1() { return cContextContextIDTerminalRuleCall_1_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_1_1() { return cFullStopKeyword_1_1; }
		
		//connectionEnd=[aadl2::ConnectionEnd|ID]
		public Assignment getConnectionEndAssignment_1_2() { return cConnectionEndAssignment_1_2; }
		
		//[aadl2::ConnectionEnd|ID]
		public CrossReference getConnectionEndConnectionEndCrossReference_1_2_0() { return cConnectionEndConnectionEndCrossReference_1_2_0; }
		
		//ID
		public RuleCall getConnectionEndConnectionEndIDTerminalRuleCall_1_2_0_1() { return cConnectionEndConnectionEndIDTerminalRuleCall_1_2_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_1_3() { return cFullStopKeyword_1_3; }
		
		//next=ConnectedElementChain
		public Assignment getNextAssignment_1_4() { return cNextAssignment_1_4; }
		
		//ConnectedElementChain
		public RuleCall getNextConnectedElementChainParserRuleCall_1_4_0() { return cNextConnectedElementChainParserRuleCall_1_4_0; }
	}
	public class ConnectedElementChainElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ConnectedElementChain");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cConnectionEndAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cConnectionEndConnectionEndCrossReference_0_0 = (CrossReference)cConnectionEndAssignment_0.eContents().get(0);
		private final RuleCall cConnectionEndConnectionEndIDTerminalRuleCall_0_0_1 = (RuleCall)cConnectionEndConnectionEndCrossReference_0_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cNextAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNextConnectedElementChainParserRuleCall_1_1_0 = (RuleCall)cNextAssignment_1_1.eContents().get(0);
		
		//ConnectedElementChain returns aadl2::ConnectedElement:
		//    connectionEnd=[aadl2::ConnectionEnd|ID] ('.' next=ConnectedElementChain)?
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//connectionEnd=[aadl2::ConnectionEnd|ID] ('.' next=ConnectedElementChain)?
		public Group getGroup() { return cGroup; }
		
		//connectionEnd=[aadl2::ConnectionEnd|ID]
		public Assignment getConnectionEndAssignment_0() { return cConnectionEndAssignment_0; }
		
		//[aadl2::ConnectionEnd|ID]
		public CrossReference getConnectionEndConnectionEndCrossReference_0_0() { return cConnectionEndConnectionEndCrossReference_0_0; }
		
		//ID
		public RuleCall getConnectionEndConnectionEndIDTerminalRuleCall_0_0_1() { return cConnectionEndConnectionEndIDTerminalRuleCall_0_0_1; }
		
		//('.' next=ConnectedElementChain)?
		public Group getGroup_1() { return cGroup_1; }
		
		//'.'
		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
		
		//next=ConnectedElementChain
		public Assignment getNextAssignment_1_1() { return cNextAssignment_1_1; }
		
		//ConnectedElementChain
		public RuleCall getNextConnectedElementChainParserRuleCall_1_1_0() { return cNextConnectedElementChainParserRuleCall_1_1_0; }
	}
	public class ConnectedElementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ConnectedElement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Assignment cContextAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final CrossReference cContextContextCrossReference_0_0_0 = (CrossReference)cContextAssignment_0_0.eContents().get(0);
		private final RuleCall cContextContextIDTerminalRuleCall_0_0_0_1 = (RuleCall)cContextContextCrossReference_0_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cConnectionEndAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cConnectionEndConnectionEndCrossReference_1_0 = (CrossReference)cConnectionEndAssignment_1.eContents().get(0);
		private final RuleCall cConnectionEndConnectionEndIDTerminalRuleCall_1_0_1 = (RuleCall)cConnectionEndConnectionEndCrossReference_1_0.eContents().get(1);
		
		//ConnectedElement returns aadl2::ConnectedElement:
		//    (context=[aadl2::Context|ID] '.')?
		//    connectionEnd=[aadl2::ConnectionEnd|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(context=[aadl2::Context|ID] '.')?
		//connectionEnd=[aadl2::ConnectionEnd|ID]
		public Group getGroup() { return cGroup; }
		
		//(context=[aadl2::Context|ID] '.')?
		public Group getGroup_0() { return cGroup_0; }
		
		//context=[aadl2::Context|ID]
		public Assignment getContextAssignment_0_0() { return cContextAssignment_0_0; }
		
		//[aadl2::Context|ID]
		public CrossReference getContextContextCrossReference_0_0_0() { return cContextContextCrossReference_0_0_0; }
		
		//ID
		public RuleCall getContextContextIDTerminalRuleCall_0_0_0_1() { return cContextContextIDTerminalRuleCall_0_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_0_1() { return cFullStopKeyword_0_1; }
		
		//connectionEnd=[aadl2::ConnectionEnd|ID]
		public Assignment getConnectionEndAssignment_1() { return cConnectionEndAssignment_1; }
		
		//[aadl2::ConnectionEnd|ID]
		public CrossReference getConnectionEndConnectionEndCrossReference_1_0() { return cConnectionEndConnectionEndCrossReference_1_0; }
		
		//ID
		public RuleCall getConnectionEndConnectionEndIDTerminalRuleCall_1_0_1() { return cConnectionEndConnectionEndIDTerminalRuleCall_1_0_1; }
	}
	public class ProcessorPortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorPort");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConnectionEndAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConnectionEndPortProxyCrossReference_2_0 = (CrossReference)cConnectionEndAssignment_2.eContents().get(0);
		private final RuleCall cConnectionEndPortProxyIDTerminalRuleCall_2_0_1 = (RuleCall)cConnectionEndPortProxyCrossReference_2_0.eContents().get(1);
		
		//ProcessorPort returns aadl2::ConnectedElement:
		//    'processor' '.' connectionEnd=[aadl2::PortProxy|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'processor' '.' connectionEnd=[aadl2::PortProxy|ID]
		public Group getGroup() { return cGroup; }
		
		//'processor'
		public Keyword getProcessorKeyword_0() { return cProcessorKeyword_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
		
		//connectionEnd=[aadl2::PortProxy|ID]
		public Assignment getConnectionEndAssignment_2() { return cConnectionEndAssignment_2; }
		
		//[aadl2::PortProxy|ID]
		public CrossReference getConnectionEndPortProxyCrossReference_2_0() { return cConnectionEndPortProxyCrossReference_2_0; }
		
		//ID
		public RuleCall getConnectionEndPortProxyIDTerminalRuleCall_2_0_1() { return cConnectionEndPortProxyIDTerminalRuleCall_2_0_1; }
	}
	public class ProcessorSubprogramElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorSubprogram");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConnectionEndAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConnectionEndSubprogramProxyCrossReference_2_0 = (CrossReference)cConnectionEndAssignment_2.eContents().get(0);
		private final RuleCall cConnectionEndSubprogramProxyIDTerminalRuleCall_2_0_1 = (RuleCall)cConnectionEndSubprogramProxyCrossReference_2_0.eContents().get(1);
		
		//ProcessorSubprogram returns aadl2::ConnectedElement:
		//    'processor' '.' connectionEnd=[aadl2::SubprogramProxy|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'processor' '.' connectionEnd=[aadl2::SubprogramProxy|ID]
		public Group getGroup() { return cGroup; }
		
		//'processor'
		public Keyword getProcessorKeyword_0() { return cProcessorKeyword_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
		
		//connectionEnd=[aadl2::SubprogramProxy|ID]
		public Assignment getConnectionEndAssignment_2() { return cConnectionEndAssignment_2; }
		
		//[aadl2::SubprogramProxy|ID]
		public CrossReference getConnectionEndSubprogramProxyCrossReference_2_0() { return cConnectionEndSubprogramProxyCrossReference_2_0; }
		
		//ID
		public RuleCall getConnectionEndSubprogramProxyIDTerminalRuleCall_2_0_1() { return cConnectionEndSubprogramProxyIDTerminalRuleCall_2_0_1; }
	}
	public class InternalEventElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.InternalEvent");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSelfKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cConnectionEndAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cConnectionEndInternalFeatureCrossReference_2_0 = (CrossReference)cConnectionEndAssignment_2.eContents().get(0);
		private final RuleCall cConnectionEndInternalFeatureIDTerminalRuleCall_2_0_1 = (RuleCall)cConnectionEndInternalFeatureCrossReference_2_0.eContents().get(1);
		
		//InternalEvent returns aadl2::ConnectedElement:
		//    'self' '.' connectionEnd=[aadl2::InternalFeature|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'self' '.' connectionEnd=[aadl2::InternalFeature|ID]
		public Group getGroup() { return cGroup; }
		
		//'self'
		public Keyword getSelfKeyword_0() { return cSelfKeyword_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
		
		//connectionEnd=[aadl2::InternalFeature|ID]
		public Assignment getConnectionEndAssignment_2() { return cConnectionEndAssignment_2; }
		
		//[aadl2::InternalFeature|ID]
		public CrossReference getConnectionEndInternalFeatureCrossReference_2_0() { return cConnectionEndInternalFeatureCrossReference_2_0; }
		
		//ID
		public RuleCall getConnectionEndInternalFeatureIDTerminalRuleCall_2_0_1() { return cConnectionEndInternalFeatureIDTerminalRuleCall_2_0_1; }
	}
	public class AbstractConnectionEndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractConnectionEnd");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cConnectedElementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cProcessorPortParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cInternalEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//AbstractConnectionEnd returns aadl2::ConnectedElement:
		//     ConnectedElement | ProcessorPort | InternalEvent
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ConnectedElement | ProcessorPort | InternalEvent
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ConnectedElement
		public RuleCall getConnectedElementParserRuleCall_0() { return cConnectedElementParserRuleCall_0; }
		
		//ProcessorPort
		public RuleCall getProcessorPortParserRuleCall_1() { return cProcessorPortParserRuleCall_1; }
		
		//InternalEvent
		public RuleCall getInternalEventParserRuleCall_2() { return cInternalEventParserRuleCall_2; }
	}
	public class ProcessorConnectionEndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorConnectionEnd");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cConnectedElementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cProcessorPortParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//ProcessorConnectionEnd returns aadl2::ConnectedElement:
		//     ConnectedElement | ProcessorPort
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ConnectedElement | ProcessorPort
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ConnectedElement
		public RuleCall getConnectedElementParserRuleCall_0() { return cConnectedElementParserRuleCall_0; }
		
		//ProcessorPort
		public RuleCall getProcessorPortParserRuleCall_1() { return cProcessorPortParserRuleCall_1; }
	}
	public class AccessConnectionEndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AccessConnectionEnd");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cConnectedElementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cProcessorSubprogramParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//AccessConnectionEnd returns aadl2::ConnectedElement:
		//     ConnectedElement | ProcessorSubprogram
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//ConnectedElement | ProcessorSubprogram
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ConnectedElement
		public RuleCall getConnectedElementParserRuleCall_0() { return cConnectedElementParserRuleCall_0; }
		
		//ProcessorSubprogram
		public RuleCall getProcessorSubprogramParserRuleCall_1() { return cProcessorSubprogramParserRuleCall_1; }
	}
	public class PortConnectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PortConnection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cPortKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Assignment cSourceAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cSourceAbstractConnectionEndParserRuleCall_0_0_3_0 = (RuleCall)cSourceAssignment_0_0_3.eContents().get(0);
		private final Alternatives cAlternatives_0_0_4 = (Alternatives)cGroup_0_0.eContents().get(4);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4_0 = (Keyword)cAlternatives_0_0_4.eContents().get(0);
		private final Assignment cBidirectionalAssignment_0_0_4_1 = (Assignment)cAlternatives_0_0_4.eContents().get(1);
		private final Keyword cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0 = (Keyword)cBidirectionalAssignment_0_0_4_1.eContents().get(0);
		private final Assignment cDestinationAssignment_0_0_5 = (Assignment)cGroup_0_0.eContents().get(5);
		private final RuleCall cDestinationAbstractConnectionEndParserRuleCall_0_0_5_0 = (RuleCall)cDestinationAssignment_0_0_5.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedPortConnectionCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedPortConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedPortConnectionCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cPortKeyword_0_1_3 = (Keyword)cGroup_0_1.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Assignment cInModeOrTransitionAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_0.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0_0.eContents().get(1);
		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_1_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//PortConnection returns aadl2::PortConnection:
		//    ((name=ID ':' 'port'
		//            source=AbstractConnectionEnd
		//    ('->' | bidirectional?='<->')
		//    destination=AbstractConnectionEnd )
		//    |
		//    (refined=[aadl2::PortConnection|REFINEDNAME] ':' RefinedToKeywords 'port'))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//    ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' 'port'
		//        source=AbstractConnectionEnd
		//('->' | bidirectional?='<->')
		//destination=AbstractConnectionEnd )
		//|
		//(refined=[aadl2::PortConnection|REFINEDNAME] ':' RefinedToKeywords 'port'))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' 'port'
		//        source=AbstractConnectionEnd
		//('->' | bidirectional?='<->')
		//destination=AbstractConnectionEnd )
		//|
		//(refined=[aadl2::PortConnection|REFINEDNAME] ':' RefinedToKeywords 'port'))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' 'port'
		//            source=AbstractConnectionEnd
		//    ('->' | bidirectional?='<->')
		//    destination=AbstractConnectionEnd )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//'port'
		public Keyword getPortKeyword_0_0_2() { return cPortKeyword_0_0_2; }
		
		//source=AbstractConnectionEnd
		public Assignment getSourceAssignment_0_0_3() { return cSourceAssignment_0_0_3; }
		
		//AbstractConnectionEnd
		public RuleCall getSourceAbstractConnectionEndParserRuleCall_0_0_3_0() { return cSourceAbstractConnectionEndParserRuleCall_0_0_3_0; }
		
		//('->' | bidirectional?='<->')
		public Alternatives getAlternatives_0_0_4() { return cAlternatives_0_0_4; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4_0() { return cHyphenMinusGreaterThanSignKeyword_0_0_4_0; }
		
		//bidirectional?='<->'
		public Assignment getBidirectionalAssignment_0_0_4_1() { return cBidirectionalAssignment_0_0_4_1; }
		
		//'<->'
		public Keyword getBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0() { return cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0; }
		
		//destination=AbstractConnectionEnd
		public Assignment getDestinationAssignment_0_0_5() { return cDestinationAssignment_0_0_5; }
		
		//AbstractConnectionEnd
		public RuleCall getDestinationAbstractConnectionEndParserRuleCall_0_0_5_0() { return cDestinationAbstractConnectionEndParserRuleCall_0_0_5_0; }
		
		//(refined=[aadl2::PortConnection|REFINEDNAME] ':' RefinedToKeywords 'port')
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::PortConnection|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::PortConnection|REFINEDNAME]
		public CrossReference getRefinedPortConnectionCrossReference_0_1_0_0() { return cRefinedPortConnectionCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedPortConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedPortConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'port'
		public Keyword getPortKeyword_0_1_3() { return cPortKeyword_0_1_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//(inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//   )
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_0() { return cInModeOrTransitionAssignment_2_2_0; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_2_1_0() { return cCommaKeyword_2_2_1_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_1_1() { return cInModeOrTransitionAssignment_2_2_1_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class AccessConnectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AccessConnection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Assignment cAccessCategoryAssignment_0_0_2 = (Assignment)cGroup_0_0.eContents().get(2);
		private final RuleCall cAccessCategoryAccessCategoryParserRuleCall_0_0_2_0 = (RuleCall)cAccessCategoryAssignment_0_0_2.eContents().get(0);
		private final Keyword cAccessKeyword_0_0_3 = (Keyword)cGroup_0_0.eContents().get(3);
		private final Assignment cSourceAssignment_0_0_4 = (Assignment)cGroup_0_0.eContents().get(4);
		private final RuleCall cSourceAccessConnectionEndParserRuleCall_0_0_4_0 = (RuleCall)cSourceAssignment_0_0_4.eContents().get(0);
		private final Alternatives cAlternatives_0_0_5 = (Alternatives)cGroup_0_0.eContents().get(5);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_5_0 = (Keyword)cAlternatives_0_0_5.eContents().get(0);
		private final Assignment cBidirectionalAssignment_0_0_5_1 = (Assignment)cAlternatives_0_0_5.eContents().get(1);
		private final Keyword cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_5_1_0 = (Keyword)cBidirectionalAssignment_0_0_5_1.eContents().get(0);
		private final Assignment cDestinationAssignment_0_0_6 = (Assignment)cGroup_0_0.eContents().get(6);
		private final RuleCall cDestinationAccessConnectionEndParserRuleCall_0_0_6_0 = (RuleCall)cDestinationAssignment_0_0_6.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedAccessConnectionCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedAccessConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedAccessConnectionCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Assignment cAccessCategoryAssignment_0_1_3 = (Assignment)cGroup_0_1.eContents().get(3);
		private final RuleCall cAccessCategoryAccessCategoryParserRuleCall_0_1_3_0 = (RuleCall)cAccessCategoryAssignment_0_1_3.eContents().get(0);
		private final Keyword cAccessKeyword_0_1_4 = (Keyword)cGroup_0_1.eContents().get(4);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Assignment cInModeOrTransitionAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_0.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0_0.eContents().get(1);
		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_1_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//AccessConnection returns aadl2::AccessConnection:
		//    ((name=ID ':'  accessCategory=AccessCategory 'access'
		//            source=AccessConnectionEnd
		//            ('->' | bidirectional?='<->')
		//            destination=AccessConnectionEnd )
		//    |
		//    (refined=[aadl2::AccessConnection|REFINEDNAME] ':' RefinedToKeywords accessCategory=AccessCategory 'access'))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//    ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':'  accessCategory=AccessCategory 'access'
		//        source=AccessConnectionEnd
		//        ('->' | bidirectional?='<->')
		//        destination=AccessConnectionEnd )
		//|
		//(refined=[aadl2::AccessConnection|REFINEDNAME] ':' RefinedToKeywords accessCategory=AccessCategory 'access'))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':'  accessCategory=AccessCategory 'access'
		//        source=AccessConnectionEnd
		//        ('->' | bidirectional?='<->')
		//        destination=AccessConnectionEnd )
		//|
		//(refined=[aadl2::AccessConnection|REFINEDNAME] ':' RefinedToKeywords accessCategory=AccessCategory 'access'))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':'  accessCategory=AccessCategory 'access'
		//            source=AccessConnectionEnd
		//            ('->' | bidirectional?='<->')
		//            destination=AccessConnectionEnd )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//accessCategory=AccessCategory
		public Assignment getAccessCategoryAssignment_0_0_2() { return cAccessCategoryAssignment_0_0_2; }
		
		//AccessCategory
		public RuleCall getAccessCategoryAccessCategoryParserRuleCall_0_0_2_0() { return cAccessCategoryAccessCategoryParserRuleCall_0_0_2_0; }
		
		//'access'
		public Keyword getAccessKeyword_0_0_3() { return cAccessKeyword_0_0_3; }
		
		//source=AccessConnectionEnd
		public Assignment getSourceAssignment_0_0_4() { return cSourceAssignment_0_0_4; }
		
		//AccessConnectionEnd
		public RuleCall getSourceAccessConnectionEndParserRuleCall_0_0_4_0() { return cSourceAccessConnectionEndParserRuleCall_0_0_4_0; }
		
		//('->' | bidirectional?='<->')
		public Alternatives getAlternatives_0_0_5() { return cAlternatives_0_0_5; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_5_0() { return cHyphenMinusGreaterThanSignKeyword_0_0_5_0; }
		
		//bidirectional?='<->'
		public Assignment getBidirectionalAssignment_0_0_5_1() { return cBidirectionalAssignment_0_0_5_1; }
		
		//'<->'
		public Keyword getBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_5_1_0() { return cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_5_1_0; }
		
		//destination=AccessConnectionEnd
		public Assignment getDestinationAssignment_0_0_6() { return cDestinationAssignment_0_0_6; }
		
		//AccessConnectionEnd
		public RuleCall getDestinationAccessConnectionEndParserRuleCall_0_0_6_0() { return cDestinationAccessConnectionEndParserRuleCall_0_0_6_0; }
		
		//(refined=[aadl2::AccessConnection|REFINEDNAME] ':' RefinedToKeywords accessCategory=AccessCategory 'access')
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::AccessConnection|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::AccessConnection|REFINEDNAME]
		public CrossReference getRefinedAccessConnectionCrossReference_0_1_0_0() { return cRefinedAccessConnectionCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedAccessConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedAccessConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//accessCategory=AccessCategory
		public Assignment getAccessCategoryAssignment_0_1_3() { return cAccessCategoryAssignment_0_1_3; }
		
		//AccessCategory
		public RuleCall getAccessCategoryAccessCategoryParserRuleCall_0_1_3_0() { return cAccessCategoryAccessCategoryParserRuleCall_0_1_3_0; }
		
		//'access'
		public Keyword getAccessKeyword_0_1_4() { return cAccessKeyword_0_1_4; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//(inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//   )
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_0() { return cInModeOrTransitionAssignment_2_2_0; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_2_1_0() { return cCommaKeyword_2_2_1_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_1_1() { return cInModeOrTransitionAssignment_2_2_1_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class FeatureGroupConnectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupConnection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_0_0_2 = (RuleCall)cGroup_0_0.eContents().get(2);
		private final Assignment cSourceAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cSourceNestedConnectedElementParserRuleCall_0_0_3_0 = (RuleCall)cSourceAssignment_0_0_3.eContents().get(0);
		private final Alternatives cAlternatives_0_0_4 = (Alternatives)cGroup_0_0.eContents().get(4);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4_0 = (Keyword)cAlternatives_0_0_4.eContents().get(0);
		private final Assignment cBidirectionalAssignment_0_0_4_1 = (Assignment)cAlternatives_0_0_4.eContents().get(1);
		private final Keyword cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0 = (Keyword)cBidirectionalAssignment_0_0_4_1.eContents().get(0);
		private final Assignment cDestinationAssignment_0_0_5 = (Assignment)cGroup_0_0.eContents().get(5);
		private final RuleCall cDestinationNestedConnectedElementParserRuleCall_0_0_5_0 = (RuleCall)cDestinationAssignment_0_0_5.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureGroupConnectionCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureGroupConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureGroupConnectionCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cFeatureGroupKeywordsParserRuleCall_0_1_3 = (RuleCall)cGroup_0_1.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Assignment cInModeOrTransitionAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_0.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0_0.eContents().get(1);
		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_1_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//FeatureGroupConnection returns aadl2::FeatureGroupConnection:
		//    ((name=ID ':' FeatureGroupKeywords
		//    source=NestedConnectedElement
		//    ( '->' | bidirectional?='<->')
		//    destination=NestedConnectedElement )
		//    |
		//    (refined=[aadl2::FeatureGroupConnection|REFINEDNAME] ':' RefinedToKeywords FeatureGroupKeywords))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//    ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' FeatureGroupKeywords
		//source=NestedConnectedElement
		//( '->' | bidirectional?='<->')
		//destination=NestedConnectedElement )
		//|
		//(refined=[aadl2::FeatureGroupConnection|REFINEDNAME] ':' RefinedToKeywords FeatureGroupKeywords))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' FeatureGroupKeywords
		//source=NestedConnectedElement
		//( '->' | bidirectional?='<->')
		//destination=NestedConnectedElement )
		//|
		//(refined=[aadl2::FeatureGroupConnection|REFINEDNAME] ':' RefinedToKeywords FeatureGroupKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' FeatureGroupKeywords
		//    source=NestedConnectedElement
		//    ( '->' | bidirectional?='<->')
		//    destination=NestedConnectedElement )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_0_0_2() { return cFeatureGroupKeywordsParserRuleCall_0_0_2; }
		
		//source=NestedConnectedElement
		public Assignment getSourceAssignment_0_0_3() { return cSourceAssignment_0_0_3; }
		
		//NestedConnectedElement
		public RuleCall getSourceNestedConnectedElementParserRuleCall_0_0_3_0() { return cSourceNestedConnectedElementParserRuleCall_0_0_3_0; }
		
		//( '->' | bidirectional?='<->')
		public Alternatives getAlternatives_0_0_4() { return cAlternatives_0_0_4; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4_0() { return cHyphenMinusGreaterThanSignKeyword_0_0_4_0; }
		
		//bidirectional?='<->'
		public Assignment getBidirectionalAssignment_0_0_4_1() { return cBidirectionalAssignment_0_0_4_1; }
		
		//'<->'
		public Keyword getBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0() { return cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0; }
		
		//destination=NestedConnectedElement
		public Assignment getDestinationAssignment_0_0_5() { return cDestinationAssignment_0_0_5; }
		
		//NestedConnectedElement
		public RuleCall getDestinationNestedConnectedElementParserRuleCall_0_0_5_0() { return cDestinationNestedConnectedElementParserRuleCall_0_0_5_0; }
		
		//(refined=[aadl2::FeatureGroupConnection|REFINEDNAME] ':' RefinedToKeywords FeatureGroupKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::FeatureGroupConnection|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::FeatureGroupConnection|REFINEDNAME]
		public CrossReference getRefinedFeatureGroupConnectionCrossReference_0_1_0_0() { return cRefinedFeatureGroupConnectionCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureGroupConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureGroupConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//FeatureGroupKeywords
		public RuleCall getFeatureGroupKeywordsParserRuleCall_0_1_3() { return cFeatureGroupKeywordsParserRuleCall_0_1_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//(inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//   )
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_0() { return cInModeOrTransitionAssignment_2_2_0; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_2_1_0() { return cCommaKeyword_2_2_1_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_1_1() { return cInModeOrTransitionAssignment_2_2_1_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class FeatureConnectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureConnection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cFeatureKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Assignment cSourceAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cSourceNestedConnectedElementParserRuleCall_0_0_3_0 = (RuleCall)cSourceAssignment_0_0_3.eContents().get(0);
		private final Alternatives cAlternatives_0_0_4 = (Alternatives)cGroup_0_0.eContents().get(4);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4_0 = (Keyword)cAlternatives_0_0_4.eContents().get(0);
		private final Assignment cBidirectionalAssignment_0_0_4_1 = (Assignment)cAlternatives_0_0_4.eContents().get(1);
		private final Keyword cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0 = (Keyword)cBidirectionalAssignment_0_0_4_1.eContents().get(0);
		private final Assignment cDestinationAssignment_0_0_5 = (Assignment)cGroup_0_0.eContents().get(5);
		private final RuleCall cDestinationNestedConnectedElementParserRuleCall_0_0_5_0 = (RuleCall)cDestinationAssignment_0_0_5.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedFeatureConnectionCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedFeatureConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedFeatureConnectionCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cFeatureKeyword_0_1_3 = (Keyword)cGroup_0_1.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Assignment cInModeOrTransitionAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_0.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0_0.eContents().get(1);
		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_1_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//FeatureConnection returns aadl2::FeatureConnection:
		//    ((name=ID ':'  'feature'
		//            source=NestedConnectedElement ('->' | bidirectional?='<->') destination=NestedConnectedElement )
		//        |
		//    (refined=[aadl2::FeatureConnection|REFINEDNAME] ':' RefinedToKeywords 'feature'))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//    ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':'  'feature'
		//        source=NestedConnectedElement ('->' | bidirectional?='<->') destination=NestedConnectedElement )
		//    |
		//(refined=[aadl2::FeatureConnection|REFINEDNAME] ':' RefinedToKeywords 'feature'))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':'  'feature'
		//        source=NestedConnectedElement ('->' | bidirectional?='<->') destination=NestedConnectedElement )
		//    |
		//(refined=[aadl2::FeatureConnection|REFINEDNAME] ':' RefinedToKeywords 'feature'))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':'  'feature'
		//            source=NestedConnectedElement ('->' | bidirectional?='<->') destination=NestedConnectedElement )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//'feature'
		public Keyword getFeatureKeyword_0_0_2() { return cFeatureKeyword_0_0_2; }
		
		//source=NestedConnectedElement
		public Assignment getSourceAssignment_0_0_3() { return cSourceAssignment_0_0_3; }
		
		//NestedConnectedElement
		public RuleCall getSourceNestedConnectedElementParserRuleCall_0_0_3_0() { return cSourceNestedConnectedElementParserRuleCall_0_0_3_0; }
		
		//('->' | bidirectional?='<->')
		public Alternatives getAlternatives_0_0_4() { return cAlternatives_0_0_4; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4_0() { return cHyphenMinusGreaterThanSignKeyword_0_0_4_0; }
		
		//bidirectional?='<->'
		public Assignment getBidirectionalAssignment_0_0_4_1() { return cBidirectionalAssignment_0_0_4_1; }
		
		//'<->'
		public Keyword getBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0() { return cBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_0_0_4_1_0; }
		
		//destination=NestedConnectedElement
		public Assignment getDestinationAssignment_0_0_5() { return cDestinationAssignment_0_0_5; }
		
		//NestedConnectedElement
		public RuleCall getDestinationNestedConnectedElementParserRuleCall_0_0_5_0() { return cDestinationNestedConnectedElementParserRuleCall_0_0_5_0; }
		
		//(refined=[aadl2::FeatureConnection|REFINEDNAME] ':' RefinedToKeywords 'feature')
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::FeatureConnection|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::FeatureConnection|REFINEDNAME]
		public CrossReference getRefinedFeatureConnectionCrossReference_0_1_0_0() { return cRefinedFeatureConnectionCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFeatureConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedFeatureConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'feature'
		public Keyword getFeatureKeyword_0_1_3() { return cFeatureKeyword_0_1_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//(inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//   )
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_0() { return cInModeOrTransitionAssignment_2_2_0; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_2_1_0() { return cCommaKeyword_2_2_1_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_1_1() { return cInModeOrTransitionAssignment_2_2_1_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class ParameterConnectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ParameterConnection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Keyword cParameterKeyword_0_0_2 = (Keyword)cGroup_0_0.eContents().get(2);
		private final Assignment cSourceAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cSourceConnectedElementParserRuleCall_0_0_3_0 = (RuleCall)cSourceAssignment_0_0_3.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4 = (Keyword)cGroup_0_0.eContents().get(4);
		private final Assignment cDestinationAssignment_0_0_5 = (Assignment)cGroup_0_0.eContents().get(5);
		private final RuleCall cDestinationConnectedElementParserRuleCall_0_0_5_0 = (RuleCall)cDestinationAssignment_0_0_5.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedParameterConnectionCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedParameterConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedParameterConnectionCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final Keyword cParameterKeyword_0_1_3 = (Keyword)cGroup_0_1.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Assignment cInModeOrTransitionAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_0.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0_0.eContents().get(1);
		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
		private final Keyword cCommaKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_2_1_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//ParameterConnection returns aadl2::ParameterConnection:
		//    ((name=ID ':' 'parameter'
		//    source=ConnectedElement
		//     '->'
		//    destination=ConnectedElement
		//    )|
		//    (refined=[aadl2::ParameterConnection|REFINEDNAME] ':' RefinedToKeywords 'parameter'))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//    ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' 'parameter'
		//source=ConnectedElement
		// '->'
		//destination=ConnectedElement
		//)|
		//(refined=[aadl2::ParameterConnection|REFINEDNAME] ':' RefinedToKeywords 'parameter'))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' 'parameter'
		//source=ConnectedElement
		// '->'
		//destination=ConnectedElement
		//)|
		//(refined=[aadl2::ParameterConnection|REFINEDNAME] ':' RefinedToKeywords 'parameter'))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' 'parameter'
		//    source=ConnectedElement
		//     '->'
		//    destination=ConnectedElement
		//    )
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//'parameter'
		public Keyword getParameterKeyword_0_0_2() { return cParameterKeyword_0_0_2; }
		
		//source=ConnectedElement
		public Assignment getSourceAssignment_0_0_3() { return cSourceAssignment_0_0_3; }
		
		//ConnectedElement
		public RuleCall getSourceConnectedElementParserRuleCall_0_0_3_0() { return cSourceConnectedElementParserRuleCall_0_0_3_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4() { return cHyphenMinusGreaterThanSignKeyword_0_0_4; }
		
		//destination=ConnectedElement
		public Assignment getDestinationAssignment_0_0_5() { return cDestinationAssignment_0_0_5; }
		
		//ConnectedElement
		public RuleCall getDestinationConnectedElementParserRuleCall_0_0_5_0() { return cDestinationConnectedElementParserRuleCall_0_0_5_0; }
		
		//(refined=[aadl2::ParameterConnection|REFINEDNAME] ':' RefinedToKeywords 'parameter')
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::ParameterConnection|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::ParameterConnection|REFINEDNAME]
		public CrossReference getRefinedParameterConnectionCrossReference_0_1_0_0() { return cRefinedParameterConnectionCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedParameterConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedParameterConnectionREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//'parameter'
		public Keyword getParameterKeyword_0_1_3() { return cParameterKeyword_0_1_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//) ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//(inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		//   )
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_0() { return cInModeOrTransitionAssignment_2_2_0; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
		
		//','
		public Keyword getCommaKeyword_2_2_1_0() { return cCommaKeyword_2_2_1_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2_1_1() { return cInModeOrTransitionAssignment_2_2_1_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_1_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class AccessCategoryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AccessCategory");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cBusKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cDataKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cSubprogramKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Group cGroup_3 = (Group)cAlternatives.eContents().get(3);
		private final Keyword cSubprogramKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cGroupKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_4 = (Group)cAlternatives.eContents().get(4);
		private final Keyword cVirtualKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cBusKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		
		//AccessCategory returns aadl2::AccessCategory:
		//    'bus' | 'data' | 'subprogram' | 'subprogram' 'group' | 'virtual' 'bus';
		@Override public ParserRule getRule() { return rule; }
		
		//'bus' | 'data' | 'subprogram' | 'subprogram' 'group' | 'virtual' 'bus'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'bus'
		public Keyword getBusKeyword_0() { return cBusKeyword_0; }
		
		//'data'
		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_2() { return cSubprogramKeyword_2; }
		
		//'subprogram' 'group'
		public Group getGroup_3() { return cGroup_3; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_3_0() { return cSubprogramKeyword_3_0; }
		
		//'group'
		public Keyword getGroupKeyword_3_1() { return cGroupKeyword_3_1; }
		
		//'virtual' 'bus'
		public Group getGroup_4() { return cGroup_4; }
		
		//'virtual'
		public Keyword getVirtualKeyword_4_0() { return cVirtualKeyword_4_0; }
		
		//'bus'
		public Keyword getBusKeyword_4_1() { return cBusKeyword_4_1; }
	}
	public class FlowSourceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSource");
		private final Keyword cSourceKeyword = (Keyword)rule.eContents().get(1);
		
		//FlowSource returns aadl2::FlowKind: 'source';
		@Override public ParserRule getRule() { return rule; }
		
		//'source'
		public Keyword getSourceKeyword() { return cSourceKeyword; }
	}
	public class FlowSinkElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSink");
		private final Keyword cSinkKeyword = (Keyword)rule.eContents().get(1);
		
		//FlowSink returns aadl2::FlowKind: 'sink';
		@Override public ParserRule getRule() { return rule; }
		
		//'sink'
		public Keyword getSinkKeyword() { return cSinkKeyword; }
	}
	public class FlowPathElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowPath");
		private final Keyword cPathKeyword = (Keyword)rule.eContents().get(1);
		
		//FlowPath returns aadl2::FlowKind: 'path';
		@Override public ParserRule getRule() { return rule; }
		
		//'path'
		public Keyword getPathKeyword() { return cPathKeyword; }
	}
	public class FlowSpecificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSpecification");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cFlowSourceSpecParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cFlowSinkSpecParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cFlowPathSpecParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cFlowSpecRefinementParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//FlowSpecification returns aadl2::FlowSpecification:
		//    FlowSourceSpec | FlowSinkSpec | FlowPathSpec | FlowSpecRefinement
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//FlowSourceSpec | FlowSinkSpec | FlowPathSpec | FlowSpecRefinement
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//FlowSourceSpec
		public RuleCall getFlowSourceSpecParserRuleCall_0() { return cFlowSourceSpecParserRuleCall_0; }
		
		//FlowSinkSpec
		public RuleCall getFlowSinkSpecParserRuleCall_1() { return cFlowSinkSpecParserRuleCall_1; }
		
		//FlowPathSpec
		public RuleCall getFlowPathSpecParserRuleCall_2() { return cFlowPathSpecParserRuleCall_2; }
		
		//FlowSpecRefinement
		public RuleCall getFlowSpecRefinementParserRuleCall_3() { return cFlowSpecRefinementParserRuleCall_3; }
	}
	public class FlowSourceSpecElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSourceSpec");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowSourceParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Assignment cOutEndAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cOutEndFlowEndParserRuleCall_4_0 = (RuleCall)cOutEndAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final RuleCall cInModesKeywordsParserRuleCall_6_0 = (RuleCall)cGroup_6.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_2_0 = (CrossReference)cInModeOrTransitionAssignment_6_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_6_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//FlowSourceSpec returns aadl2::FlowSpecification:
		//    name=ID ':'
		//    'flow' kind=FlowSource
		//    outEnd=FlowEnd
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':'
		//'flow' kind=FlowSource
		//outEnd=FlowEnd
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowSource
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowSource
		public RuleCall getKindFlowSourceParserRuleCall_3_0() { return cKindFlowSourceParserRuleCall_3_0; }
		
		//outEnd=FlowEnd
		public Assignment getOutEndAssignment_4() { return cOutEndAssignment_4; }
		
		//FlowEnd
		public RuleCall getOutEndFlowEndParserRuleCall_4_0() { return cOutEndFlowEndParserRuleCall_4_0; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		public Group getGroup_6() { return cGroup_6; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_6_0() { return cInModesKeywordsParserRuleCall_6_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6_1() { return cLeftParenthesisKeyword_6_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_2() { return cInModeOrTransitionAssignment_6_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_2_0() { return cInModeOrTransitionModeFeatureCrossReference_6_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_6_3() { return cGroup_6_3; }
		
		//','
		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_3_1() { return cInModeOrTransitionAssignment_6_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_6_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6_4() { return cRightParenthesisKeyword_6_4; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class FlowSinkSpecElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSinkSpec");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowSinkParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Assignment cInEndAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cInEndFlowEndParserRuleCall_4_0 = (RuleCall)cInEndAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final RuleCall cInModesKeywordsParserRuleCall_6_0 = (RuleCall)cGroup_6.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_2_0 = (CrossReference)cInModeOrTransitionAssignment_6_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_6_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//FlowSinkSpec returns aadl2::FlowSpecification:
		//    name=ID ':'
		//    'flow' kind=FlowSink
		//    InEnd=FlowEnd
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':'
		//'flow' kind=FlowSink
		//InEnd=FlowEnd
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowSink
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowSink
		public RuleCall getKindFlowSinkParserRuleCall_3_0() { return cKindFlowSinkParserRuleCall_3_0; }
		
		//InEnd=FlowEnd
		public Assignment getInEndAssignment_4() { return cInEndAssignment_4; }
		
		//FlowEnd
		public RuleCall getInEndFlowEndParserRuleCall_4_0() { return cInEndFlowEndParserRuleCall_4_0; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		public Group getGroup_6() { return cGroup_6; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_6_0() { return cInModesKeywordsParserRuleCall_6_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6_1() { return cLeftParenthesisKeyword_6_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_2() { return cInModeOrTransitionAssignment_6_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_2_0() { return cInModeOrTransitionModeFeatureCrossReference_6_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_6_3() { return cGroup_6_3; }
		
		//','
		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_3_1() { return cInModeOrTransitionAssignment_6_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_6_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6_4() { return cRightParenthesisKeyword_6_4; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class FlowPathSpecElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowPathSpec");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowPathParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Assignment cInEndAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cInEndFlowEndParserRuleCall_4_0 = (RuleCall)cInEndAssignment_4.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cOutEndAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cOutEndFlowEndParserRuleCall_6_0 = (RuleCall)cOutEndAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_2 = (Keyword)cGroup_7.eContents().get(2);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final RuleCall cInModesKeywordsParserRuleCall_8_0 = (RuleCall)cGroup_8.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_8_2_0 = (CrossReference)cInModeOrTransitionAssignment_8_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_8_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_8_2_0.eContents().get(1);
		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
		private final Keyword cCommaKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_8_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_8_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_8_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_8_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
		private final Keyword cSemicolonKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//FlowPathSpec returns aadl2::FlowSpecification:
		//    name=ID ':'
		//    'flow' kind=FlowPath
		//    InEnd=FlowEnd
		//    '->'     outEnd=FlowEnd
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':'
		//'flow' kind=FlowPath
		//InEnd=FlowEnd
		//'->'     outEnd=FlowEnd
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowPath
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowPath
		public RuleCall getKindFlowPathParserRuleCall_3_0() { return cKindFlowPathParserRuleCall_3_0; }
		
		//InEnd=FlowEnd
		public Assignment getInEndAssignment_4() { return cInEndAssignment_4; }
		
		//FlowEnd
		public RuleCall getInEndFlowEndParserRuleCall_4_0() { return cInEndFlowEndParserRuleCall_4_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5() { return cHyphenMinusGreaterThanSignKeyword_5; }
		
		//outEnd=FlowEnd
		public Assignment getOutEndAssignment_6() { return cOutEndAssignment_6; }
		
		//FlowEnd
		public RuleCall getOutEndFlowEndParserRuleCall_6_0() { return cOutEndFlowEndParserRuleCall_6_0; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_7() { return cGroup_7; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_7_1() { return cOwnedPropertyAssociationAssignment_7_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_7_2() { return cRightCurlyBracketKeyword_7_2; }
		
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		public Group getGroup_8() { return cGroup_8; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_8_0() { return cInModesKeywordsParserRuleCall_8_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_8_1() { return cLeftParenthesisKeyword_8_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_8_2() { return cInModeOrTransitionAssignment_8_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_8_2_0() { return cInModeOrTransitionModeFeatureCrossReference_8_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_8_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_8_2_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_8_3() { return cGroup_8_3; }
		
		//','
		public Keyword getCommaKeyword_8_3_0() { return cCommaKeyword_8_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_8_3_1() { return cInModeOrTransitionAssignment_8_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_8_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_8_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_8_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_8_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_8_4() { return cRightParenthesisKeyword_8_4; }
		
		//';'
		public Keyword getSemicolonKeyword_9() { return cSemicolonKeyword_9; }
	}
	public class FlowEndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowEnd");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cFeatureAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cFeatureFeatureCrossReference_0_0 = (CrossReference)cFeatureAssignment_0.eContents().get(0);
		private final RuleCall cFeatureFeatureIDTerminalRuleCall_0_0_1 = (RuleCall)cFeatureFeatureCrossReference_0_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Action cFlowEndContextAction_1_0 = (Action)cGroup_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cFeatureAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final CrossReference cFeatureFeatureCrossReference_1_2_0 = (CrossReference)cFeatureAssignment_1_2.eContents().get(0);
		private final RuleCall cFeatureFeatureIDTerminalRuleCall_1_2_0_1 = (RuleCall)cFeatureFeatureCrossReference_1_2_0.eContents().get(1);
		
		//FlowEnd returns aadl2::FlowEnd:
		//    feature=[aadl2::Feature|ID] ({aadl2::FlowEnd.context=current} "." feature=[aadl2::Feature|ID])*
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//feature=[aadl2::Feature|ID] ({aadl2::FlowEnd.context=current} "." feature=[aadl2::Feature|ID])*
		public Group getGroup() { return cGroup; }
		
		//feature=[aadl2::Feature|ID]
		public Assignment getFeatureAssignment_0() { return cFeatureAssignment_0; }
		
		//[aadl2::Feature|ID]
		public CrossReference getFeatureFeatureCrossReference_0_0() { return cFeatureFeatureCrossReference_0_0; }
		
		//ID
		public RuleCall getFeatureFeatureIDTerminalRuleCall_0_0_1() { return cFeatureFeatureIDTerminalRuleCall_0_0_1; }
		
		//({aadl2::FlowEnd.context=current} "." feature=[aadl2::Feature|ID])*
		public Group getGroup_1() { return cGroup_1; }
		
		//{aadl2::FlowEnd.context=current}
		public Action getFlowEndContextAction_1_0() { return cFlowEndContextAction_1_0; }
		
		//"."
		public Keyword getFullStopKeyword_1_1() { return cFullStopKeyword_1_1; }
		
		//feature=[aadl2::Feature|ID]
		public Assignment getFeatureAssignment_1_2() { return cFeatureAssignment_1_2; }
		
		//[aadl2::Feature|ID]
		public CrossReference getFeatureFeatureCrossReference_1_2_0() { return cFeatureFeatureCrossReference_1_2_0; }
		
		//ID
		public RuleCall getFeatureFeatureIDTerminalRuleCall_1_2_0_1() { return cFeatureFeatureIDTerminalRuleCall_1_2_0_1; }
	}
	public class FlowSpecRefinementElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSpecRefinement");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRefinedAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cRefinedFlowSpecificationCrossReference_0_0 = (CrossReference)cRefinedAssignment_0.eContents().get(0);
		private final RuleCall cRefinedFlowSpecificationREFINEDNAMEParserRuleCall_0_0_1 = (RuleCall)cRefinedFlowSpecificationCrossReference_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Keyword cFlowKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cKindAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cKindFlowKindEnumRuleCall_4_0 = (RuleCall)cKindAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final RuleCall cInModesKeywordsParserRuleCall_6_0 = (RuleCall)cGroup_6.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_2_0 = (CrossReference)cInModeOrTransitionAssignment_6_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_6_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_6_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_6_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		private final Keyword cSemicolonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//FlowSpecRefinement returns aadl2::FlowSpecification:
		//    refined=[aadl2::FlowSpecification|REFINEDNAME]
		//    ':' RefinedToKeywords 'flow' kind=FlowKind
		//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//refined=[aadl2::FlowSpecification|REFINEDNAME]
		//':' RefinedToKeywords 'flow' kind=FlowKind
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//refined=[aadl2::FlowSpecification|REFINEDNAME]
		public Assignment getRefinedAssignment_0() { return cRefinedAssignment_0; }
		
		//[aadl2::FlowSpecification|REFINEDNAME]
		public CrossReference getRefinedFlowSpecificationCrossReference_0_0() { return cRefinedFlowSpecificationCrossReference_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedFlowSpecificationREFINEDNAMEParserRuleCall_0_0_1() { return cRefinedFlowSpecificationREFINEDNAMEParserRuleCall_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_2() { return cRefinedToKeywordsParserRuleCall_2; }
		
		//'flow'
		public Keyword getFlowKeyword_3() { return cFlowKeyword_3; }
		
		//kind=FlowKind
		public Assignment getKindAssignment_4() { return cKindAssignment_4; }
		
		//FlowKind
		public RuleCall getKindFlowKindEnumRuleCall_4_0() { return cKindFlowKindEnumRuleCall_4_0; }
		
		//('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
		public Group getGroup_5() { return cGroup_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }
		
		//ownedPropertyAssociation+=PropertyAssociation+
		public Assignment getOwnedPropertyAssociationAssignment_5_1() { return cOwnedPropertyAssociationAssignment_5_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_5_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_5_2() { return cRightCurlyBracketKeyword_5_2; }
		
		//(InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
		public Group getGroup_6() { return cGroup_6; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_6_0() { return cInModesKeywordsParserRuleCall_6_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6_1() { return cLeftParenthesisKeyword_6_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_2() { return cInModeOrTransitionAssignment_6_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_2_0() { return cInModeOrTransitionModeFeatureCrossReference_6_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_2_0_1; }
		
		//(',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_6_3() { return cGroup_6_3; }
		
		//','
		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_6_3_1() { return cInModeOrTransitionAssignment_6_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_6_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_6_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_6_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6_4() { return cRightParenthesisKeyword_6_4; }
		
		//';'
		public Keyword getSemicolonKeyword_7() { return cSemicolonKeyword_7; }
	}
	public class FlowImplementationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowImplementation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cFlowSourceImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cFlowSinkImplParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cFlowPathImplParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		
		//FlowImplementation returns aadl2::FlowImplementation:
		//    FlowSourceImpl | FlowSinkImpl | FlowPathImpl
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//FlowSourceImpl | FlowSinkImpl | FlowPathImpl
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//FlowSourceImpl
		public RuleCall getFlowSourceImplParserRuleCall_0() { return cFlowSourceImplParserRuleCall_0; }
		
		//FlowSinkImpl
		public RuleCall getFlowSinkImplParserRuleCall_1() { return cFlowSinkImplParserRuleCall_1; }
		
		//FlowPathImpl
		public RuleCall getFlowPathImplParserRuleCall_2() { return cFlowPathImplParserRuleCall_2; }
	}
	public class FlowSourceImplElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSourceImpl");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSpecificationAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cSpecificationFlowSpecificationCrossReference_0_0 = (CrossReference)cSpecificationAssignment_0.eContents().get(0);
		private final RuleCall cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1 = (RuleCall)cSpecificationFlowSpecificationCrossReference_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowSourceParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cOwnedFlowSegmentAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cOwnedFlowSegmentSubcomponentFlowParserRuleCall_4_0_0 = (RuleCall)cOwnedFlowSegmentAssignment_4_0.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cOwnedFlowSegmentAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cOwnedFlowSegmentConnectionFlowParserRuleCall_4_2_0 = (RuleCall)cOwnedFlowSegmentAssignment_4_2.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final Assignment cOutEndAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOutEndFlowEndParserRuleCall_5_0 = (RuleCall)cOutEndAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final RuleCall cInModesKeywordsParserRuleCall_7_0 = (RuleCall)cGroup_7.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_7_2_0 = (CrossReference)cInModeOrTransitionAssignment_7_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_7_2_0.eContents().get(1);
		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_7_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_7_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_7_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//FlowSourceImpl returns aadl2::FlowImplementation:
		//    specification=[aadl2::FlowSpecification|ID]
		//    ':' 'flow' kind=FlowSource
		//    (  ownedFlowSegment+=SubcomponentFlow '->' ownedFlowSegment+=ConnectionFlow '->' )*
		//    outEnd=FlowEnd
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//specification=[aadl2::FlowSpecification|ID]
		//':' 'flow' kind=FlowSource
		//(  ownedFlowSegment+=SubcomponentFlow '->' ownedFlowSegment+=ConnectionFlow '->' )*
		//outEnd=FlowEnd
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//specification=[aadl2::FlowSpecification|ID]
		public Assignment getSpecificationAssignment_0() { return cSpecificationAssignment_0; }
		
		//[aadl2::FlowSpecification|ID]
		public CrossReference getSpecificationFlowSpecificationCrossReference_0_0() { return cSpecificationFlowSpecificationCrossReference_0_0; }
		
		//ID
		public RuleCall getSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1() { return cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowSource
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowSource
		public RuleCall getKindFlowSourceParserRuleCall_3_0() { return cKindFlowSourceParserRuleCall_3_0; }
		
		//(  ownedFlowSegment+=SubcomponentFlow '->' ownedFlowSegment+=ConnectionFlow '->' )*
		public Group getGroup_4() { return cGroup_4; }
		
		//ownedFlowSegment+=SubcomponentFlow
		public Assignment getOwnedFlowSegmentAssignment_4_0() { return cOwnedFlowSegmentAssignment_4_0; }
		
		//SubcomponentFlow
		public RuleCall getOwnedFlowSegmentSubcomponentFlowParserRuleCall_4_0_0() { return cOwnedFlowSegmentSubcomponentFlowParserRuleCall_4_0_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_4_1() { return cHyphenMinusGreaterThanSignKeyword_4_1; }
		
		//ownedFlowSegment+=ConnectionFlow
		public Assignment getOwnedFlowSegmentAssignment_4_2() { return cOwnedFlowSegmentAssignment_4_2; }
		
		//ConnectionFlow
		public RuleCall getOwnedFlowSegmentConnectionFlowParserRuleCall_4_2_0() { return cOwnedFlowSegmentConnectionFlowParserRuleCall_4_2_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_4_3() { return cHyphenMinusGreaterThanSignKeyword_4_3; }
		
		//outEnd=FlowEnd
		public Assignment getOutEndAssignment_5() { return cOutEndAssignment_5; }
		
		//FlowEnd
		public RuleCall getOutEndFlowEndParserRuleCall_5_0() { return cOutEndFlowEndParserRuleCall_5_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1() { return cOwnedPropertyAssociationAssignment_6_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
		
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		public Group getGroup_7() { return cGroup_7; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_7_0() { return cInModesKeywordsParserRuleCall_7_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_7_1() { return cLeftParenthesisKeyword_7_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_7_2() { return cInModeOrTransitionAssignment_7_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_7_2_0() { return cInModeOrTransitionModeFeatureCrossReference_7_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1; }
		
		//( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_7_3() { return cGroup_7_3; }
		
		//','
		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_7_3_1() { return cInModeOrTransitionAssignment_7_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_7_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_7_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_7_4() { return cRightParenthesisKeyword_7_4; }
		
		//';'
		public Keyword getSemicolonKeyword_8() { return cSemicolonKeyword_8; }
	}
	public class FlowSinkImplElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowSinkImpl");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSpecificationAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cSpecificationFlowSpecificationCrossReference_0_0 = (CrossReference)cSpecificationAssignment_0.eContents().get(0);
		private final RuleCall cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1 = (RuleCall)cSpecificationFlowSpecificationCrossReference_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowSinkParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Assignment cInEndAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cInEndFlowEndParserRuleCall_4_0 = (RuleCall)cInEndAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOwnedFlowSegmentAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOwnedFlowSegmentConnectionFlowParserRuleCall_5_1_0 = (RuleCall)cOwnedFlowSegmentAssignment_5_1.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Assignment cOwnedFlowSegmentAssignment_5_3 = (Assignment)cGroup_5.eContents().get(3);
		private final RuleCall cOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_3_0 = (RuleCall)cOwnedFlowSegmentAssignment_5_3.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final RuleCall cInModesKeywordsParserRuleCall_7_0 = (RuleCall)cGroup_7.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_7_2_0 = (CrossReference)cInModeOrTransitionAssignment_7_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_7_2_0.eContents().get(1);
		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_7_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_7_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_7_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//FlowSinkImpl returns aadl2::FlowImplementation:
		//    specification=[aadl2::FlowSpecification|ID]//name=ID
		//    ':' 'flow' kind=FlowSink
		//    inEnd = FlowEnd
		//    ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow  )*
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//specification=[aadl2::FlowSpecification|ID]//name=ID
		//':' 'flow' kind=FlowSink
		//inEnd = FlowEnd
		//( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow  )*
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//specification=[aadl2::FlowSpecification|ID]
		public Assignment getSpecificationAssignment_0() { return cSpecificationAssignment_0; }
		
		//[aadl2::FlowSpecification|ID]
		public CrossReference getSpecificationFlowSpecificationCrossReference_0_0() { return cSpecificationFlowSpecificationCrossReference_0_0; }
		
		//ID
		public RuleCall getSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1() { return cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1; }
		
		////name=ID
		//    ':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowSink
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowSink
		public RuleCall getKindFlowSinkParserRuleCall_3_0() { return cKindFlowSinkParserRuleCall_3_0; }
		
		//inEnd = FlowEnd
		public Assignment getInEndAssignment_4() { return cInEndAssignment_4; }
		
		//FlowEnd
		public RuleCall getInEndFlowEndParserRuleCall_4_0() { return cInEndFlowEndParserRuleCall_4_0; }
		
		//( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow  )*
		public Group getGroup_5() { return cGroup_5; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5_0() { return cHyphenMinusGreaterThanSignKeyword_5_0; }
		
		//ownedFlowSegment+=ConnectionFlow
		public Assignment getOwnedFlowSegmentAssignment_5_1() { return cOwnedFlowSegmentAssignment_5_1; }
		
		//ConnectionFlow
		public RuleCall getOwnedFlowSegmentConnectionFlowParserRuleCall_5_1_0() { return cOwnedFlowSegmentConnectionFlowParserRuleCall_5_1_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5_2() { return cHyphenMinusGreaterThanSignKeyword_5_2; }
		
		//ownedFlowSegment+=SubcomponentFlow
		public Assignment getOwnedFlowSegmentAssignment_5_3() { return cOwnedFlowSegmentAssignment_5_3; }
		
		//SubcomponentFlow
		public RuleCall getOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_3_0() { return cOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_3_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_6_1() { return cOwnedPropertyAssociationAssignment_6_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_6_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
		
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		public Group getGroup_7() { return cGroup_7; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_7_0() { return cInModesKeywordsParserRuleCall_7_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_7_1() { return cLeftParenthesisKeyword_7_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_7_2() { return cInModeOrTransitionAssignment_7_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_7_2_0() { return cInModeOrTransitionModeFeatureCrossReference_7_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_2_0_1; }
		
		//( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_7_3() { return cGroup_7_3; }
		
		//','
		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_7_3_1() { return cInModeOrTransitionAssignment_7_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_7_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_7_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_7_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_7_4() { return cRightParenthesisKeyword_7_4; }
		
		//';'
		public Keyword getSemicolonKeyword_8() { return cSemicolonKeyword_8; }
	}
	public class FlowPathImplElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowPathImpl");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSpecificationAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cSpecificationFlowSpecificationCrossReference_0_0 = (CrossReference)cSpecificationAssignment_0.eContents().get(0);
		private final RuleCall cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1 = (RuleCall)cSpecificationFlowSpecificationCrossReference_0_0.eContents().get(1);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cFlowKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cKindAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cKindFlowPathParserRuleCall_3_0 = (RuleCall)cKindAssignment_3.eContents().get(0);
		private final Assignment cInEndAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cInEndFlowEndParserRuleCall_4_0 = (RuleCall)cInEndAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Group cGroup_5_0 = (Group)cGroup_5.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
		private final Assignment cOwnedFlowSegmentAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
		private final RuleCall cOwnedFlowSegmentConnectionFlowParserRuleCall_5_0_1_0 = (RuleCall)cOwnedFlowSegmentAssignment_5_0_1.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5_0_2 = (Keyword)cGroup_5_0.eContents().get(2);
		private final Assignment cOwnedFlowSegmentAssignment_5_0_3 = (Assignment)cGroup_5_0.eContents().get(3);
		private final RuleCall cOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_0_3_0 = (RuleCall)cOwnedFlowSegmentAssignment_5_0_3.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cOwnedFlowSegmentAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cOwnedFlowSegmentConnectionFlowParserRuleCall_5_2_0 = (RuleCall)cOwnedFlowSegmentAssignment_5_2.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cOutEndAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cOutEndFlowEndParserRuleCall_7_0 = (RuleCall)cOutEndAssignment_7.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cLeftCurlyBracketKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_8_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_8_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8_2 = (Keyword)cGroup_8.eContents().get(2);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final RuleCall cInModesKeywordsParserRuleCall_9_0 = (RuleCall)cGroup_9.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_9_2_0 = (CrossReference)cInModeOrTransitionAssignment_9_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_9_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_9_2_0.eContents().get(1);
		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_9_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_9_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_9_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_9_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//FlowPathImpl returns aadl2::FlowImplementation:
		//    specification=[aadl2::FlowSpecification|ID]//name=ID
		//    ':' 'flow' kind=FlowPath
		//    inEnd = FlowEnd
		//    (  ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow   )*
		//        '->' ownedFlowSegment+=ConnectionFlow )?
		// '->' outEnd=FlowEnd
		//     ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//    ';'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//   specification=[aadl2::FlowSpecification|ID]//name=ID
		//   ':' 'flow' kind=FlowPath
		//   inEnd = FlowEnd
		//   (  ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow   )*
		//       '->' ownedFlowSegment+=ConnectionFlow )?
		//'->' outEnd=FlowEnd
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//   ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//   ';'
		public Group getGroup() { return cGroup; }
		
		//specification=[aadl2::FlowSpecification|ID]
		public Assignment getSpecificationAssignment_0() { return cSpecificationAssignment_0; }
		
		//[aadl2::FlowSpecification|ID]
		public CrossReference getSpecificationFlowSpecificationCrossReference_0_0() { return cSpecificationFlowSpecificationCrossReference_0_0; }
		
		//ID
		public RuleCall getSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1() { return cSpecificationFlowSpecificationIDTerminalRuleCall_0_0_1; }
		
		////name=ID
		//    ':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'flow'
		public Keyword getFlowKeyword_2() { return cFlowKeyword_2; }
		
		//kind=FlowPath
		public Assignment getKindAssignment_3() { return cKindAssignment_3; }
		
		//FlowPath
		public RuleCall getKindFlowPathParserRuleCall_3_0() { return cKindFlowPathParserRuleCall_3_0; }
		
		//inEnd = FlowEnd
		public Assignment getInEndAssignment_4() { return cInEndAssignment_4; }
		
		//FlowEnd
		public RuleCall getInEndFlowEndParserRuleCall_4_0() { return cInEndFlowEndParserRuleCall_4_0; }
		
		//(  ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow   )*
		//    '->' ownedFlowSegment+=ConnectionFlow )?
		public Group getGroup_5() { return cGroup_5; }
		
		//( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow   )*
		public Group getGroup_5_0() { return cGroup_5_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5_0_0() { return cHyphenMinusGreaterThanSignKeyword_5_0_0; }
		
		//ownedFlowSegment+=ConnectionFlow
		public Assignment getOwnedFlowSegmentAssignment_5_0_1() { return cOwnedFlowSegmentAssignment_5_0_1; }
		
		//ConnectionFlow
		public RuleCall getOwnedFlowSegmentConnectionFlowParserRuleCall_5_0_1_0() { return cOwnedFlowSegmentConnectionFlowParserRuleCall_5_0_1_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5_0_2() { return cHyphenMinusGreaterThanSignKeyword_5_0_2; }
		
		//ownedFlowSegment+=SubcomponentFlow
		public Assignment getOwnedFlowSegmentAssignment_5_0_3() { return cOwnedFlowSegmentAssignment_5_0_3; }
		
		//SubcomponentFlow
		public RuleCall getOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_0_3_0() { return cOwnedFlowSegmentSubcomponentFlowParserRuleCall_5_0_3_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_5_1() { return cHyphenMinusGreaterThanSignKeyword_5_1; }
		
		//ownedFlowSegment+=ConnectionFlow
		public Assignment getOwnedFlowSegmentAssignment_5_2() { return cOwnedFlowSegmentAssignment_5_2; }
		
		//ConnectionFlow
		public RuleCall getOwnedFlowSegmentConnectionFlowParserRuleCall_5_2_0() { return cOwnedFlowSegmentConnectionFlowParserRuleCall_5_2_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_6() { return cHyphenMinusGreaterThanSignKeyword_6; }
		
		//outEnd=FlowEnd
		public Assignment getOutEndAssignment_7() { return cOutEndAssignment_7; }
		
		//FlowEnd
		public RuleCall getOutEndFlowEndParserRuleCall_7_0() { return cOutEndFlowEndParserRuleCall_7_0; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_8() { return cGroup_8; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_8_0() { return cLeftCurlyBracketKeyword_8_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_8_1() { return cOwnedPropertyAssociationAssignment_8_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_8_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_8_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_8_2() { return cRightCurlyBracketKeyword_8_2; }
		
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		public Group getGroup_9() { return cGroup_9; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_9_0() { return cInModesKeywordsParserRuleCall_9_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_9_1() { return cLeftParenthesisKeyword_9_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_9_2() { return cInModeOrTransitionAssignment_9_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_9_2_0() { return cInModeOrTransitionModeFeatureCrossReference_9_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_9_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_9_2_0_1; }
		
		//( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_9_3() { return cGroup_9_3; }
		
		//','
		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_9_3_1() { return cInModeOrTransitionAssignment_9_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_9_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_9_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_9_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_9_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_9_4() { return cRightParenthesisKeyword_9_4; }
		
		//';'
		public Keyword getSemicolonKeyword_10() { return cSemicolonKeyword_10; }
	}
	public class EndToEndFlowElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EndToEndFlow");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cAlternatives_0.eContents().get(0);
		private final Assignment cNameAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0_0 = (RuleCall)cNameAssignment_0_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final RuleCall cEndToEndFlowKeywordsParserRuleCall_0_0_2 = (RuleCall)cGroup_0_0.eContents().get(2);
		private final Assignment cOwnedEndToEndFlowSegmentAssignment_0_0_3 = (Assignment)cGroup_0_0.eContents().get(3);
		private final RuleCall cOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_3_0 = (RuleCall)cOwnedEndToEndFlowSegmentAssignment_0_0_3.eContents().get(0);
		private final Group cGroup_0_0_4 = (Group)cGroup_0_0.eContents().get(4);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4_0 = (Keyword)cGroup_0_0_4.eContents().get(0);
		private final Assignment cOwnedEndToEndFlowSegmentAssignment_0_0_4_1 = (Assignment)cGroup_0_0_4.eContents().get(1);
		private final RuleCall cOwnedEndToEndFlowSegmentETEConnectionFlowParserRuleCall_0_0_4_1_0 = (RuleCall)cOwnedEndToEndFlowSegmentAssignment_0_0_4_1.eContents().get(0);
		private final Keyword cHyphenMinusGreaterThanSignKeyword_0_0_4_2 = (Keyword)cGroup_0_0_4.eContents().get(2);
		private final Assignment cOwnedEndToEndFlowSegmentAssignment_0_0_4_3 = (Assignment)cGroup_0_0_4.eContents().get(3);
		private final RuleCall cOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_4_3_0 = (RuleCall)cOwnedEndToEndFlowSegmentAssignment_0_0_4_3.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cRefinedAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final CrossReference cRefinedEndToEndFlowCrossReference_0_1_0_0 = (CrossReference)cRefinedAssignment_0_1_0.eContents().get(0);
		private final RuleCall cRefinedEndToEndFlowREFINEDNAMEParserRuleCall_0_1_0_0_1 = (RuleCall)cRefinedEndToEndFlowCrossReference_0_1_0_0.eContents().get(1);
		private final Keyword cColonKeyword_0_1_1 = (Keyword)cGroup_0_1.eContents().get(1);
		private final RuleCall cRefinedToKeywordsParserRuleCall_0_1_2 = (RuleCall)cGroup_0_1.eContents().get(2);
		private final RuleCall cEndToEndFlowKeywordsParserRuleCall_0_1_3 = (RuleCall)cGroup_0_1.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final RuleCall cInModesKeywordsParserRuleCall_2_0 = (RuleCall)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cInModeOrTransitionAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_2_0 = (CrossReference)cInModeOrTransitionAssignment_2_2.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_2_0.eContents().get(1);
		private final Group cGroup_2_3 = (Group)cGroup_2.eContents().get(3);
		private final Keyword cCommaKeyword_2_3_0 = (Keyword)cGroup_2_3.eContents().get(0);
		private final Assignment cInModeOrTransitionAssignment_2_3_1 = (Assignment)cGroup_2_3.eContents().get(1);
		private final CrossReference cInModeOrTransitionModeFeatureCrossReference_2_3_1_0 = (CrossReference)cInModeOrTransitionAssignment_2_3_1.eContents().get(0);
		private final RuleCall cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_3_1_0_1 = (RuleCall)cInModeOrTransitionModeFeatureCrossReference_2_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_2_4 = (Keyword)cGroup_2.eContents().get(4);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//EndToEndFlow returns aadl2::EndToEndFlow:
		//    ((name=ID ':' EndToEndFlowKeywords
		//    ownedEndToEndFlowSegment+=ETESubcomponentFlow
		//    ( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+)
		//    | (refined=[aadl2::EndToEndFlow|REFINEDNAME] ':' RefinedToKeywords EndToEndFlowKeywords))
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//    ';'
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//((name=ID ':' EndToEndFlowKeywords
		//ownedEndToEndFlowSegment+=ETESubcomponentFlow
		//( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+)
		//| (refined=[aadl2::EndToEndFlow|REFINEDNAME] ':' RefinedToKeywords EndToEndFlowKeywords))
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//((name=ID ':' EndToEndFlowKeywords
		//ownedEndToEndFlowSegment+=ETESubcomponentFlow
		//( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+)
		//| (refined=[aadl2::EndToEndFlow|REFINEDNAME] ':' RefinedToKeywords EndToEndFlowKeywords))
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//(name=ID ':' EndToEndFlowKeywords
		//    ownedEndToEndFlowSegment+=ETESubcomponentFlow
		//    ( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+)
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0_0() { return cNameAssignment_0_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0_0() { return cNameIDTerminalRuleCall_0_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_0_1() { return cColonKeyword_0_0_1; }
		
		//EndToEndFlowKeywords
		public RuleCall getEndToEndFlowKeywordsParserRuleCall_0_0_2() { return cEndToEndFlowKeywordsParserRuleCall_0_0_2; }
		
		//ownedEndToEndFlowSegment+=ETESubcomponentFlow
		public Assignment getOwnedEndToEndFlowSegmentAssignment_0_0_3() { return cOwnedEndToEndFlowSegmentAssignment_0_0_3; }
		
		//ETESubcomponentFlow
		public RuleCall getOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_3_0() { return cOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_3_0; }
		
		//( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+
		public Group getGroup_0_0_4() { return cGroup_0_0_4; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4_0() { return cHyphenMinusGreaterThanSignKeyword_0_0_4_0; }
		
		//ownedEndToEndFlowSegment+=ETEConnectionFlow
		public Assignment getOwnedEndToEndFlowSegmentAssignment_0_0_4_1() { return cOwnedEndToEndFlowSegmentAssignment_0_0_4_1; }
		
		//ETEConnectionFlow
		public RuleCall getOwnedEndToEndFlowSegmentETEConnectionFlowParserRuleCall_0_0_4_1_0() { return cOwnedEndToEndFlowSegmentETEConnectionFlowParserRuleCall_0_0_4_1_0; }
		
		//'->'
		public Keyword getHyphenMinusGreaterThanSignKeyword_0_0_4_2() { return cHyphenMinusGreaterThanSignKeyword_0_0_4_2; }
		
		//ownedEndToEndFlowSegment+=ETESubcomponentFlow
		public Assignment getOwnedEndToEndFlowSegmentAssignment_0_0_4_3() { return cOwnedEndToEndFlowSegmentAssignment_0_0_4_3; }
		
		//ETESubcomponentFlow
		public RuleCall getOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_4_3_0() { return cOwnedEndToEndFlowSegmentETESubcomponentFlowParserRuleCall_0_0_4_3_0; }
		
		//(refined=[aadl2::EndToEndFlow|REFINEDNAME] ':' RefinedToKeywords EndToEndFlowKeywords)
		public Group getGroup_0_1() { return cGroup_0_1; }
		
		//refined=[aadl2::EndToEndFlow|REFINEDNAME]
		public Assignment getRefinedAssignment_0_1_0() { return cRefinedAssignment_0_1_0; }
		
		//[aadl2::EndToEndFlow|REFINEDNAME]
		public CrossReference getRefinedEndToEndFlowCrossReference_0_1_0_0() { return cRefinedEndToEndFlowCrossReference_0_1_0_0; }
		
		//REFINEDNAME
		public RuleCall getRefinedEndToEndFlowREFINEDNAMEParserRuleCall_0_1_0_0_1() { return cRefinedEndToEndFlowREFINEDNAMEParserRuleCall_0_1_0_0_1; }
		
		//':'
		public Keyword getColonKeyword_0_1_1() { return cColonKeyword_0_1_1; }
		
		//RefinedToKeywords
		public RuleCall getRefinedToKeywordsParserRuleCall_0_1_2() { return cRefinedToKeywordsParserRuleCall_0_1_2; }
		
		//EndToEndFlowKeywords
		public RuleCall getEndToEndFlowKeywordsParserRuleCall_0_1_3() { return cEndToEndFlowKeywordsParserRuleCall_0_1_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_1() { return cGroup_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_1_0() { return cLeftCurlyBracketKeyword_1_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_1_1() { return cOwnedPropertyAssociationAssignment_1_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_1_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
		
		//( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_2_0() { return cInModesKeywordsParserRuleCall_2_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_2() { return cInModeOrTransitionAssignment_2_2; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_2_0() { return cInModeOrTransitionModeFeatureCrossReference_2_2_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_2_0_1; }
		
		//( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
		public Group getGroup_2_3() { return cGroup_2_3; }
		
		//','
		public Keyword getCommaKeyword_2_3_0() { return cCommaKeyword_2_3_0; }
		
		//inModeOrTransition+=[aadl2::ModeFeature|ID]
		public Assignment getInModeOrTransitionAssignment_2_3_1() { return cInModeOrTransitionAssignment_2_3_1; }
		
		//[aadl2::ModeFeature|ID]
		public CrossReference getInModeOrTransitionModeFeatureCrossReference_2_3_1_0() { return cInModeOrTransitionModeFeatureCrossReference_2_3_1_0; }
		
		//ID
		public RuleCall getInModeOrTransitionModeFeatureIDTerminalRuleCall_2_3_1_0_1() { return cInModeOrTransitionModeFeatureIDTerminalRuleCall_2_3_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_4() { return cRightParenthesisKeyword_2_4; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class SubcomponentFlowElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubcomponentFlow");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Assignment cContextAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final CrossReference cContextSubcomponentCrossReference_0_0_0 = (CrossReference)cContextAssignment_0_0.eContents().get(0);
		private final RuleCall cContextSubcomponentIDTerminalRuleCall_0_0_0_1 = (RuleCall)cContextSubcomponentCrossReference_0_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cFlowElementAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cFlowElementFlowElementCrossReference_1_0 = (CrossReference)cFlowElementAssignment_1.eContents().get(0);
		private final RuleCall cFlowElementFlowElementIDTerminalRuleCall_1_0_1 = (RuleCall)cFlowElementFlowElementCrossReference_1_0.eContents().get(1);
		
		//// refinement should have at elast one of property or in modes. We perform a validation check
		//SubcomponentFlow returns aadl2::FlowSegment:
		//    (context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::FlowElement|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::FlowElement|ID]
		public Group getGroup() { return cGroup; }
		
		//(context=[aadl2::Subcomponent|ID] '.')?
		public Group getGroup_0() { return cGroup_0; }
		
		//context=[aadl2::Subcomponent|ID]
		public Assignment getContextAssignment_0_0() { return cContextAssignment_0_0; }
		
		//[aadl2::Subcomponent|ID]
		public CrossReference getContextSubcomponentCrossReference_0_0_0() { return cContextSubcomponentCrossReference_0_0_0; }
		
		//ID
		public RuleCall getContextSubcomponentIDTerminalRuleCall_0_0_0_1() { return cContextSubcomponentIDTerminalRuleCall_0_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_0_1() { return cFullStopKeyword_0_1; }
		
		//flowElement=[aadl2::FlowElement|ID]
		public Assignment getFlowElementAssignment_1() { return cFlowElementAssignment_1; }
		
		//[aadl2::FlowElement|ID]
		public CrossReference getFlowElementFlowElementCrossReference_1_0() { return cFlowElementFlowElementCrossReference_1_0; }
		
		//ID
		public RuleCall getFlowElementFlowElementIDTerminalRuleCall_1_0_1() { return cFlowElementFlowElementIDTerminalRuleCall_1_0_1; }
	}
	public class ConnectionFlowElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ConnectionFlow");
		private final Assignment cFlowElementAssignment = (Assignment)rule.eContents().get(1);
		private final CrossReference cFlowElementConnectionCrossReference_0 = (CrossReference)cFlowElementAssignment.eContents().get(0);
		private final RuleCall cFlowElementConnectionIDTerminalRuleCall_0_1 = (RuleCall)cFlowElementConnectionCrossReference_0.eContents().get(1);
		
		//ConnectionFlow returns aadl2::FlowSegment:
		//     flowElement=[aadl2::Connection|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//flowElement=[aadl2::Connection|ID]
		public Assignment getFlowElementAssignment() { return cFlowElementAssignment; }
		
		//[aadl2::Connection|ID]
		public CrossReference getFlowElementConnectionCrossReference_0() { return cFlowElementConnectionCrossReference_0; }
		
		//ID
		public RuleCall getFlowElementConnectionIDTerminalRuleCall_0_1() { return cFlowElementConnectionIDTerminalRuleCall_0_1; }
	}
	public class ETESubcomponentFlowElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ETESubcomponentFlow");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Assignment cContextAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final CrossReference cContextSubcomponentCrossReference_0_0_0 = (CrossReference)cContextAssignment_0_0.eContents().get(0);
		private final RuleCall cContextSubcomponentIDTerminalRuleCall_0_0_0_1 = (RuleCall)cContextSubcomponentCrossReference_0_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cFlowElementAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cFlowElementEndToEndFlowElementCrossReference_1_0 = (CrossReference)cFlowElementAssignment_1.eContents().get(0);
		private final RuleCall cFlowElementEndToEndFlowElementIDTerminalRuleCall_1_0_1 = (RuleCall)cFlowElementEndToEndFlowElementCrossReference_1_0.eContents().get(1);
		
		//ETESubcomponentFlow returns aadl2::EndToEndFlowSegment:
		//    (context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::EndToEndFlowElement|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::EndToEndFlowElement|ID]
		public Group getGroup() { return cGroup; }
		
		//(context=[aadl2::Subcomponent|ID] '.')?
		public Group getGroup_0() { return cGroup_0; }
		
		//context=[aadl2::Subcomponent|ID]
		public Assignment getContextAssignment_0_0() { return cContextAssignment_0_0; }
		
		//[aadl2::Subcomponent|ID]
		public CrossReference getContextSubcomponentCrossReference_0_0_0() { return cContextSubcomponentCrossReference_0_0_0; }
		
		//ID
		public RuleCall getContextSubcomponentIDTerminalRuleCall_0_0_0_1() { return cContextSubcomponentIDTerminalRuleCall_0_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_0_1() { return cFullStopKeyword_0_1; }
		
		//flowElement=[aadl2::EndToEndFlowElement|ID]
		public Assignment getFlowElementAssignment_1() { return cFlowElementAssignment_1; }
		
		//[aadl2::EndToEndFlowElement|ID]
		public CrossReference getFlowElementEndToEndFlowElementCrossReference_1_0() { return cFlowElementEndToEndFlowElementCrossReference_1_0; }
		
		//ID
		public RuleCall getFlowElementEndToEndFlowElementIDTerminalRuleCall_1_0_1() { return cFlowElementEndToEndFlowElementIDTerminalRuleCall_1_0_1; }
	}
	public class ETEConnectionFlowElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ETEConnectionFlow");
		private final Assignment cFlowElementAssignment = (Assignment)rule.eContents().get(1);
		private final CrossReference cFlowElementConnectionCrossReference_0 = (CrossReference)cFlowElementAssignment.eContents().get(0);
		private final RuleCall cFlowElementConnectionIDTerminalRuleCall_0_1 = (RuleCall)cFlowElementConnectionCrossReference_0.eContents().get(1);
		
		//ETEConnectionFlow returns aadl2::EndToEndFlowSegment:
		//     flowElement=[aadl2::Connection|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//flowElement=[aadl2::Connection|ID]
		public Assignment getFlowElementAssignment() { return cFlowElementAssignment; }
		
		//[aadl2::Connection|ID]
		public CrossReference getFlowElementConnectionCrossReference_0() { return cFlowElementConnectionCrossReference_0; }
		
		//ID
		public RuleCall getFlowElementConnectionIDTerminalRuleCall_0_1() { return cFlowElementConnectionIDTerminalRuleCall_0_1; }
	}
	public class ModeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Mode");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cInitialAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cInitialInitialKeyword_2_0 = (Keyword)cInitialAssignment_2.eContents().get(0);
		private final Keyword cModeKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//// Modes
		//Mode returns aadl2::Mode:
		//    name=ID ':' initial?='initial'? 'mode'
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' initial?='initial'? 'mode'
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//initial?='initial'?
		public Assignment getInitialAssignment_2() { return cInitialAssignment_2; }
		
		//'initial'
		public Keyword getInitialInitialKeyword_2_0() { return cInitialInitialKeyword_2_0; }
		
		//'mode'
		public Keyword getModeKeyword_3() { return cModeKeyword_3; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4_0() { return cLeftCurlyBracketKeyword_4_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_4_1() { return cOwnedPropertyAssociationAssignment_4_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_4_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_2() { return cRightCurlyBracketKeyword_4_2; }
		
		//';'
		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
	}
	public class ModeTransitionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ModeTransition");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0_0 = (RuleCall)cNameAssignment_0_0.eContents().get(0);
		private final Keyword cColonKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final Assignment cSourceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cSourceModeCrossReference_1_0 = (CrossReference)cSourceAssignment_1.eContents().get(0);
		private final RuleCall cSourceModeIDTerminalRuleCall_1_0_1 = (RuleCall)cSourceModeCrossReference_1_0.eContents().get(1);
		private final Keyword cHyphenMinusLeftSquareBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cOwnedTriggerAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cOwnedTriggerTriggerParserRuleCall_3_0 = (RuleCall)cOwnedTriggerAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOwnedTriggerAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOwnedTriggerTriggerParserRuleCall_4_1_0 = (RuleCall)cOwnedTriggerAssignment_4_1.eContents().get(0);
		private final Keyword cRightSquareBracketHyphenMinusGreaterThanSignKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cDestinationAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final CrossReference cDestinationModeCrossReference_6_0 = (CrossReference)cDestinationAssignment_6.eContents().get(0);
		private final RuleCall cDestinationModeIDTerminalRuleCall_6_0_1 = (RuleCall)cDestinationModeCrossReference_6_0.eContents().get(1);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cOwnedPropertyAssociationAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0 = (RuleCall)cOwnedPropertyAssociationAssignment_7_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_2 = (Keyword)cGroup_7.eContents().get(2);
		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//ModeTransition returns aadl2::ModeTransition:
		//    (name=ID ':')?
		//    source=[aadl2::Mode|ID] '-['
		//    ownedTrigger+=Trigger
		//    (',' ownedTrigger+=Trigger)*
		//    ']->' destination=[aadl2::Mode|ID]
		//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//(name=ID ':')?
		//source=[aadl2::Mode|ID] '-['
		//ownedTrigger+=Trigger
		//(',' ownedTrigger+=Trigger)*
		//']->' destination=[aadl2::Mode|ID]
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//(name=ID ':')?
		public Group getGroup_0() { return cGroup_0; }
		
		//name=ID
		public Assignment getNameAssignment_0_0() { return cNameAssignment_0_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0_0() { return cNameIDTerminalRuleCall_0_0_0; }
		
		//':'
		public Keyword getColonKeyword_0_1() { return cColonKeyword_0_1; }
		
		//source=[aadl2::Mode|ID]
		public Assignment getSourceAssignment_1() { return cSourceAssignment_1; }
		
		//[aadl2::Mode|ID]
		public CrossReference getSourceModeCrossReference_1_0() { return cSourceModeCrossReference_1_0; }
		
		//ID
		public RuleCall getSourceModeIDTerminalRuleCall_1_0_1() { return cSourceModeIDTerminalRuleCall_1_0_1; }
		
		//'-['
		public Keyword getHyphenMinusLeftSquareBracketKeyword_2() { return cHyphenMinusLeftSquareBracketKeyword_2; }
		
		//ownedTrigger+=Trigger
		public Assignment getOwnedTriggerAssignment_3() { return cOwnedTriggerAssignment_3; }
		
		//Trigger
		public RuleCall getOwnedTriggerTriggerParserRuleCall_3_0() { return cOwnedTriggerTriggerParserRuleCall_3_0; }
		
		//(',' ownedTrigger+=Trigger)*
		public Group getGroup_4() { return cGroup_4; }
		
		//','
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }
		
		//ownedTrigger+=Trigger
		public Assignment getOwnedTriggerAssignment_4_1() { return cOwnedTriggerAssignment_4_1; }
		
		//Trigger
		public RuleCall getOwnedTriggerTriggerParserRuleCall_4_1_0() { return cOwnedTriggerTriggerParserRuleCall_4_1_0; }
		
		//']->'
		public Keyword getRightSquareBracketHyphenMinusGreaterThanSignKeyword_5() { return cRightSquareBracketHyphenMinusGreaterThanSignKeyword_5; }
		
		//destination=[aadl2::Mode|ID]
		public Assignment getDestinationAssignment_6() { return cDestinationAssignment_6; }
		
		//[aadl2::Mode|ID]
		public CrossReference getDestinationModeCrossReference_6_0() { return cDestinationModeCrossReference_6_0; }
		
		//ID
		public RuleCall getDestinationModeIDTerminalRuleCall_6_0_1() { return cDestinationModeIDTerminalRuleCall_6_0_1; }
		
		//('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
		public Group getGroup_7() { return cGroup_7; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }
		
		//(ownedPropertyAssociation+=PropertyAssociation)+
		public Assignment getOwnedPropertyAssociationAssignment_7_1() { return cOwnedPropertyAssociationAssignment_7_1; }
		
		//PropertyAssociation
		public RuleCall getOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0() { return cOwnedPropertyAssociationPropertyAssociationParserRuleCall_7_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_7_2() { return cRightCurlyBracketKeyword_7_2; }
		
		//';'
		public Keyword getSemicolonKeyword_8() { return cSemicolonKeyword_8; }
	}
	public class TriggerElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.Trigger");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Group cGroup_0_0 = (Group)cGroup_0.eContents().get(0);
		private final Assignment cContextAssignment_0_0_0 = (Assignment)cGroup_0_0.eContents().get(0);
		private final CrossReference cContextContextCrossReference_0_0_0_0 = (CrossReference)cContextAssignment_0_0_0.eContents().get(0);
		private final RuleCall cContextContextIDTerminalRuleCall_0_0_0_0_1 = (RuleCall)cContextContextCrossReference_0_0_0_0.eContents().get(1);
		private final Keyword cFullStopKeyword_0_0_1 = (Keyword)cGroup_0_0.eContents().get(1);
		private final Assignment cTriggerPortAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final CrossReference cTriggerPortPortCrossReference_0_1_0 = (CrossReference)cTriggerPortAssignment_0_1.eContents().get(0);
		private final RuleCall cTriggerPortPortIDTerminalRuleCall_0_1_0_1 = (RuleCall)cTriggerPortPortCrossReference_0_1_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Keyword cSelfKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cTriggerPortAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final CrossReference cTriggerPortInternalFeatureCrossReference_1_2_0 = (CrossReference)cTriggerPortAssignment_1_2.eContents().get(0);
		private final RuleCall cTriggerPortInternalFeatureIDTerminalRuleCall_1_2_0_1 = (RuleCall)cTriggerPortInternalFeatureCrossReference_1_2_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
		private final Keyword cProcessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cFullStopKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cTriggerPortAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final CrossReference cTriggerPortPortProxyCrossReference_2_2_0 = (CrossReference)cTriggerPortAssignment_2_2.eContents().get(0);
		private final RuleCall cTriggerPortPortProxyIDTerminalRuleCall_2_2_0_1 = (RuleCall)cTriggerPortPortProxyCrossReference_2_2_0.eContents().get(1);
		
		//Trigger returns aadl2::ModeTransitionTrigger:
		//    (
		//        (context=[aadl2::Context|ID] '.')?
		//        triggerPort=[aadl2::Port|ID]
		//    )
		//    | 'self' '.' triggerPort=[aadl2::InternalFeature|ID]
		//    | 'processor' '.' triggerPort=[aadl2::PortProxy|ID]
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//(
		//    (context=[aadl2::Context|ID] '.')?
		//    triggerPort=[aadl2::Port|ID]
		//)
		//| 'self' '.' triggerPort=[aadl2::InternalFeature|ID]
		//| 'processor' '.' triggerPort=[aadl2::PortProxy|ID]
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//(
		//    (context=[aadl2::Context|ID] '.')?
		//    triggerPort=[aadl2::Port|ID]
		//)
		public Group getGroup_0() { return cGroup_0; }
		
		//(context=[aadl2::Context|ID] '.')?
		public Group getGroup_0_0() { return cGroup_0_0; }
		
		//context=[aadl2::Context|ID]
		public Assignment getContextAssignment_0_0_0() { return cContextAssignment_0_0_0; }
		
		//[aadl2::Context|ID]
		public CrossReference getContextContextCrossReference_0_0_0_0() { return cContextContextCrossReference_0_0_0_0; }
		
		//ID
		public RuleCall getContextContextIDTerminalRuleCall_0_0_0_0_1() { return cContextContextIDTerminalRuleCall_0_0_0_0_1; }
		
		//'.'
		public Keyword getFullStopKeyword_0_0_1() { return cFullStopKeyword_0_0_1; }
		
		//triggerPort=[aadl2::Port|ID]
		public Assignment getTriggerPortAssignment_0_1() { return cTriggerPortAssignment_0_1; }
		
		//[aadl2::Port|ID]
		public CrossReference getTriggerPortPortCrossReference_0_1_0() { return cTriggerPortPortCrossReference_0_1_0; }
		
		//ID
		public RuleCall getTriggerPortPortIDTerminalRuleCall_0_1_0_1() { return cTriggerPortPortIDTerminalRuleCall_0_1_0_1; }
		
		//'self' '.' triggerPort=[aadl2::InternalFeature|ID]
		public Group getGroup_1() { return cGroup_1; }
		
		//'self'
		public Keyword getSelfKeyword_1_0() { return cSelfKeyword_1_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1_1() { return cFullStopKeyword_1_1; }
		
		//triggerPort=[aadl2::InternalFeature|ID]
		public Assignment getTriggerPortAssignment_1_2() { return cTriggerPortAssignment_1_2; }
		
		//[aadl2::InternalFeature|ID]
		public CrossReference getTriggerPortInternalFeatureCrossReference_1_2_0() { return cTriggerPortInternalFeatureCrossReference_1_2_0; }
		
		//ID
		public RuleCall getTriggerPortInternalFeatureIDTerminalRuleCall_1_2_0_1() { return cTriggerPortInternalFeatureIDTerminalRuleCall_1_2_0_1; }
		
		//'processor' '.' triggerPort=[aadl2::PortProxy|ID]
		public Group getGroup_2() { return cGroup_2; }
		
		//'processor'
		public Keyword getProcessorKeyword_2_0() { return cProcessorKeyword_2_0; }
		
		//'.'
		public Keyword getFullStopKeyword_2_1() { return cFullStopKeyword_2_1; }
		
		//triggerPort=[aadl2::PortProxy|ID]
		public Assignment getTriggerPortAssignment_2_2() { return cTriggerPortAssignment_2_2; }
		
		//[aadl2::PortProxy|ID]
		public CrossReference getTriggerPortPortProxyCrossReference_2_2_0() { return cTriggerPortPortProxyCrossReference_2_2_0; }
		
		//ID
		public RuleCall getTriggerPortPortProxyIDTerminalRuleCall_2_2_0_1() { return cTriggerPortPortProxyIDTerminalRuleCall_2_2_0_1; }
	}
	public class ModeRefElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ModeRef");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cParentModeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final CrossReference cParentModeModeCrossReference_0_0 = (CrossReference)cParentModeAssignment_0.eContents().get(0);
		private final RuleCall cParentModeModeIDTerminalRuleCall_0_0_1 = (RuleCall)cParentModeModeCrossReference_0_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cEqualsSignGreaterThanSignKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cDerivedModeAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final CrossReference cDerivedModeModeCrossReference_1_1_0 = (CrossReference)cDerivedModeAssignment_1_1.eContents().get(0);
		private final RuleCall cDerivedModeModeIDTerminalRuleCall_1_1_0_1 = (RuleCall)cDerivedModeModeCrossReference_1_1_0.eContents().get(1);
		
		//// used where component_in_modes is shown in standard grammar
		//ModeRef returns aadl2::ModeBinding:
		//    parentMode=[aadl2::Mode|ID] ('=>' derivedMode=[aadl2::Mode|ID])?;
		@Override public ParserRule getRule() { return rule; }
		
		//parentMode=[aadl2::Mode|ID] ('=>' derivedMode=[aadl2::Mode|ID])?
		public Group getGroup() { return cGroup; }
		
		//parentMode=[aadl2::Mode|ID]
		public Assignment getParentModeAssignment_0() { return cParentModeAssignment_0; }
		
		//[aadl2::Mode|ID]
		public CrossReference getParentModeModeCrossReference_0_0() { return cParentModeModeCrossReference_0_0; }
		
		//ID
		public RuleCall getParentModeModeIDTerminalRuleCall_0_0_1() { return cParentModeModeIDTerminalRuleCall_0_0_1; }
		
		//('=>' derivedMode=[aadl2::Mode|ID])?
		public Group getGroup_1() { return cGroup_1; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_1_0() { return cEqualsSignGreaterThanSignKeyword_1_0; }
		
		//derivedMode=[aadl2::Mode|ID]
		public Assignment getDerivedModeAssignment_1_1() { return cDerivedModeAssignment_1_1; }
		
		//[aadl2::Mode|ID]
		public CrossReference getDerivedModeModeCrossReference_1_1_0() { return cDerivedModeModeCrossReference_1_1_0; }
		
		//ID
		public RuleCall getDerivedModeModeIDTerminalRuleCall_1_1_0_1() { return cDerivedModeModeIDTerminalRuleCall_1_1_0_1; }
	}
	public class AnnexLibraryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AnnexLibrary");
		private final RuleCall cDefaultAnnexLibraryParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//AnnexLibrary returns aadl2::AnnexLibrary:
		//     DefaultAnnexLibrary;
		@Override public ParserRule getRule() { return rule; }
		
		//DefaultAnnexLibrary
		public RuleCall getDefaultAnnexLibraryParserRuleCall() { return cDefaultAnnexLibraryParserRuleCall; }
	}
	public class DefaultAnnexLibraryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DefaultAnnexLibrary");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAnnexKeyword_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 Assignment cSourceTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cSourceTextANNEXTEXTTerminalRuleCall_2_0 = (RuleCall)cSourceTextAssignment_2.eContents().get(0);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//DefaultAnnexLibrary returns aadl2::DefaultAnnexLibrary:
		//    'annex' name=ID
		//     sourceText=ANNEXTEXT
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//'annex' name=ID
		// sourceText=ANNEXTEXT
		//';'
		public Group getGroup() { return cGroup; }
		
		//'annex'
		public Keyword getAnnexKeyword_0() { return cAnnexKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//sourceText=ANNEXTEXT
		public Assignment getSourceTextAssignment_2() { return cSourceTextAssignment_2; }
		
		//ANNEXTEXT
		public RuleCall getSourceTextANNEXTEXTTerminalRuleCall_2_0() { return cSourceTextANNEXTEXTTerminalRuleCall_2_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class AnnexSubclauseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AnnexSubclause");
		private final RuleCall cDefaultAnnexSubclauseParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//AnnexSubclause returns aadl2::AnnexSubclause:
		//     DefaultAnnexSubclause;
		@Override public ParserRule getRule() { return rule; }
		
		//DefaultAnnexSubclause
		public RuleCall getDefaultAnnexSubclauseParserRuleCall() { return cDefaultAnnexSubclauseParserRuleCall; }
	}
	public class DefaultAnnexSubclauseElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DefaultAnnexSubclause");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAnnexKeyword_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 Assignment cSourceTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cSourceTextANNEXTEXTTerminalRuleCall_2_0 = (RuleCall)cSourceTextAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final RuleCall cInModesKeywordsParserRuleCall_3_0 = (RuleCall)cGroup_3.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Group cGroup_3_2 = (Group)cGroup_3.eContents().get(2);
		private final Assignment cInModeAssignment_3_2_0 = (Assignment)cGroup_3_2.eContents().get(0);
		private final CrossReference cInModeModeCrossReference_3_2_0_0 = (CrossReference)cInModeAssignment_3_2_0.eContents().get(0);
		private final RuleCall cInModeModeIDTerminalRuleCall_3_2_0_0_1 = (RuleCall)cInModeModeCrossReference_3_2_0_0.eContents().get(1);
		private final Group cGroup_3_2_1 = (Group)cGroup_3_2.eContents().get(1);
		private final Keyword cCommaKeyword_3_2_1_0 = (Keyword)cGroup_3_2_1.eContents().get(0);
		private final Assignment cInModeAssignment_3_2_1_1 = (Assignment)cGroup_3_2_1.eContents().get(1);
		private final CrossReference cInModeModeCrossReference_3_2_1_1_0 = (CrossReference)cInModeAssignment_3_2_1_1.eContents().get(0);
		private final RuleCall cInModeModeIDTerminalRuleCall_3_2_1_1_0_1 = (RuleCall)cInModeModeCrossReference_3_2_1_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//DefaultAnnexSubclause returns aadl2::DefaultAnnexSubclause:
		//    'annex' name=ID
		//     sourceText=ANNEXTEXT
		//    ( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//'annex' name=ID
		// sourceText=ANNEXTEXT
		//( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		//';'
		public Group getGroup() { return cGroup; }
		
		//'annex'
		public Keyword getAnnexKeyword_0() { return cAnnexKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//sourceText=ANNEXTEXT
		public Assignment getSourceTextAssignment_2() { return cSourceTextAssignment_2; }
		
		//ANNEXTEXT
		public RuleCall getSourceTextANNEXTEXTTerminalRuleCall_2_0() { return cSourceTextANNEXTEXTTerminalRuleCall_2_0; }
		
		//( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
		public Group getGroup_3() { return cGroup_3; }
		
		//InModesKeywords
		public RuleCall getInModesKeywordsParserRuleCall_3_0() { return cInModesKeywordsParserRuleCall_3_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_3_1() { return cLeftParenthesisKeyword_3_1; }
		
		//(inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* )
		public Group getGroup_3_2() { return cGroup_3_2; }
		
		//inMode+=[aadl2::Mode|ID]
		public Assignment getInModeAssignment_3_2_0() { return cInModeAssignment_3_2_0; }
		
		//[aadl2::Mode|ID]
		public CrossReference getInModeModeCrossReference_3_2_0_0() { return cInModeModeCrossReference_3_2_0_0; }
		
		//ID
		public RuleCall getInModeModeIDTerminalRuleCall_3_2_0_0_1() { return cInModeModeIDTerminalRuleCall_3_2_0_0_1; }
		
		//(',' inMode+=[aadl2::Mode|ID])*
		public Group getGroup_3_2_1() { return cGroup_3_2_1; }
		
		//','
		public Keyword getCommaKeyword_3_2_1_0() { return cCommaKeyword_3_2_1_0; }
		
		//inMode+=[aadl2::Mode|ID]
		public Assignment getInModeAssignment_3_2_1_1() { return cInModeAssignment_3_2_1_1; }
		
		//[aadl2::Mode|ID]
		public CrossReference getInModeModeCrossReference_3_2_1_1_0() { return cInModeModeCrossReference_3_2_1_1_0; }
		
		//ID
		public RuleCall getInModeModeIDTerminalRuleCall_3_2_1_1_0_1() { return cInModeModeIDTerminalRuleCall_3_2_1_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3_3() { return cRightParenthesisKeyword_3_3; }
		
		//';'
		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
	}
	public class PropertySetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PropertySet");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPropertyKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cSetKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cIsKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cWithKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cImportedUnitAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final CrossReference cImportedUnitPropertySetCrossReference_4_1_0 = (CrossReference)cImportedUnitAssignment_4_1.eContents().get(0);
		private final RuleCall cImportedUnitPropertySetIDTerminalRuleCall_4_1_0_1 = (RuleCall)cImportedUnitPropertySetCrossReference_4_1_0.eContents().get(1);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cImportedUnitAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final CrossReference cImportedUnitPropertySetCrossReference_4_2_1_0 = (CrossReference)cImportedUnitAssignment_4_2_1.eContents().get(0);
		private final RuleCall cImportedUnitPropertySetIDTerminalRuleCall_4_2_1_0_1 = (RuleCall)cImportedUnitPropertySetCrossReference_4_2_1_0.eContents().get(1);
		private final Keyword cSemicolonKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Assignment cOwnedPropertyTypeAssignment_5_0 = (Assignment)cAlternatives_5.eContents().get(0);
		private final RuleCall cOwnedPropertyTypePropertyTypeParserRuleCall_5_0_0 = (RuleCall)cOwnedPropertyTypeAssignment_5_0.eContents().get(0);
		private final Assignment cOwnedPropertyAssignment_5_1 = (Assignment)cAlternatives_5.eContents().get(1);
		private final RuleCall cOwnedPropertyPropertyDefinitionParserRuleCall_5_1_0 = (RuleCall)cOwnedPropertyAssignment_5_1.eContents().get(0);
		private final Assignment cOwnedPropertyConstantAssignment_5_2 = (Assignment)cAlternatives_5.eContents().get(2);
		private final RuleCall cOwnedPropertyConstantPropertyConstantParserRuleCall_5_2_0 = (RuleCall)cOwnedPropertyConstantAssignment_5_2.eContents().get(0);
		private final Assignment cOwnedAnnexSubclauseAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_6_0 = (RuleCall)cOwnedAnnexSubclauseAssignment_6.eContents().get(0);
		private final Keyword cEndKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final RuleCall cIDTerminalRuleCall_8 = (RuleCall)cGroup.eContents().get(8);
		private final Keyword cSemicolonKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//    // **************
		//// Properties
		//PropertySet returns aadl2::PropertySet:
		//    'property' 'set' name=ID 'is'
		//    ('with' (importedUnit+=[aadl2::PropertySet|ID])
		//        (',' importedUnit+=[aadl2::PropertySet|ID])* ';')*
		//    (ownedPropertyType+=PropertyType | ownedProperty+=PropertyDefinition
		//    | ownedPropertyConstant+=PropertyConstant)*
		//    (ownedAnnexSubclause+=AnnexSubclause)*
		//    'end' ID ';' ;
		@Override public ParserRule getRule() { return rule; }
		
		//'property' 'set' name=ID 'is'
		//('with' (importedUnit+=[aadl2::PropertySet|ID])
		//    (',' importedUnit+=[aadl2::PropertySet|ID])* ';')*
		//(ownedPropertyType+=PropertyType | ownedProperty+=PropertyDefinition
		//| ownedPropertyConstant+=PropertyConstant)*
		//(ownedAnnexSubclause+=AnnexSubclause)*
		//'end' ID ';'
		public Group getGroup() { return cGroup; }
		
		//'property'
		public Keyword getPropertyKeyword_0() { return cPropertyKeyword_0; }
		
		//'set'
		public Keyword getSetKeyword_1() { return cSetKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//'is'
		public Keyword getIsKeyword_3() { return cIsKeyword_3; }
		
		//('with' (importedUnit+=[aadl2::PropertySet|ID])
		//    (',' importedUnit+=[aadl2::PropertySet|ID])* ';')*
		public Group getGroup_4() { return cGroup_4; }
		
		//'with'
		public Keyword getWithKeyword_4_0() { return cWithKeyword_4_0; }
		
		//(importedUnit+=[aadl2::PropertySet|ID])
		public Assignment getImportedUnitAssignment_4_1() { return cImportedUnitAssignment_4_1; }
		
		//[aadl2::PropertySet|ID]
		public CrossReference getImportedUnitPropertySetCrossReference_4_1_0() { return cImportedUnitPropertySetCrossReference_4_1_0; }
		
		//ID
		public RuleCall getImportedUnitPropertySetIDTerminalRuleCall_4_1_0_1() { return cImportedUnitPropertySetIDTerminalRuleCall_4_1_0_1; }
		
		//(',' importedUnit+=[aadl2::PropertySet|ID])*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//','
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//importedUnit+=[aadl2::PropertySet|ID]
		public Assignment getImportedUnitAssignment_4_2_1() { return cImportedUnitAssignment_4_2_1; }
		
		//[aadl2::PropertySet|ID]
		public CrossReference getImportedUnitPropertySetCrossReference_4_2_1_0() { return cImportedUnitPropertySetCrossReference_4_2_1_0; }
		
		//ID
		public RuleCall getImportedUnitPropertySetIDTerminalRuleCall_4_2_1_0_1() { return cImportedUnitPropertySetIDTerminalRuleCall_4_2_1_0_1; }
		
		//';'
		public Keyword getSemicolonKeyword_4_3() { return cSemicolonKeyword_4_3; }
		
		//(ownedPropertyType+=PropertyType | ownedProperty+=PropertyDefinition
		//| ownedPropertyConstant+=PropertyConstant)*
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//ownedPropertyType+=PropertyType
		public Assignment getOwnedPropertyTypeAssignment_5_0() { return cOwnedPropertyTypeAssignment_5_0; }
		
		//PropertyType
		public RuleCall getOwnedPropertyTypePropertyTypeParserRuleCall_5_0_0() { return cOwnedPropertyTypePropertyTypeParserRuleCall_5_0_0; }
		
		//ownedProperty+=PropertyDefinition
		public Assignment getOwnedPropertyAssignment_5_1() { return cOwnedPropertyAssignment_5_1; }
		
		//PropertyDefinition
		public RuleCall getOwnedPropertyPropertyDefinitionParserRuleCall_5_1_0() { return cOwnedPropertyPropertyDefinitionParserRuleCall_5_1_0; }
		
		//ownedPropertyConstant+=PropertyConstant
		public Assignment getOwnedPropertyConstantAssignment_5_2() { return cOwnedPropertyConstantAssignment_5_2; }
		
		//PropertyConstant
		public RuleCall getOwnedPropertyConstantPropertyConstantParserRuleCall_5_2_0() { return cOwnedPropertyConstantPropertyConstantParserRuleCall_5_2_0; }
		
		//(ownedAnnexSubclause+=AnnexSubclause)*
		public Assignment getOwnedAnnexSubclauseAssignment_6() { return cOwnedAnnexSubclauseAssignment_6; }
		
		//AnnexSubclause
		public RuleCall getOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_6_0() { return cOwnedAnnexSubclauseAnnexSubclauseParserRuleCall_6_0; }
		
		//'end'
		public Keyword getEndKeyword_7() { return cEndKeyword_7; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_8() { return cIDTerminalRuleCall_8; }
		
		//';'
		public Keyword getSemicolonKeyword_9() { return cSemicolonKeyword_9; }
	}
	public class PropertyTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PropertyType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final RuleCall cBooleanTypeParserRuleCall_0_0 = (RuleCall)cAlternatives_0.eContents().get(0);
		private final RuleCall cStringTypeParserRuleCall_0_1 = (RuleCall)cAlternatives_0.eContents().get(1);
		private final RuleCall cEnumerationTypeParserRuleCall_0_2 = (RuleCall)cAlternatives_0.eContents().get(2);
		private final RuleCall cUnitsTypeParserRuleCall_0_3 = (RuleCall)cAlternatives_0.eContents().get(3);
		private final RuleCall cRealTypeParserRuleCall_0_4 = (RuleCall)cAlternatives_0.eContents().get(4);
		private final RuleCall cIntegerTypeParserRuleCall_0_5 = (RuleCall)cAlternatives_0.eContents().get(5);
		private final RuleCall cRangeTypeParserRuleCall_0_6 = (RuleCall)cAlternatives_0.eContents().get(6);
		private final RuleCall cClassifierTypeParserRuleCall_0_7 = (RuleCall)cAlternatives_0.eContents().get(7);
		private final RuleCall cReferenceTypeParserRuleCall_0_8 = (RuleCall)cAlternatives_0.eContents().get(8);
		private final RuleCall cRecordTypeParserRuleCall_0_9 = (RuleCall)cAlternatives_0.eContents().get(9);
		private final Keyword cSemicolonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//PropertyType returns aadl2::PropertyType:
		//    (BooleanType|StringType|EnumerationType|UnitsType |RealType
		//    |IntegerType|RangeType|ClassifierType|ReferenceType|RecordType)
		//    ';';
		@Override public ParserRule getRule() { return rule; }
		
		//(BooleanType|StringType|EnumerationType|UnitsType |RealType
		//|IntegerType|RangeType|ClassifierType|ReferenceType|RecordType)
		//';'
		public Group getGroup() { return cGroup; }
		
		//(BooleanType|StringType|EnumerationType|UnitsType |RealType
		//|IntegerType|RangeType|ClassifierType|ReferenceType|RecordType)
		public Alternatives getAlternatives_0() { return cAlternatives_0; }
		
		//BooleanType
		public RuleCall getBooleanTypeParserRuleCall_0_0() { return cBooleanTypeParserRuleCall_0_0; }
		
		//StringType
		public RuleCall getStringTypeParserRuleCall_0_1() { return cStringTypeParserRuleCall_0_1; }
		
		//EnumerationType
		public RuleCall getEnumerationTypeParserRuleCall_0_2() { return cEnumerationTypeParserRuleCall_0_2; }
		
		//UnitsType
		public RuleCall getUnitsTypeParserRuleCall_0_3() { return cUnitsTypeParserRuleCall_0_3; }
		
		//RealType
		public RuleCall getRealTypeParserRuleCall_0_4() { return cRealTypeParserRuleCall_0_4; }
		
		//IntegerType
		public RuleCall getIntegerTypeParserRuleCall_0_5() { return cIntegerTypeParserRuleCall_0_5; }
		
		//RangeType
		public RuleCall getRangeTypeParserRuleCall_0_6() { return cRangeTypeParserRuleCall_0_6; }
		
		//ClassifierType
		public RuleCall getClassifierTypeParserRuleCall_0_7() { return cClassifierTypeParserRuleCall_0_7; }
		
		//ReferenceType
		public RuleCall getReferenceTypeParserRuleCall_0_8() { return cReferenceTypeParserRuleCall_0_8; }
		
		//RecordType
		public RuleCall getRecordTypeParserRuleCall_0_9() { return cRecordTypeParserRuleCall_0_9; }
		
		//';'
		public Keyword getSemicolonKeyword_1() { return cSemicolonKeyword_1; }
	}
	public class UnnamedPropertyTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedPropertyType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cListTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cUnnamedBooleanTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cUnnamedStringTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cUnnamedEnumerationTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cUnnamedUnitsTypeParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cUnnamedRealTypeParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cUnnamedIntegerTypeParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cUnnamedRangeTypeParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cUnnamedClassifierTypeParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cUnnamedReferenceTypeParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		private final RuleCall cUnnamedRecordTypeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
		
		//UnnamedPropertyType returns aadl2::PropertyType:
		//    (ListType|
		//        UnnamedBooleanType|UnnamedStringType|UnnamedEnumerationType|UnnamedUnitsType |UnnamedRealType
		//    |UnnamedIntegerType|UnnamedRangeType|UnnamedClassifierType|UnnamedReferenceType|UnnamedRecordType)
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//(ListType|
		//    UnnamedBooleanType|UnnamedStringType|UnnamedEnumerationType|UnnamedUnitsType |UnnamedRealType
		//|UnnamedIntegerType|UnnamedRangeType|UnnamedClassifierType|UnnamedReferenceType|UnnamedRecordType)
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ListType
		public RuleCall getListTypeParserRuleCall_0() { return cListTypeParserRuleCall_0; }
		
		//UnnamedBooleanType
		public RuleCall getUnnamedBooleanTypeParserRuleCall_1() { return cUnnamedBooleanTypeParserRuleCall_1; }
		
		//UnnamedStringType
		public RuleCall getUnnamedStringTypeParserRuleCall_2() { return cUnnamedStringTypeParserRuleCall_2; }
		
		//UnnamedEnumerationType
		public RuleCall getUnnamedEnumerationTypeParserRuleCall_3() { return cUnnamedEnumerationTypeParserRuleCall_3; }
		
		//UnnamedUnitsType
		public RuleCall getUnnamedUnitsTypeParserRuleCall_4() { return cUnnamedUnitsTypeParserRuleCall_4; }
		
		//UnnamedRealType
		public RuleCall getUnnamedRealTypeParserRuleCall_5() { return cUnnamedRealTypeParserRuleCall_5; }
		
		//UnnamedIntegerType
		public RuleCall getUnnamedIntegerTypeParserRuleCall_6() { return cUnnamedIntegerTypeParserRuleCall_6; }
		
		//UnnamedRangeType
		public RuleCall getUnnamedRangeTypeParserRuleCall_7() { return cUnnamedRangeTypeParserRuleCall_7; }
		
		//UnnamedClassifierType
		public RuleCall getUnnamedClassifierTypeParserRuleCall_8() { return cUnnamedClassifierTypeParserRuleCall_8; }
		
		//UnnamedReferenceType
		public RuleCall getUnnamedReferenceTypeParserRuleCall_9() { return cUnnamedReferenceTypeParserRuleCall_9; }
		
		//UnnamedRecordType
		public RuleCall getUnnamedRecordTypeParserRuleCall_10() { return cUnnamedRecordTypeParserRuleCall_10; }
	}
	public class BooleanTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BooleanType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cAadlbooleanKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//BooleanType returns aadl2::AadlBoolean:
		//     name=ID ':' 'type'
		//    'aadlboolean';
		@Override public ParserRule getRule() { return rule; }
		
		// name=ID ':' 'type'
		//'aadlboolean'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'aadlboolean'
		public Keyword getAadlbooleanKeyword_3() { return cAadlbooleanKeyword_3; }
	}
	public class UnnamedBooleanTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedBooleanType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAadlBooleanAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cAadlbooleanKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//UnnamedBooleanType returns aadl2::AadlBoolean:
		//    {aadl2::AadlBoolean}'aadlboolean';
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::AadlBoolean}'aadlboolean'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::AadlBoolean}
		public Action getAadlBooleanAction_0() { return cAadlBooleanAction_0; }
		
		//'aadlboolean'
		public Keyword getAadlbooleanKeyword_1() { return cAadlbooleanKeyword_1; }
	}
	public class StringTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.StringType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cAadlstringKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//StringType returns aadl2::AadlString:
		//    name=ID ':' 'type'
		//    'aadlstring';
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'aadlstring'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'aadlstring'
		public Keyword getAadlstringKeyword_3() { return cAadlstringKeyword_3; }
	}
	public class UnnamedStringTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedStringType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAadlStringAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cAadlstringKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//UnnamedStringType returns aadl2::AadlString:
		//    {aadl2::AadlString}'aadlstring';
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::AadlString}'aadlstring'
		public Group getGroup() { return cGroup; }
		
		//{aadl2::AadlString}
		public Action getAadlStringAction_0() { return cAadlStringAction_0; }
		
		//'aadlstring'
		public Keyword getAadlstringKeyword_1() { return cAadlstringKeyword_1; }
	}
	public class EnumerationTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EnumerationType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cEnumerationKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cLeftParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cOwnedLiteralAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOwnedLiteralEnumerationLiteralParserRuleCall_5_0 = (RuleCall)cOwnedLiteralAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cCommaKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedLiteralAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedLiteralEnumerationLiteralParserRuleCall_6_1_0 = (RuleCall)cOwnedLiteralAssignment_6_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//EnumerationType returns aadl2::EnumerationType:
		//    name=ID ':' 'type'
		//    'enumeration'
		//    '(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')';
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'enumeration'
		//'(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'enumeration'
		public Keyword getEnumerationKeyword_3() { return cEnumerationKeyword_3; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4() { return cLeftParenthesisKeyword_4; }
		
		//ownedLiteral+=EnumerationLiteral
		public Assignment getOwnedLiteralAssignment_5() { return cOwnedLiteralAssignment_5; }
		
		//EnumerationLiteral
		public RuleCall getOwnedLiteralEnumerationLiteralParserRuleCall_5_0() { return cOwnedLiteralEnumerationLiteralParserRuleCall_5_0; }
		
		//(',' ownedLiteral+=EnumerationLiteral)*
		public Group getGroup_6() { return cGroup_6; }
		
		//','
		public Keyword getCommaKeyword_6_0() { return cCommaKeyword_6_0; }
		
		//ownedLiteral+=EnumerationLiteral
		public Assignment getOwnedLiteralAssignment_6_1() { return cOwnedLiteralAssignment_6_1; }
		
		//EnumerationLiteral
		public RuleCall getOwnedLiteralEnumerationLiteralParserRuleCall_6_1_0() { return cOwnedLiteralEnumerationLiteralParserRuleCall_6_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_7() { return cRightParenthesisKeyword_7; }
	}
	public class UnnamedEnumerationTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedEnumerationType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEnumerationKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cOwnedLiteralAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOwnedLiteralEnumerationLiteralParserRuleCall_2_0 = (RuleCall)cOwnedLiteralAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cCommaKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOwnedLiteralAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOwnedLiteralEnumerationLiteralParserRuleCall_3_1_0 = (RuleCall)cOwnedLiteralAssignment_3_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//UnnamedEnumerationType returns aadl2::EnumerationType:
		//    'enumeration'
		//    '(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')';
		@Override public ParserRule getRule() { return rule; }
		
		//'enumeration'
		//'(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')'
		public Group getGroup() { return cGroup; }
		
		//'enumeration'
		public Keyword getEnumerationKeyword_0() { return cEnumerationKeyword_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
		
		//ownedLiteral+=EnumerationLiteral
		public Assignment getOwnedLiteralAssignment_2() { return cOwnedLiteralAssignment_2; }
		
		//EnumerationLiteral
		public RuleCall getOwnedLiteralEnumerationLiteralParserRuleCall_2_0() { return cOwnedLiteralEnumerationLiteralParserRuleCall_2_0; }
		
		//(',' ownedLiteral+=EnumerationLiteral)*
		public Group getGroup_3() { return cGroup_3; }
		
		//','
		public Keyword getCommaKeyword_3_0() { return cCommaKeyword_3_0; }
		
		//ownedLiteral+=EnumerationLiteral
		public Assignment getOwnedLiteralAssignment_3_1() { return cOwnedLiteralAssignment_3_1; }
		
		//EnumerationLiteral
		public RuleCall getOwnedLiteralEnumerationLiteralParserRuleCall_3_1_0() { return cOwnedLiteralEnumerationLiteralParserRuleCall_3_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
	}
	public class EnumerationLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EnumerationLiteral");
		private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
		
		//EnumerationLiteral returns aadl2::EnumerationLiteral:
		//    name=ID;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID
		public Assignment getNameAssignment() { return cNameAssignment; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0() { return cNameIDTerminalRuleCall_0; }
	}
	public class UnitsTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnitsType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cUnitsKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cLeftParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cOwnedLiteralAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOwnedLiteralUnitLiteralParserRuleCall_5_0 = (RuleCall)cOwnedLiteralAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cCommaKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cOwnedLiteralAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cOwnedLiteralUnitLiteralConversionParserRuleCall_6_1_0 = (RuleCall)cOwnedLiteralAssignment_6_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//UnitsType returns aadl2::UnitsType:
		//    name=ID ':' 'type'
		//    'units'
		//    '(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')';
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'units'
		//'(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'units'
		public Keyword getUnitsKeyword_3() { return cUnitsKeyword_3; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4() { return cLeftParenthesisKeyword_4; }
		
		//ownedLiteral+=UnitLiteral
		public Assignment getOwnedLiteralAssignment_5() { return cOwnedLiteralAssignment_5; }
		
		//UnitLiteral
		public RuleCall getOwnedLiteralUnitLiteralParserRuleCall_5_0() { return cOwnedLiteralUnitLiteralParserRuleCall_5_0; }
		
		//(',' ownedLiteral+=UnitLiteralConversion)*
		public Group getGroup_6() { return cGroup_6; }
		
		//','
		public Keyword getCommaKeyword_6_0() { return cCommaKeyword_6_0; }
		
		//ownedLiteral+=UnitLiteralConversion
		public Assignment getOwnedLiteralAssignment_6_1() { return cOwnedLiteralAssignment_6_1; }
		
		//UnitLiteralConversion
		public RuleCall getOwnedLiteralUnitLiteralConversionParserRuleCall_6_1_0() { return cOwnedLiteralUnitLiteralConversionParserRuleCall_6_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_7() { return cRightParenthesisKeyword_7; }
	}
	public class UnnamedUnitsTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedUnitsType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUnitsKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cOwnedLiteralAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOwnedLiteralUnitLiteralParserRuleCall_2_0 = (RuleCall)cOwnedLiteralAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cCommaKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOwnedLiteralAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOwnedLiteralUnitLiteralConversionParserRuleCall_3_1_0 = (RuleCall)cOwnedLiteralAssignment_3_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//UnnamedUnitsType returns aadl2::UnitsType:
		//    'units'
		//    '(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')';
		@Override public ParserRule getRule() { return rule; }
		
		//'units'
		//'(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')'
		public Group getGroup() { return cGroup; }
		
		//'units'
		public Keyword getUnitsKeyword_0() { return cUnitsKeyword_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
		
		//ownedLiteral+=UnitLiteral
		public Assignment getOwnedLiteralAssignment_2() { return cOwnedLiteralAssignment_2; }
		
		//UnitLiteral
		public RuleCall getOwnedLiteralUnitLiteralParserRuleCall_2_0() { return cOwnedLiteralUnitLiteralParserRuleCall_2_0; }
		
		//(',' ownedLiteral+=UnitLiteralConversion)*
		public Group getGroup_3() { return cGroup_3; }
		
		//','
		public Keyword getCommaKeyword_3_0() { return cCommaKeyword_3_0; }
		
		//ownedLiteral+=UnitLiteralConversion
		public Assignment getOwnedLiteralAssignment_3_1() { return cOwnedLiteralAssignment_3_1; }
		
		//UnitLiteralConversion
		public RuleCall getOwnedLiteralUnitLiteralConversionParserRuleCall_3_1_0() { return cOwnedLiteralUnitLiteralConversionParserRuleCall_3_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
	}
	public class UnitLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnitLiteral");
		private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
		
		//UnitLiteral returns aadl2::UnitLiteral:
		//    name=ID;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID
		public Assignment getNameAssignment() { return cNameAssignment; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0() { return cNameIDTerminalRuleCall_0; }
	}
	public class UnitLiteralConversionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnitLiteralConversion");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cEqualsSignGreaterThanSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cBaseUnitAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cBaseUnitUnitLiteralCrossReference_2_0 = (CrossReference)cBaseUnitAssignment_2.eContents().get(0);
		private final RuleCall cBaseUnitUnitLiteralIDTerminalRuleCall_2_0_1 = (RuleCall)cBaseUnitUnitLiteralCrossReference_2_0.eContents().get(1);
		private final RuleCall cSTARParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cFactorAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cFactorNumberValueParserRuleCall_4_0 = (RuleCall)cFactorAssignment_4.eContents().get(0);
		
		//UnitLiteralConversion returns aadl2::UnitLiteral:
		//    name=ID '=>' baseUnit=[aadl2::UnitLiteral|ID] STAR factor=NumberValue
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID '=>' baseUnit=[aadl2::UnitLiteral|ID] STAR factor=NumberValue
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_1() { return cEqualsSignGreaterThanSignKeyword_1; }
		
		//baseUnit=[aadl2::UnitLiteral|ID]
		public Assignment getBaseUnitAssignment_2() { return cBaseUnitAssignment_2; }
		
		//[aadl2::UnitLiteral|ID]
		public CrossReference getBaseUnitUnitLiteralCrossReference_2_0() { return cBaseUnitUnitLiteralCrossReference_2_0; }
		
		//ID
		public RuleCall getBaseUnitUnitLiteralIDTerminalRuleCall_2_0_1() { return cBaseUnitUnitLiteralIDTerminalRuleCall_2_0_1; }
		
		//STAR
		public RuleCall getSTARParserRuleCall_3() { return cSTARParserRuleCall_3; }
		
		//factor=NumberValue
		public Assignment getFactorAssignment_4() { return cFactorAssignment_4; }
		
		//NumberValue
		public RuleCall getFactorNumberValueParserRuleCall_4_0() { return cFactorNumberValueParserRuleCall_4_0; }
	}
	public class RealTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RealType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cAadlrealKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cRangeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cRangeRealRangeParserRuleCall_4_0 = (RuleCall)cRangeAssignment_4.eContents().get(0);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Assignment cOwnedUnitsTypeAssignment_5_0 = (Assignment)cAlternatives_5.eContents().get(0);
		private final RuleCall cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0 = (RuleCall)cOwnedUnitsTypeAssignment_5_0.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
		private final Keyword cUnitsKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Assignment cReferencedUnitsTypeAssignment_5_1_1 = (Assignment)cGroup_5_1.eContents().get(1);
		private final CrossReference cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0 = (CrossReference)cReferencedUnitsTypeAssignment_5_1_1.eContents().get(0);
		private final RuleCall cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1 = (RuleCall)cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0.eContents().get(1);
		
		//RealType returns aadl2::AadlReal:
		//    name=ID ':' 'type'
		//    'aadlreal' (range=RealRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'aadlreal' (range=RealRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'aadlreal'
		public Keyword getAadlrealKeyword_3() { return cAadlrealKeyword_3; }
		
		//(range=RealRange)?
		public Assignment getRangeAssignment_4() { return cRangeAssignment_4; }
		
		//RealRange
		public RuleCall getRangeRealRangeParserRuleCall_4_0() { return cRangeRealRangeParserRuleCall_4_0; }
		
		//( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//ownedUnitsType=UnnamedUnitsType
		public Assignment getOwnedUnitsTypeAssignment_5_0() { return cOwnedUnitsTypeAssignment_5_0; }
		
		//UnnamedUnitsType
		public RuleCall getOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0() { return cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0; }
		
		//('units' referencedUnitsType=[aadl2::UnitsType|QPREF])
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//'units'
		public Keyword getUnitsKeyword_5_1_0() { return cUnitsKeyword_5_1_0; }
		
		//referencedUnitsType=[aadl2::UnitsType|QPREF]
		public Assignment getReferencedUnitsTypeAssignment_5_1_1() { return cReferencedUnitsTypeAssignment_5_1_1; }
		
		//[aadl2::UnitsType|QPREF]
		public CrossReference getReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0() { return cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0; }
		
		//QPREF
		public RuleCall getReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1() { return cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1; }
	}
	public class UnnamedRealTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedRealType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAadlRealAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cAadlrealKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cRangeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cRangeRealRangeParserRuleCall_2_0 = (RuleCall)cRangeAssignment_2.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cOwnedUnitsTypeAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final RuleCall cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0 = (RuleCall)cOwnedUnitsTypeAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
		private final Keyword cUnitsKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cReferencedUnitsTypeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final CrossReference cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0 = (CrossReference)cReferencedUnitsTypeAssignment_3_1_1.eContents().get(0);
		private final RuleCall cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1 = (RuleCall)cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0.eContents().get(1);
		
		//UnnamedRealType returns aadl2::AadlReal:
		//    {aadl2::AadlReal}
		//    'aadlreal' (range=RealRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::AadlReal}
		//'aadlreal' (range=RealRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Group getGroup() { return cGroup; }
		
		//{aadl2::AadlReal}
		public Action getAadlRealAction_0() { return cAadlRealAction_0; }
		
		//'aadlreal'
		public Keyword getAadlrealKeyword_1() { return cAadlrealKeyword_1; }
		
		//(range=RealRange)?
		public Assignment getRangeAssignment_2() { return cRangeAssignment_2; }
		
		//RealRange
		public RuleCall getRangeRealRangeParserRuleCall_2_0() { return cRangeRealRangeParserRuleCall_2_0; }
		
		//((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//ownedUnitsType=UnnamedUnitsType
		public Assignment getOwnedUnitsTypeAssignment_3_0() { return cOwnedUnitsTypeAssignment_3_0; }
		
		//UnnamedUnitsType
		public RuleCall getOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0() { return cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0; }
		
		//('units' referencedUnitsType=[aadl2::UnitsType|QPREF])
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'units'
		public Keyword getUnitsKeyword_3_1_0() { return cUnitsKeyword_3_1_0; }
		
		//referencedUnitsType=[aadl2::UnitsType|QPREF]
		public Assignment getReferencedUnitsTypeAssignment_3_1_1() { return cReferencedUnitsTypeAssignment_3_1_1; }
		
		//[aadl2::UnitsType|QPREF]
		public CrossReference getReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0() { return cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0; }
		
		//QPREF
		public RuleCall getReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1() { return cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1; }
	}
	public class IntegerTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.IntegerType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cAadlintegerKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cRangeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cRangeIntegerRangeParserRuleCall_4_0 = (RuleCall)cRangeAssignment_4.eContents().get(0);
		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
		private final Assignment cOwnedUnitsTypeAssignment_5_0 = (Assignment)cAlternatives_5.eContents().get(0);
		private final RuleCall cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0 = (RuleCall)cOwnedUnitsTypeAssignment_5_0.eContents().get(0);
		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
		private final Keyword cUnitsKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
		private final Assignment cReferencedUnitsTypeAssignment_5_1_1 = (Assignment)cGroup_5_1.eContents().get(1);
		private final CrossReference cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0 = (CrossReference)cReferencedUnitsTypeAssignment_5_1_1.eContents().get(0);
		private final RuleCall cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1 = (RuleCall)cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0.eContents().get(1);
		
		//IntegerType returns aadl2::AadlInteger:
		//    name=ID ':' 'type'
		//    'aadlinteger' (range=IntegerRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'aadlinteger' (range=IntegerRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'aadlinteger'
		public Keyword getAadlintegerKeyword_3() { return cAadlintegerKeyword_3; }
		
		//(range=IntegerRange)?
		public Assignment getRangeAssignment_4() { return cRangeAssignment_4; }
		
		//IntegerRange
		public RuleCall getRangeIntegerRangeParserRuleCall_4_0() { return cRangeIntegerRangeParserRuleCall_4_0; }
		
		//((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Alternatives getAlternatives_5() { return cAlternatives_5; }
		
		//ownedUnitsType=UnnamedUnitsType
		public Assignment getOwnedUnitsTypeAssignment_5_0() { return cOwnedUnitsTypeAssignment_5_0; }
		
		//UnnamedUnitsType
		public RuleCall getOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0() { return cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_5_0_0; }
		
		//('units' referencedUnitsType=[aadl2::UnitsType|QPREF])
		public Group getGroup_5_1() { return cGroup_5_1; }
		
		//'units'
		public Keyword getUnitsKeyword_5_1_0() { return cUnitsKeyword_5_1_0; }
		
		//referencedUnitsType=[aadl2::UnitsType|QPREF]
		public Assignment getReferencedUnitsTypeAssignment_5_1_1() { return cReferencedUnitsTypeAssignment_5_1_1; }
		
		//[aadl2::UnitsType|QPREF]
		public CrossReference getReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0() { return cReferencedUnitsTypeUnitsTypeCrossReference_5_1_1_0; }
		
		//QPREF
		public RuleCall getReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1() { return cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_5_1_1_0_1; }
	}
	public class UnnamedIntegerTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedIntegerType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAadlIntegerAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cAadlintegerKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cRangeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cRangeIntegerRangeParserRuleCall_2_0 = (RuleCall)cRangeAssignment_2.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cOwnedUnitsTypeAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final RuleCall cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0 = (RuleCall)cOwnedUnitsTypeAssignment_3_0.eContents().get(0);
		private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
		private final Keyword cUnitsKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
		private final Assignment cReferencedUnitsTypeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
		private final CrossReference cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0 = (CrossReference)cReferencedUnitsTypeAssignment_3_1_1.eContents().get(0);
		private final RuleCall cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1 = (RuleCall)cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0.eContents().get(1);
		
		//UnnamedIntegerType returns aadl2::AadlInteger:
		//    {aadl2::AadlInteger}
		//    'aadlinteger' (range=IntegerRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::AadlInteger}
		//'aadlinteger' (range=IntegerRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Group getGroup() { return cGroup; }
		
		//{aadl2::AadlInteger}
		public Action getAadlIntegerAction_0() { return cAadlIntegerAction_0; }
		
		//'aadlinteger'
		public Keyword getAadlintegerKeyword_1() { return cAadlintegerKeyword_1; }
		
		//(range=IntegerRange)?
		public Assignment getRangeAssignment_2() { return cRangeAssignment_2; }
		
		//IntegerRange
		public RuleCall getRangeIntegerRangeParserRuleCall_2_0() { return cRangeIntegerRangeParserRuleCall_2_0; }
		
		//( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//ownedUnitsType=UnnamedUnitsType
		public Assignment getOwnedUnitsTypeAssignment_3_0() { return cOwnedUnitsTypeAssignment_3_0; }
		
		//UnnamedUnitsType
		public RuleCall getOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0() { return cOwnedUnitsTypeUnnamedUnitsTypeParserRuleCall_3_0_0; }
		
		//('units' referencedUnitsType=[aadl2::UnitsType|QPREF])
		public Group getGroup_3_1() { return cGroup_3_1; }
		
		//'units'
		public Keyword getUnitsKeyword_3_1_0() { return cUnitsKeyword_3_1_0; }
		
		//referencedUnitsType=[aadl2::UnitsType|QPREF]
		public Assignment getReferencedUnitsTypeAssignment_3_1_1() { return cReferencedUnitsTypeAssignment_3_1_1; }
		
		//[aadl2::UnitsType|QPREF]
		public CrossReference getReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0() { return cReferencedUnitsTypeUnitsTypeCrossReference_3_1_1_0; }
		
		//QPREF
		public RuleCall getReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1() { return cReferencedUnitsTypeUnitsTypeQPREFParserRuleCall_3_1_1_0_1; }
	}
	public class RangeTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RangeType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final RuleCall cRangeOfKeywordsParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
		private final Assignment cOwnedNumberTypeAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
		private final Alternatives cOwnedNumberTypeAlternatives_4_0_0 = (Alternatives)cOwnedNumberTypeAssignment_4_0.eContents().get(0);
		private final RuleCall cOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_4_0_0_0 = (RuleCall)cOwnedNumberTypeAlternatives_4_0_0.eContents().get(0);
		private final RuleCall cOwnedNumberTypeUnnamedRealTypeParserRuleCall_4_0_0_1 = (RuleCall)cOwnedNumberTypeAlternatives_4_0_0.eContents().get(1);
		private final Assignment cReferencedNumberTypeAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
		private final CrossReference cReferencedNumberTypeNumberTypeCrossReference_4_1_0 = (CrossReference)cReferencedNumberTypeAssignment_4_1.eContents().get(0);
		private final RuleCall cReferencedNumberTypeNumberTypeQPREFParserRuleCall_4_1_0_1 = (RuleCall)cReferencedNumberTypeNumberTypeCrossReference_4_1_0.eContents().get(1);
		
		//RangeType returns aadl2::RangeType:
		//    name=ID ':' 'type'
		//    RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//        | referencedNumberType=[aadl2::NumberType|QPREF]
		//    )
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//    | referencedNumberType=[aadl2::NumberType|QPREF]
		//)
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//RangeOfKeywords
		public RuleCall getRangeOfKeywordsParserRuleCall_3() { return cRangeOfKeywordsParserRuleCall_3; }
		
		//(ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//       | referencedNumberType=[aadl2::NumberType|QPREF]
		//   )
		public Alternatives getAlternatives_4() { return cAlternatives_4; }
		
		//ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		public Assignment getOwnedNumberTypeAssignment_4_0() { return cOwnedNumberTypeAssignment_4_0; }
		
		//(UnnamedIntegerType|UnnamedRealType)
		public Alternatives getOwnedNumberTypeAlternatives_4_0_0() { return cOwnedNumberTypeAlternatives_4_0_0; }
		
		//UnnamedIntegerType
		public RuleCall getOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_4_0_0_0() { return cOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_4_0_0_0; }
		
		//UnnamedRealType
		public RuleCall getOwnedNumberTypeUnnamedRealTypeParserRuleCall_4_0_0_1() { return cOwnedNumberTypeUnnamedRealTypeParserRuleCall_4_0_0_1; }
		
		//referencedNumberType=[aadl2::NumberType|QPREF]
		public Assignment getReferencedNumberTypeAssignment_4_1() { return cReferencedNumberTypeAssignment_4_1; }
		
		//[aadl2::NumberType|QPREF]
		public CrossReference getReferencedNumberTypeNumberTypeCrossReference_4_1_0() { return cReferencedNumberTypeNumberTypeCrossReference_4_1_0; }
		
		//QPREF
		public RuleCall getReferencedNumberTypeNumberTypeQPREFParserRuleCall_4_1_0_1() { return cReferencedNumberTypeNumberTypeQPREFParserRuleCall_4_1_0_1; }
	}
	public class UnnamedRangeTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedRangeType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cRangeTypeAction_0 = (Action)cGroup.eContents().get(0);
		private final RuleCall cRangeOfKeywordsParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cOwnedNumberTypeAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final Alternatives cOwnedNumberTypeAlternatives_2_0_0 = (Alternatives)cOwnedNumberTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_2_0_0_0 = (RuleCall)cOwnedNumberTypeAlternatives_2_0_0.eContents().get(0);
		private final RuleCall cOwnedNumberTypeUnnamedRealTypeParserRuleCall_2_0_0_1 = (RuleCall)cOwnedNumberTypeAlternatives_2_0_0.eContents().get(1);
		private final Assignment cReferencedNumberTypeAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final CrossReference cReferencedNumberTypeNumberTypeCrossReference_2_1_0 = (CrossReference)cReferencedNumberTypeAssignment_2_1.eContents().get(0);
		private final RuleCall cReferencedNumberTypeNumberTypeQPREFParserRuleCall_2_1_0_1 = (RuleCall)cReferencedNumberTypeNumberTypeCrossReference_2_1_0.eContents().get(1);
		
		//UnnamedRangeType returns aadl2::RangeType:
		//    {aadl2::RangeType}
		//    RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//        | referencedNumberType=[aadl2::NumberType|QPREF]
		//    )
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::RangeType}
		//RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//    | referencedNumberType=[aadl2::NumberType|QPREF]
		//)
		public Group getGroup() { return cGroup; }
		
		//{aadl2::RangeType}
		public Action getRangeTypeAction_0() { return cRangeTypeAction_0; }
		
		//RangeOfKeywords
		public RuleCall getRangeOfKeywordsParserRuleCall_1() { return cRangeOfKeywordsParserRuleCall_1; }
		
		//(ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		//       | referencedNumberType=[aadl2::NumberType|QPREF]
		//   )
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
		public Assignment getOwnedNumberTypeAssignment_2_0() { return cOwnedNumberTypeAssignment_2_0; }
		
		//(UnnamedIntegerType|UnnamedRealType)
		public Alternatives getOwnedNumberTypeAlternatives_2_0_0() { return cOwnedNumberTypeAlternatives_2_0_0; }
		
		//UnnamedIntegerType
		public RuleCall getOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_2_0_0_0() { return cOwnedNumberTypeUnnamedIntegerTypeParserRuleCall_2_0_0_0; }
		
		//UnnamedRealType
		public RuleCall getOwnedNumberTypeUnnamedRealTypeParserRuleCall_2_0_0_1() { return cOwnedNumberTypeUnnamedRealTypeParserRuleCall_2_0_0_1; }
		
		//referencedNumberType=[aadl2::NumberType|QPREF]
		public Assignment getReferencedNumberTypeAssignment_2_1() { return cReferencedNumberTypeAssignment_2_1; }
		
		//[aadl2::NumberType|QPREF]
		public CrossReference getReferencedNumberTypeNumberTypeCrossReference_2_1_0() { return cReferencedNumberTypeNumberTypeCrossReference_2_1_0; }
		
		//QPREF
		public RuleCall getReferencedNumberTypeNumberTypeQPREFParserRuleCall_2_1_0_1() { return cReferencedNumberTypeNumberTypeQPREFParserRuleCall_2_1_0_1; }
	}
	public class ClassifierTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ClassifierType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cClassifierKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cClassifierReferenceAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cClassifierReferenceQMReferenceParserRuleCall_4_1_0 = (RuleCall)cClassifierReferenceAssignment_4_1.eContents().get(0);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cClassifierReferenceAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final RuleCall cClassifierReferenceQMReferenceParserRuleCall_4_2_1_0 = (RuleCall)cClassifierReferenceAssignment_4_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		
		//ClassifierType returns aadl2::ClassifierType:
		//    name=ID ':' 'type'
		//    'classifier'
		//    ('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'classifier'
		//('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'classifier'
		public Keyword getClassifierKeyword_3() { return cClassifierKeyword_3; }
		
		//('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
		
		//classifierReference+=QMReference
		public Assignment getClassifierReferenceAssignment_4_1() { return cClassifierReferenceAssignment_4_1; }
		
		//QMReference
		public RuleCall getClassifierReferenceQMReferenceParserRuleCall_4_1_0() { return cClassifierReferenceQMReferenceParserRuleCall_4_1_0; }
		
		//(',' classifierReference+=QMReference)*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//','
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//classifierReference+=QMReference
		public Assignment getClassifierReferenceAssignment_4_2_1() { return cClassifierReferenceAssignment_4_2_1; }
		
		//QMReference
		public RuleCall getClassifierReferenceQMReferenceParserRuleCall_4_2_1_0() { return cClassifierReferenceQMReferenceParserRuleCall_4_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4_3() { return cRightParenthesisKeyword_4_3; }
	}
	public class UnnamedClassifierTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedClassifierType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cClassifierTypeAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cClassifierKeyword_1 = (Keyword)cGroup.eContents().get(1);
		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 cClassifierReferenceAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cClassifierReferenceQMReferenceParserRuleCall_2_1_0 = (RuleCall)cClassifierReferenceAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cClassifierReferenceAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cClassifierReferenceQMReferenceParserRuleCall_2_2_1_0 = (RuleCall)cClassifierReferenceAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//UnnamedClassifierType returns aadl2::ClassifierType:
		//    {aadl2::ClassifierType}
		//    'classifier'
		//    ('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//{aadl2::ClassifierType}
		//'classifier'
		//('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		public Group getGroup() { return cGroup; }
		
		//{aadl2::ClassifierType}
		public Action getClassifierTypeAction_0() { return cClassifierTypeAction_0; }
		
		//'classifier'
		public Keyword getClassifierKeyword_1() { return cClassifierKeyword_1; }
		
		//('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
		
		//classifierReference+=QMReference
		public Assignment getClassifierReferenceAssignment_2_1() { return cClassifierReferenceAssignment_2_1; }
		
		//QMReference
		public RuleCall getClassifierReferenceQMReferenceParserRuleCall_2_1_0() { return cClassifierReferenceQMReferenceParserRuleCall_2_1_0; }
		
		//(',' classifierReference+=QMReference)*
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//','
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
		
		//classifierReference+=QMReference
		public Assignment getClassifierReferenceAssignment_2_2_1() { return cClassifierReferenceAssignment_2_2_1; }
		
		//QMReference
		public RuleCall getClassifierReferenceQMReferenceParserRuleCall_2_2_1_0() { return cClassifierReferenceQMReferenceParserRuleCall_2_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}
	public class QMReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.QMReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cAnnexNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cAnnexNameIDTerminalRuleCall_0_1_0 = (RuleCall)cAnnexNameAssignment_0_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final RuleCall cSTARParserRuleCall_0_3 = (RuleCall)cGroup_0.eContents().get(3);
		private final RuleCall cSTARParserRuleCall_0_4 = (RuleCall)cGroup_0.eContents().get(4);
		private final Assignment cMetaclassNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Alternatives cMetaclassNameAlternatives_1_0 = (Alternatives)cMetaclassNameAssignment_1.eContents().get(0);
		private final RuleCall cMetaclassNameCoreKeyWordParserRuleCall_1_0_0 = (RuleCall)cMetaclassNameAlternatives_1_0.eContents().get(0);
		private final RuleCall cMetaclassNameIDTerminalRuleCall_1_0_1 = (RuleCall)cMetaclassNameAlternatives_1_0.eContents().get(1);
		
		//QMReference returns aadl2::MetaclassReference:
		//    ('{'  annexName=ID '}' STAR STAR )?
		//    ( metaclassName+=(CoreKeyWord|ID) )+
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//('{'  annexName=ID '}' STAR STAR )?
		//( metaclassName+=(CoreKeyWord|ID) )+
		public Group getGroup() { return cGroup; }
		
		//('{'  annexName=ID '}' STAR STAR )?
		public Group getGroup_0() { return cGroup_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_0_0() { return cLeftCurlyBracketKeyword_0_0; }
		
		//annexName=ID
		public Assignment getAnnexNameAssignment_0_1() { return cAnnexNameAssignment_0_1; }
		
		//ID
		public RuleCall getAnnexNameIDTerminalRuleCall_0_1_0() { return cAnnexNameIDTerminalRuleCall_0_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_0_2() { return cRightCurlyBracketKeyword_0_2; }
		
		//STAR
		public RuleCall getSTARParserRuleCall_0_3() { return cSTARParserRuleCall_0_3; }
		
		//STAR
		public RuleCall getSTARParserRuleCall_0_4() { return cSTARParserRuleCall_0_4; }
		
		//( metaclassName+=(CoreKeyWord|ID) )+
		public Assignment getMetaclassNameAssignment_1() { return cMetaclassNameAssignment_1; }
		
		//(CoreKeyWord|ID)
		public Alternatives getMetaclassNameAlternatives_1_0() { return cMetaclassNameAlternatives_1_0; }
		
		//CoreKeyWord
		public RuleCall getMetaclassNameCoreKeyWordParserRuleCall_1_0_0() { return cMetaclassNameCoreKeyWordParserRuleCall_1_0_0; }
		
		//ID
		public RuleCall getMetaclassNameIDTerminalRuleCall_1_0_1() { return cMetaclassNameIDTerminalRuleCall_1_0_1; }
	}
	public class QCReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.QCReference");
		private final Assignment cClassifierAssignment = (Assignment)rule.eContents().get(1);
		private final CrossReference cClassifierComponentClassifierCrossReference_0 = (CrossReference)cClassifierAssignment.eContents().get(0);
		private final RuleCall cClassifierComponentClassifierFQCREFParserRuleCall_0_1 = (RuleCall)cClassifierComponentClassifierCrossReference_0.eContents().get(1);
		
		//QCReference returns aadl2::ClassifierValue:
		//   classifier=[aadl2::ComponentClassifier|FQCREF]
		//  ;
		@Override public ParserRule getRule() { return rule; }
		
		//classifier=[aadl2::ComponentClassifier|FQCREF]
		public Assignment getClassifierAssignment() { return cClassifierAssignment; }
		
		//[aadl2::ComponentClassifier|FQCREF]
		public CrossReference getClassifierComponentClassifierCrossReference_0() { return cClassifierComponentClassifierCrossReference_0; }
		
		//FQCREF
		public RuleCall getClassifierComponentClassifierFQCREFParserRuleCall_0_1() { return cClassifierComponentClassifierFQCREFParserRuleCall_0_1; }
	}
	public class ReferenceTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ReferenceType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cReferenceKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cNamedElementReferenceAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cNamedElementReferenceQMReferenceParserRuleCall_4_1_0 = (RuleCall)cNamedElementReferenceAssignment_4_1.eContents().get(0);
		private final Group cGroup_4_2 = (Group)cGroup_4.eContents().get(2);
		private final Keyword cCommaKeyword_4_2_0 = (Keyword)cGroup_4_2.eContents().get(0);
		private final Assignment cNamedElementReferenceAssignment_4_2_1 = (Assignment)cGroup_4_2.eContents().get(1);
		private final RuleCall cNamedElementReferenceQMReferenceParserRuleCall_4_2_1_0 = (RuleCall)cNamedElementReferenceAssignment_4_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
		
		//ReferenceType returns aadl2::ReferenceType:
		//    name=ID ':' 'type'
		//    'reference'
		//    ('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'reference'
		//('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'reference'
		public Keyword getReferenceKeyword_3() { return cReferenceKeyword_3; }
		
		//('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		public Group getGroup_4() { return cGroup_4; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
		
		//namedElementReference+=QMReference
		public Assignment getNamedElementReferenceAssignment_4_1() { return cNamedElementReferenceAssignment_4_1; }
		
		//QMReference
		public RuleCall getNamedElementReferenceQMReferenceParserRuleCall_4_1_0() { return cNamedElementReferenceQMReferenceParserRuleCall_4_1_0; }
		
		//(',' namedElementReference+=QMReference)*
		public Group getGroup_4_2() { return cGroup_4_2; }
		
		//','
		public Keyword getCommaKeyword_4_2_0() { return cCommaKeyword_4_2_0; }
		
		//namedElementReference+=QMReference
		public Assignment getNamedElementReferenceAssignment_4_2_1() { return cNamedElementReferenceAssignment_4_2_1; }
		
		//QMReference
		public RuleCall getNamedElementReferenceQMReferenceParserRuleCall_4_2_1_0() { return cNamedElementReferenceQMReferenceParserRuleCall_4_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_4_3() { return cRightParenthesisKeyword_4_3; }
	}
	public class UnnamedReferenceTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedReferenceType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cReferenceKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Action cReferenceTypeAction_1 = (Action)cGroup.eContents().get(1);
		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 cNamedElementReferenceAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cNamedElementReferenceQMReferenceParserRuleCall_2_1_0 = (RuleCall)cNamedElementReferenceAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cNamedElementReferenceAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cNamedElementReferenceQMReferenceParserRuleCall_2_2_1_0 = (RuleCall)cNamedElementReferenceAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//UnnamedReferenceType returns aadl2::ReferenceType:
		//    'reference' {aadl2::ReferenceType}
		//    ('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//'reference' {aadl2::ReferenceType}
		//('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		public Group getGroup() { return cGroup; }
		
		//'reference'
		public Keyword getReferenceKeyword_0() { return cReferenceKeyword_0; }
		
		//{aadl2::ReferenceType}
		public Action getReferenceTypeAction_1() { return cReferenceTypeAction_1; }
		
		//('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
		public Group getGroup_2() { return cGroup_2; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
		
		//namedElementReference+=QMReference
		public Assignment getNamedElementReferenceAssignment_2_1() { return cNamedElementReferenceAssignment_2_1; }
		
		//QMReference
		public RuleCall getNamedElementReferenceQMReferenceParserRuleCall_2_1_0() { return cNamedElementReferenceQMReferenceParserRuleCall_2_1_0; }
		
		//(',' namedElementReference+=QMReference)*
		public Group getGroup_2_2() { return cGroup_2_2; }
		
		//','
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
		
		//namedElementReference+=QMReference
		public Assignment getNamedElementReferenceAssignment_2_2_1() { return cNamedElementReferenceAssignment_2_2_1; }
		
		//QMReference
		public RuleCall getNamedElementReferenceQMReferenceParserRuleCall_2_2_1_0() { return cNamedElementReferenceQMReferenceParserRuleCall_2_2_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}
	public class RecordTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RecordType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cRecordKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cLeftParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cOwnedFieldAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOwnedFieldRecordFieldParserRuleCall_5_0 = (RuleCall)cOwnedFieldAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//RecordType returns aadl2::RecordType:
		//    name=ID ':' 'type'
		//    'record' '('
		//    (ownedField+=RecordField )+
		//    ')'
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//name=ID ':' 'type'
		//'record' '('
		//(ownedField+=RecordField )+
		//')'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'type'
		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
		
		//'record'
		public Keyword getRecordKeyword_3() { return cRecordKeyword_3; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_4() { return cLeftParenthesisKeyword_4; }
		
		//(ownedField+=RecordField )+
		public Assignment getOwnedFieldAssignment_5() { return cOwnedFieldAssignment_5; }
		
		//RecordField
		public RuleCall getOwnedFieldRecordFieldParserRuleCall_5_0() { return cOwnedFieldRecordFieldParserRuleCall_5_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}
	public class UnnamedRecordTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.UnnamedRecordType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRecordKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cOwnedFieldAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOwnedFieldRecordFieldParserRuleCall_2_0 = (RuleCall)cOwnedFieldAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//UnnamedRecordType returns aadl2::RecordType:
		//    'record' '('
		//    (ownedField+=RecordField )+
		//    ')'
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//'record' '('
		//(ownedField+=RecordField )+
		//')'
		public Group getGroup() { return cGroup; }
		
		//'record'
		public Keyword getRecordKeyword_0() { return cRecordKeyword_0; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
		
		//(ownedField+=RecordField )+
		public Assignment getOwnedFieldAssignment_2() { return cOwnedFieldAssignment_2; }
		
		//RecordField
		public RuleCall getOwnedFieldRecordFieldParserRuleCall_2_0() { return cOwnedFieldRecordFieldParserRuleCall_2_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}
	public class RecordFieldElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RecordField");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cReferencedPropertyTypeAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final CrossReference cReferencedPropertyTypePropertyTypeCrossReference_2_0_0 = (CrossReference)cReferencedPropertyTypeAssignment_2_0.eContents().get(0);
		private final RuleCall cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_2_0_0_1 = (RuleCall)cReferencedPropertyTypePropertyTypeCrossReference_2_0_0.eContents().get(1);
		private final Assignment cOwnedPropertyTypeAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final RuleCall cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_2_1_0 = (RuleCall)cOwnedPropertyTypeAssignment_2_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//RecordField returns aadl2::BasicProperty:
		//    name=ID ':'
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    ';'
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//    name=ID ':'
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    ';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		public Alternatives getAlternatives_2() { return cAlternatives_2; }
		
		//referencedPropertyType=[aadl2::PropertyType|QPREF]
		public Assignment getReferencedPropertyTypeAssignment_2_0() { return cReferencedPropertyTypeAssignment_2_0; }
		
		//[aadl2::PropertyType|QPREF]
		public CrossReference getReferencedPropertyTypePropertyTypeCrossReference_2_0_0() { return cReferencedPropertyTypePropertyTypeCrossReference_2_0_0; }
		
		//QPREF
		public RuleCall getReferencedPropertyTypePropertyTypeQPREFParserRuleCall_2_0_0_1() { return cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_2_0_0_1; }
		
		//ownedPropertyType=UnnamedPropertyType
		public Assignment getOwnedPropertyTypeAssignment_2_1() { return cOwnedPropertyTypeAssignment_2_1; }
		
		//UnnamedPropertyType
		public RuleCall getOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_2_1_0() { return cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_2_1_0; }
		
		//';'
		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
	}
	public class PropertyDefinitionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PropertyDefinition");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cInheritAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Keyword cInheritInheritKeyword_2_0 = (Keyword)cInheritAssignment_2.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cReferencedPropertyTypeAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final CrossReference cReferencedPropertyTypePropertyTypeCrossReference_3_0_0 = (CrossReference)cReferencedPropertyTypeAssignment_3_0.eContents().get(0);
		private final RuleCall cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1 = (RuleCall)cReferencedPropertyTypePropertyTypeCrossReference_3_0_0.eContents().get(1);
		private final Assignment cOwnedPropertyTypeAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final RuleCall cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0 = (RuleCall)cOwnedPropertyTypeAssignment_3_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cEqualsSignGreaterThanSignKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cDefaultValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cDefaultValuePropertyExpressionParserRuleCall_4_1_0 = (RuleCall)cDefaultValueAssignment_4_1.eContents().get(0);
		private final RuleCall cAppliesToKeywordsParserRuleCall_5 = (RuleCall)cGroup.eContents().get(5);
		private final Keyword cLeftParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Alternatives cAlternatives_7 = (Alternatives)cGroup.eContents().get(7);
		private final Group cGroup_7_0 = (Group)cAlternatives_7.eContents().get(0);
		private final Assignment cAppliesToAssignment_7_0_0 = (Assignment)cGroup_7_0.eContents().get(0);
		private final RuleCall cAppliesToPropertyOwnerParserRuleCall_7_0_0_0 = (RuleCall)cAppliesToAssignment_7_0_0.eContents().get(0);
		private final Group cGroup_7_0_1 = (Group)cGroup_7_0.eContents().get(1);
		private final Keyword cCommaKeyword_7_0_1_0 = (Keyword)cGroup_7_0_1.eContents().get(0);
		private final Assignment cAppliesToAssignment_7_0_1_1 = (Assignment)cGroup_7_0_1.eContents().get(1);
		private final RuleCall cAppliesToPropertyOwnerParserRuleCall_7_0_1_1_0 = (RuleCall)cAppliesToAssignment_7_0_1_1.eContents().get(0);
		private final Assignment cAppliesToAssignment_7_1 = (Assignment)cAlternatives_7.eContents().get(1);
		private final RuleCall cAppliesToAllReferenceParserRuleCall_7_1_0 = (RuleCall)cAppliesToAssignment_7_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Keyword cSemicolonKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		////&&&&& Property Definition
		//PropertyDefinition returns aadl2::Property:
		//    name=ID ':'
		//    (inherit?='inherit')?
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    ('=>' defaultValue=PropertyExpression)?
		//    AppliesToKeywords '('
		//    ((appliesTo+=PropertyOwner (',' appliesTo+=PropertyOwner)*)|
		//    appliesTo+=AllReference)
		//    ')'
		//    ';'
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//    name=ID ':'
		//    (inherit?='inherit')?
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    ('=>' defaultValue=PropertyExpression)?
		//    AppliesToKeywords '('
		//    ((appliesTo+=PropertyOwner (',' appliesTo+=PropertyOwner)*)|
		//    appliesTo+=AllReference)
		//    ')'
		//    ';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//(inherit?='inherit')?
		public Assignment getInheritAssignment_2() { return cInheritAssignment_2; }
		
		//'inherit'
		public Keyword getInheritInheritKeyword_2_0() { return cInheritInheritKeyword_2_0; }
		
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//referencedPropertyType=[aadl2::PropertyType|QPREF]
		public Assignment getReferencedPropertyTypeAssignment_3_0() { return cReferencedPropertyTypeAssignment_3_0; }
		
		//[aadl2::PropertyType|QPREF]
		public CrossReference getReferencedPropertyTypePropertyTypeCrossReference_3_0_0() { return cReferencedPropertyTypePropertyTypeCrossReference_3_0_0; }
		
		//QPREF
		public RuleCall getReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1() { return cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1; }
		
		//ownedPropertyType=UnnamedPropertyType
		public Assignment getOwnedPropertyTypeAssignment_3_1() { return cOwnedPropertyTypeAssignment_3_1; }
		
		//UnnamedPropertyType
		public RuleCall getOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0() { return cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0; }
		
		//('=>' defaultValue=PropertyExpression)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_4_0() { return cEqualsSignGreaterThanSignKeyword_4_0; }
		
		//defaultValue=PropertyExpression
		public Assignment getDefaultValueAssignment_4_1() { return cDefaultValueAssignment_4_1; }
		
		//PropertyExpression
		public RuleCall getDefaultValuePropertyExpressionParserRuleCall_4_1_0() { return cDefaultValuePropertyExpressionParserRuleCall_4_1_0; }
		
		//AppliesToKeywords
		public RuleCall getAppliesToKeywordsParserRuleCall_5() { return cAppliesToKeywordsParserRuleCall_5; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_6() { return cLeftParenthesisKeyword_6; }
		
		//((appliesTo+=PropertyOwner (',' appliesTo+=PropertyOwner)*)|
		//appliesTo+=AllReference)
		public Alternatives getAlternatives_7() { return cAlternatives_7; }
		
		//(appliesTo+=PropertyOwner (',' appliesTo+=PropertyOwner)*)
		public Group getGroup_7_0() { return cGroup_7_0; }
		
		//appliesTo+=PropertyOwner
		public Assignment getAppliesToAssignment_7_0_0() { return cAppliesToAssignment_7_0_0; }
		
		//PropertyOwner
		public RuleCall getAppliesToPropertyOwnerParserRuleCall_7_0_0_0() { return cAppliesToPropertyOwnerParserRuleCall_7_0_0_0; }
		
		//(',' appliesTo+=PropertyOwner)*
		public Group getGroup_7_0_1() { return cGroup_7_0_1; }
		
		//','
		public Keyword getCommaKeyword_7_0_1_0() { return cCommaKeyword_7_0_1_0; }
		
		//appliesTo+=PropertyOwner
		public Assignment getAppliesToAssignment_7_0_1_1() { return cAppliesToAssignment_7_0_1_1; }
		
		//PropertyOwner
		public RuleCall getAppliesToPropertyOwnerParserRuleCall_7_0_1_1_0() { return cAppliesToPropertyOwnerParserRuleCall_7_0_1_1_0; }
		
		//appliesTo+=AllReference
		public Assignment getAppliesToAssignment_7_1() { return cAppliesToAssignment_7_1; }
		
		//AllReference
		public RuleCall getAppliesToAllReferenceParserRuleCall_7_1_0() { return cAppliesToAllReferenceParserRuleCall_7_1_0; }
		
		//')'
		public Keyword getRightParenthesisKeyword_8() { return cRightParenthesisKeyword_8; }
		
		//';'
		public Keyword getSemicolonKeyword_9() { return cSemicolonKeyword_9; }
	}
	public class AllReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AllReference");
		private final Assignment cMetaclassNameAssignment = (Assignment)rule.eContents().get(1);
		private final Keyword cMetaclassNameAllKeyword_0 = (Keyword)cMetaclassNameAssignment.eContents().get(0);
		
		//AllReference returns aadl2::MetaclassReference:
		//     metaclassName+='all'  // &&&&& actually set it to NamedElement using ALL rule returning "named element" as string
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//metaclassName+='all'
		public Assignment getMetaclassNameAssignment() { return cMetaclassNameAssignment; }
		
		//'all'
		public Keyword getMetaclassNameAllKeyword_0() { return cMetaclassNameAllKeyword_0; }
	}
	public class ListTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ListType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cListOfKeywordsParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cReferencedElementTypeAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final CrossReference cReferencedElementTypePropertyTypeCrossReference_1_0_0 = (CrossReference)cReferencedElementTypeAssignment_1_0.eContents().get(0);
		private final RuleCall cReferencedElementTypePropertyTypeQPREFParserRuleCall_1_0_0_1 = (RuleCall)cReferencedElementTypePropertyTypeCrossReference_1_0_0.eContents().get(1);
		private final Assignment cOwnedElementTypeAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
		private final RuleCall cOwnedElementTypeUnnamedPropertyTypeParserRuleCall_1_1_0 = (RuleCall)cOwnedElementTypeAssignment_1_1.eContents().get(0);
		
		//ListType returns aadl2::ListType:
		//     ListOfKeywords
		//    (referencedElementType=[aadl2::PropertyType|QPREF]|ownedElementType=UnnamedPropertyType)
		//;
		@Override public ParserRule getRule() { return rule; }
		
		// ListOfKeywords
		//(referencedElementType=[aadl2::PropertyType|QPREF]|ownedElementType=UnnamedPropertyType)
		public Group getGroup() { return cGroup; }
		
		//ListOfKeywords
		public RuleCall getListOfKeywordsParserRuleCall_0() { return cListOfKeywordsParserRuleCall_0; }
		
		//(referencedElementType=[aadl2::PropertyType|QPREF]|ownedElementType=UnnamedPropertyType)
		public Alternatives getAlternatives_1() { return cAlternatives_1; }
		
		//referencedElementType=[aadl2::PropertyType|QPREF]
		public Assignment getReferencedElementTypeAssignment_1_0() { return cReferencedElementTypeAssignment_1_0; }
		
		//[aadl2::PropertyType|QPREF]
		public CrossReference getReferencedElementTypePropertyTypeCrossReference_1_0_0() { return cReferencedElementTypePropertyTypeCrossReference_1_0_0; }
		
		//QPREF
		public RuleCall getReferencedElementTypePropertyTypeQPREFParserRuleCall_1_0_0_1() { return cReferencedElementTypePropertyTypeQPREFParserRuleCall_1_0_0_1; }
		
		//ownedElementType=UnnamedPropertyType
		public Assignment getOwnedElementTypeAssignment_1_1() { return cOwnedElementTypeAssignment_1_1; }
		
		//UnnamedPropertyType
		public RuleCall getOwnedElementTypeUnnamedPropertyTypeParserRuleCall_1_1_0() { return cOwnedElementTypeUnnamedPropertyTypeParserRuleCall_1_1_0; }
	}
	public class PropertyOwnerElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PropertyOwner");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cQMReferenceParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cQCReferenceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//PropertyOwner returns aadl2::PropertyOwner:
		//    // classifier value is always qualified by a package name
		//    QMReference | QCReference
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//// classifier value is always qualified by a package name
		//QMReference | QCReference
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//// classifier value is always qualified by a package name
		//QMReference
		public RuleCall getQMReferenceParserRuleCall_0() { return cQMReferenceParserRuleCall_0; }
		
		//QCReference
		public RuleCall getQCReferenceParserRuleCall_1() { return cQCReferenceParserRuleCall_1; }
	}
	public class PropertyConstantElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PropertyConstant");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cConstantKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cReferencedPropertyTypeAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final CrossReference cReferencedPropertyTypePropertyTypeCrossReference_3_0_0 = (CrossReference)cReferencedPropertyTypeAssignment_3_0.eContents().get(0);
		private final RuleCall cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1 = (RuleCall)cReferencedPropertyTypePropertyTypeCrossReference_3_0_0.eContents().get(1);
		private final Assignment cOwnedPropertyTypeAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final RuleCall cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0 = (RuleCall)cOwnedPropertyTypeAssignment_3_1.eContents().get(0);
		private final Keyword cEqualsSignGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cConstantValueAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cConstantValueConstantPropertyExpressionParserRuleCall_5_0 = (RuleCall)cConstantValueAssignment_5.eContents().get(0);
		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//PropertyConstant returns aadl2::PropertyConstant:
		//    name=ID ':' 'constant'
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    '=>' constantValue=ConstantPropertyExpression
		//    ';'
		//     ;
		@Override public ParserRule getRule() { return rule; }
		
		//    name=ID ':' 'constant'
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		//    '=>' constantValue=ConstantPropertyExpression
		//    ';'
		public Group getGroup() { return cGroup; }
		
		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
		
		//':'
		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
		
		//'constant'
		public Keyword getConstantKeyword_2() { return cConstantKeyword_2; }
		
		////    ('list' 'of')* is handled as part of UnnamedPropertytype
		//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
		public Alternatives getAlternatives_3() { return cAlternatives_3; }
		
		//referencedPropertyType=[aadl2::PropertyType|QPREF]
		public Assignment getReferencedPropertyTypeAssignment_3_0() { return cReferencedPropertyTypeAssignment_3_0; }
		
		//[aadl2::PropertyType|QPREF]
		public CrossReference getReferencedPropertyTypePropertyTypeCrossReference_3_0_0() { return cReferencedPropertyTypePropertyTypeCrossReference_3_0_0; }
		
		//QPREF
		public RuleCall getReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1() { return cReferencedPropertyTypePropertyTypeQPREFParserRuleCall_3_0_0_1; }
		
		//ownedPropertyType=UnnamedPropertyType
		public Assignment getOwnedPropertyTypeAssignment_3_1() { return cOwnedPropertyTypeAssignment_3_1; }
		
		//UnnamedPropertyType
		public RuleCall getOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0() { return cOwnedPropertyTypeUnnamedPropertyTypeParserRuleCall_3_1_0; }
		
		//'=>'
		public Keyword getEqualsSignGreaterThanSignKeyword_4() { return cEqualsSignGreaterThanSignKeyword_4; }
		
		//constantValue=ConstantPropertyExpression
		public Assignment getConstantValueAssignment_5() { return cConstantValueAssignment_5; }
		
		//ConstantPropertyExpression
		public RuleCall getConstantValueConstantPropertyExpressionParserRuleCall_5_0() { return cConstantValueConstantPropertyExpressionParserRuleCall_5_0; }
		
		//';'
		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
	}
	public class NumberValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.NumberValue");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cRealLitParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cIntegerLitParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//NumberValue returns aadl2::NumberValue:
		//    RealLit | IntegerLit ;
		@Override public ParserRule getRule() { return rule; }
		
		//RealLit | IntegerLit
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//RealLit
		public RuleCall getRealLitParserRuleCall_0() { return cRealLitParserRuleCall_0; }
		
		//IntegerLit
		public RuleCall getIntegerLitParserRuleCall_1() { return cIntegerLitParserRuleCall_1; }
	}
	public class RealLitElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RealLit");
		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cValueSignedRealParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
		
		//RealLit returns aadl2::RealLiteral:
		//    value=SignedReal ;
		@Override public ParserRule getRule() { return rule; }
		
		//value=SignedReal
		public Assignment getValueAssignment() { return cValueAssignment; }
		
		//SignedReal
		public RuleCall getValueSignedRealParserRuleCall_0() { return cValueSignedRealParserRuleCall_0; }
	}
	public class IntegerLitElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.IntegerLit");
		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cValueSignedIntParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
		
		//IntegerLit returns aadl2::IntegerLiteral:
		//    value=SignedInt ;
		@Override public ParserRule getRule() { return rule; }
		
		//value=SignedInt
		public Assignment getValueAssignment() { return cValueAssignment; }
		
		//SignedInt
		public RuleCall getValueSignedIntParserRuleCall_0() { return cValueSignedIntParserRuleCall_0; }
	}
	public class ConstantPropertyExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ConstantPropertyExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cRecordTermParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cComponentClassifierTermParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cComputedTermParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cStringTermParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cNumericRangeTermParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cRealTermParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cIntegerTermParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cListTermParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cBooleanLiteralParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cLiteralorReferenceTermParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		
		//ConstantPropertyExpression returns aadl2::PropertyExpression:
		////    OldRecordTerm |
		//    RecordTerm | ComponentClassifierTerm
		//    | ComputedTerm | StringTerm |NumericRangeTerm
		//    | RealTerm | IntegerTerm
		//          | ListTerm
		//     |BooleanLiteral | LiteralorReferenceTerm
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		////    OldRecordTerm |
		//    RecordTerm | ComponentClassifierTerm
		//    | ComputedTerm | StringTerm |NumericRangeTerm
		//    | RealTerm | IntegerTerm
		//          | ListTerm
		//     |BooleanLiteral | LiteralorReferenceTerm
		public Alternatives getAlternatives() { return cAlternatives; }
		
		////    OldRecordTerm |
		//    RecordTerm
		public RuleCall getRecordTermParserRuleCall_0() { return cRecordTermParserRuleCall_0; }
		
		//ComponentClassifierTerm
		public RuleCall getComponentClassifierTermParserRuleCall_1() { return cComponentClassifierTermParserRuleCall_1; }
		
		//ComputedTerm
		public RuleCall getComputedTermParserRuleCall_2() { return cComputedTermParserRuleCall_2; }
		
		//StringTerm
		public RuleCall getStringTermParserRuleCall_3() { return cStringTermParserRuleCall_3; }
		
		//NumericRangeTerm
		public RuleCall getNumericRangeTermParserRuleCall_4() { return cNumericRangeTermParserRuleCall_4; }
		
		//RealTerm
		public RuleCall getRealTermParserRuleCall_5() { return cRealTermParserRuleCall_5; }
		
		//IntegerTerm
		public RuleCall getIntegerTermParserRuleCall_6() { return cIntegerTermParserRuleCall_6; }
		
		//ListTerm
		public RuleCall getListTermParserRuleCall_7() { return cListTermParserRuleCall_7; }
		
		//BooleanLiteral
		public RuleCall getBooleanLiteralParserRuleCall_8() { return cBooleanLiteralParserRuleCall_8; }
		
		//LiteralorReferenceTerm
		public RuleCall getLiteralorReferenceTermParserRuleCall_9() { return cLiteralorReferenceTermParserRuleCall_9; }
	}
	public class IntegerRangeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.IntegerRange");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cLowerBoundAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cLowerBoundAlternatives_0_0 = (Alternatives)cLowerBoundAssignment_0.eContents().get(0);
		private final RuleCall cLowerBoundIntegerTermParserRuleCall_0_0_0 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(0);
		private final RuleCall cLowerBoundSignedConstantParserRuleCall_0_0_1 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(1);
		private final RuleCall cLowerBoundConstantValueParserRuleCall_0_0_2 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(2);
		private final Keyword cFullStopFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cUpperBoundAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Alternatives cUpperBoundAlternatives_2_0 = (Alternatives)cUpperBoundAssignment_2.eContents().get(0);
		private final RuleCall cUpperBoundIntegerTermParserRuleCall_2_0_0 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(0);
		private final RuleCall cUpperBoundSignedConstantParserRuleCall_2_0_1 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(1);
		private final RuleCall cUpperBoundConstantValueParserRuleCall_2_0_2 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(2);
		
		//IntegerRange returns aadl2::NumericRange:
		//    lowerBound=(IntegerTerm | SignedConstant | ConstantValue )
		//    '..' upperBound=(IntegerTerm | SignedConstant | ConstantValue )
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//lowerBound=(IntegerTerm | SignedConstant | ConstantValue )
		//'..' upperBound=(IntegerTerm | SignedConstant | ConstantValue )
		public Group getGroup() { return cGroup; }
		
		//lowerBound=(IntegerTerm | SignedConstant | ConstantValue )
		public Assignment getLowerBoundAssignment_0() { return cLowerBoundAssignment_0; }
		
		//(IntegerTerm | SignedConstant | ConstantValue )
		public Alternatives getLowerBoundAlternatives_0_0() { return cLowerBoundAlternatives_0_0; }
		
		//IntegerTerm
		public RuleCall getLowerBoundIntegerTermParserRuleCall_0_0_0() { return cLowerBoundIntegerTermParserRuleCall_0_0_0; }
		
		//SignedConstant
		public RuleCall getLowerBoundSignedConstantParserRuleCall_0_0_1() { return cLowerBoundSignedConstantParserRuleCall_0_0_1; }
		
		//ConstantValue
		public RuleCall getLowerBoundConstantValueParserRuleCall_0_0_2() { return cLowerBoundConstantValueParserRuleCall_0_0_2; }
		
		//'..'
		public Keyword getFullStopFullStopKeyword_1() { return cFullStopFullStopKeyword_1; }
		
		//upperBound=(IntegerTerm | SignedConstant | ConstantValue )
		public Assignment getUpperBoundAssignment_2() { return cUpperBoundAssignment_2; }
		
		//(IntegerTerm | SignedConstant | ConstantValue )
		public Alternatives getUpperBoundAlternatives_2_0() { return cUpperBoundAlternatives_2_0; }
		
		//IntegerTerm
		public RuleCall getUpperBoundIntegerTermParserRuleCall_2_0_0() { return cUpperBoundIntegerTermParserRuleCall_2_0_0; }
		
		//SignedConstant
		public RuleCall getUpperBoundSignedConstantParserRuleCall_2_0_1() { return cUpperBoundSignedConstantParserRuleCall_2_0_1; }
		
		//ConstantValue
		public RuleCall getUpperBoundConstantValueParserRuleCall_2_0_2() { return cUpperBoundConstantValueParserRuleCall_2_0_2; }
	}
	public class RealRangeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RealRange");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cLowerBoundAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cLowerBoundAlternatives_0_0 = (Alternatives)cLowerBoundAssignment_0.eContents().get(0);
		private final RuleCall cLowerBoundRealTermParserRuleCall_0_0_0 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(0);
		private final RuleCall cLowerBoundSignedConstantParserRuleCall_0_0_1 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(1);
		private final RuleCall cLowerBoundConstantValueParserRuleCall_0_0_2 = (RuleCall)cLowerBoundAlternatives_0_0.eContents().get(2);
		private final Keyword cFullStopFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cUpperBoundAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Alternatives cUpperBoundAlternatives_2_0 = (Alternatives)cUpperBoundAssignment_2.eContents().get(0);
		private final RuleCall cUpperBoundRealTermParserRuleCall_2_0_0 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(0);
		private final RuleCall cUpperBoundSignedConstantParserRuleCall_2_0_1 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(1);
		private final RuleCall cUpperBoundConstantValueParserRuleCall_2_0_2 = (RuleCall)cUpperBoundAlternatives_2_0.eContents().get(2);
		
		//RealRange returns aadl2::NumericRange:
		//    lowerBound=(RealTerm | SignedConstant | ConstantValue )
		//    '..' upperBound=(RealTerm | SignedConstant | ConstantValue )
		//    ;
		@Override public ParserRule getRule() { return rule; }
		
		//lowerBound=(RealTerm | SignedConstant | ConstantValue )
		//'..' upperBound=(RealTerm | SignedConstant | ConstantValue )
		public Group getGroup() { return cGroup; }
		
		//lowerBound=(RealTerm | SignedConstant | ConstantValue )
		public Assignment getLowerBoundAssignment_0() { return cLowerBoundAssignment_0; }
		
		//(RealTerm | SignedConstant | ConstantValue )
		public Alternatives getLowerBoundAlternatives_0_0() { return cLowerBoundAlternatives_0_0; }
		
		//RealTerm
		public RuleCall getLowerBoundRealTermParserRuleCall_0_0_0() { return cLowerBoundRealTermParserRuleCall_0_0_0; }
		
		//SignedConstant
		public RuleCall getLowerBoundSignedConstantParserRuleCall_0_0_1() { return cLowerBoundSignedConstantParserRuleCall_0_0_1; }
		
		//ConstantValue
		public RuleCall getLowerBoundConstantValueParserRuleCall_0_0_2() { return cLowerBoundConstantValueParserRuleCall_0_0_2; }
		
		//'..'
		public Keyword getFullStopFullStopKeyword_1() { return cFullStopFullStopKeyword_1; }
		
		//upperBound=(RealTerm | SignedConstant | ConstantValue )
		public Assignment getUpperBoundAssignment_2() { return cUpperBoundAssignment_2; }
		
		//(RealTerm | SignedConstant | ConstantValue )
		public Alternatives getUpperBoundAlternatives_2_0() { return cUpperBoundAlternatives_2_0; }
		
		//RealTerm
		public RuleCall getUpperBoundRealTermParserRuleCall_2_0_0() { return cUpperBoundRealTermParserRuleCall_2_0_0; }
		
		//SignedConstant
		public RuleCall getUpperBoundSignedConstantParserRuleCall_2_0_1() { return cUpperBoundSignedConstantParserRuleCall_2_0_1; }
		
		//ConstantValue
		public RuleCall getUpperBoundConstantValueParserRuleCall_2_0_2() { return cUpperBoundConstantValueParserRuleCall_2_0_2; }
	}
	public class CoreKeyWordElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.CoreKeyWord");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cAbstractKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cAccessKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cAnnexKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cAppliesKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final Keyword cBindingKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
		private final Keyword cBusKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
		private final Keyword cCallsKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
		private final Keyword cClassifierKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
		private final Keyword cConnectionsKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
		private final Keyword cConstantKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
		private final Keyword cDataKeyword_10 = (Keyword)cAlternatives.eContents().get(10);
		private final Keyword cDeviceKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
		private final Keyword cEndKeyword_12 = (Keyword)cAlternatives.eContents().get(12);
		private final Keyword cEnumerationKeyword_13 = (Keyword)cAlternatives.eContents().get(13);
		private final Keyword cEventKeyword_14 = (Keyword)cAlternatives.eContents().get(14);
		private final Keyword cExtendsKeyword_15 = (Keyword)cAlternatives.eContents().get(15);
		private final Keyword cFeatureKeyword_16 = (Keyword)cAlternatives.eContents().get(16);
		private final Keyword cFeaturesKeyword_17 = (Keyword)cAlternatives.eContents().get(17);
		private final Keyword cFlowKeyword_18 = (Keyword)cAlternatives.eContents().get(18);
		private final Keyword cFlowsKeyword_19 = (Keyword)cAlternatives.eContents().get(19);
		private final Keyword cGroupKeyword_20 = (Keyword)cAlternatives.eContents().get(20);
		private final Keyword cImplementationKeyword_21 = (Keyword)cAlternatives.eContents().get(21);
		private final Keyword cInKeyword_22 = (Keyword)cAlternatives.eContents().get(22);
		private final Keyword cInheritKeyword_23 = (Keyword)cAlternatives.eContents().get(23);
		private final Keyword cInitialKeyword_24 = (Keyword)cAlternatives.eContents().get(24);
		private final Keyword cInternalKeyword_25 = (Keyword)cAlternatives.eContents().get(25);
		private final Keyword cInverseKeyword_26 = (Keyword)cAlternatives.eContents().get(26);
		private final Keyword cIsKeyword_27 = (Keyword)cAlternatives.eContents().get(27);
		private final Keyword cListKeyword_28 = (Keyword)cAlternatives.eContents().get(28);
		private final Keyword cMemoryKeyword_29 = (Keyword)cAlternatives.eContents().get(29);
		private final Keyword cModeKeyword_30 = (Keyword)cAlternatives.eContents().get(30);
		private final Keyword cModesKeyword_31 = (Keyword)cAlternatives.eContents().get(31);
		private final Keyword cNoneKeyword_32 = (Keyword)cAlternatives.eContents().get(32);
		private final Keyword cOfKeyword_33 = (Keyword)cAlternatives.eContents().get(33);
		private final Keyword cOutKeyword_34 = (Keyword)cAlternatives.eContents().get(34);
		private final Keyword cPackageKeyword_35 = (Keyword)cAlternatives.eContents().get(35);
		private final Keyword cParameterKeyword_36 = (Keyword)cAlternatives.eContents().get(36);
		private final Keyword cPathKeyword_37 = (Keyword)cAlternatives.eContents().get(37);
		private final Keyword cPortKeyword_38 = (Keyword)cAlternatives.eContents().get(38);
		private final Keyword cPrivateKeyword_39 = (Keyword)cAlternatives.eContents().get(39);
		private final Keyword cProcessKeyword_40 = (Keyword)cAlternatives.eContents().get(40);
		private final Keyword cProcessorKeyword_41 = (Keyword)cAlternatives.eContents().get(41);
		private final Keyword cPrototypeKeyword_42 = (Keyword)cAlternatives.eContents().get(42);
		private final Keyword cPrototypesKeyword_43 = (Keyword)cAlternatives.eContents().get(43);
		private final Keyword cProvidesKeyword_44 = (Keyword)cAlternatives.eContents().get(44);
		private final Keyword cPublicKeyword_45 = (Keyword)cAlternatives.eContents().get(45);
		private final Keyword cRefinedKeyword_46 = (Keyword)cAlternatives.eContents().get(46);
		private final Keyword cRenamesKeyword_47 = (Keyword)cAlternatives.eContents().get(47);
		private final Keyword cRequiresKeyword_48 = (Keyword)cAlternatives.eContents().get(48);
		private final Keyword cSelfKeyword_49 = (Keyword)cAlternatives.eContents().get(49);
		private final Keyword cSetKeyword_50 = (Keyword)cAlternatives.eContents().get(50);
		private final Keyword cSinkKeyword_51 = (Keyword)cAlternatives.eContents().get(51);
		private final Keyword cSourceKeyword_52 = (Keyword)cAlternatives.eContents().get(52);
		private final Keyword cSubcomponentsKeyword_53 = (Keyword)cAlternatives.eContents().get(53);
		private final Keyword cSubprogramKeyword_54 = (Keyword)cAlternatives.eContents().get(54);
		private final Keyword cSystemKeyword_55 = (Keyword)cAlternatives.eContents().get(55);
		private final Keyword cThreadKeyword_56 = (Keyword)cAlternatives.eContents().get(56);
		private final Keyword cTypeKeyword_57 = (Keyword)cAlternatives.eContents().get(57);
		private final Keyword cToKeyword_58 = (Keyword)cAlternatives.eContents().get(58);
		private final Keyword cVirtualKeyword_59 = (Keyword)cAlternatives.eContents().get(59);
		private final Keyword cWithKeyword_60 = (Keyword)cAlternatives.eContents().get(60);
		
		//CoreKeyWord :
		//    'abstract' |'access' | 'annex'| 'applies' | 'binding'
		//    | 'bus' |'calls' |'classifier'| 'connections' |'constant'| 'data'| 'device'
		//    |'end' |'enumeration'|'event'|'extends'
		//    | 'feature'|'features'|'flow'|'flows'
		//    | 'group'|'implementation'|'in'|'inherit'|'initial'| 'internal' |'inverse'|'is'|'list'
		//    | 'memory'|'mode'|'modes'|'none'|'of'|'out'|'package'|'parameter'|'path'| 'port'|'private'
		//    | 'process'  | 'processor' | 'prototype'
		//    |'prototypes'|'provides'|'public'
		//    |'refined'|'renames'|'requires'|'self'|'set'|'sink'|'source'
		//    |'subcomponents'| 'subprogram'|'system'| 'thread'|'type'|'to'|'virtual'|'with'
		////// properties grammar    |'properties'|'property'|'delta'|'false'|'not'| 'and'|'or'|'range'|'record'|'reference'|'true'|'units'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'abstract' |'access' | 'annex'| 'applies' | 'binding'
		//| 'bus' |'calls' |'classifier'| 'connections' |'constant'| 'data'| 'device'
		//|'end' |'enumeration'|'event'|'extends'
		//| 'feature'|'features'|'flow'|'flows'
		//| 'group'|'implementation'|'in'|'inherit'|'initial'| 'internal' |'inverse'|'is'|'list'
		//| 'memory'|'mode'|'modes'|'none'|'of'|'out'|'package'|'parameter'|'path'| 'port'|'private'
		//| 'process'  | 'processor' | 'prototype'
		//|'prototypes'|'provides'|'public'
		//|'refined'|'renames'|'requires'|'self'|'set'|'sink'|'source'
		//|'subcomponents'| 'subprogram'|'system'| 'thread'|'type'|'to'|'virtual'|'with'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'abstract'
		public Keyword getAbstractKeyword_0() { return cAbstractKeyword_0; }
		
		//'access'
		public Keyword getAccessKeyword_1() { return cAccessKeyword_1; }
		
		//'annex'
		public Keyword getAnnexKeyword_2() { return cAnnexKeyword_2; }
		
		//'applies'
		public Keyword getAppliesKeyword_3() { return cAppliesKeyword_3; }
		
		//'binding'
		public Keyword getBindingKeyword_4() { return cBindingKeyword_4; }
		
		//'bus'
		public Keyword getBusKeyword_5() { return cBusKeyword_5; }
		
		//'calls'
		public Keyword getCallsKeyword_6() { return cCallsKeyword_6; }
		
		//'classifier'
		public Keyword getClassifierKeyword_7() { return cClassifierKeyword_7; }
		
		//'connections'
		public Keyword getConnectionsKeyword_8() { return cConnectionsKeyword_8; }
		
		//'constant'
		public Keyword getConstantKeyword_9() { return cConstantKeyword_9; }
		
		//'data'
		public Keyword getDataKeyword_10() { return cDataKeyword_10; }
		
		//'device'
		public Keyword getDeviceKeyword_11() { return cDeviceKeyword_11; }
		
		//'end'
		public Keyword getEndKeyword_12() { return cEndKeyword_12; }
		
		//'enumeration'
		public Keyword getEnumerationKeyword_13() { return cEnumerationKeyword_13; }
		
		//'event'
		public Keyword getEventKeyword_14() { return cEventKeyword_14; }
		
		//'extends'
		public Keyword getExtendsKeyword_15() { return cExtendsKeyword_15; }
		
		//'feature'
		public Keyword getFeatureKeyword_16() { return cFeatureKeyword_16; }
		
		//'features'
		public Keyword getFeaturesKeyword_17() { return cFeaturesKeyword_17; }
		
		//'flow'
		public Keyword getFlowKeyword_18() { return cFlowKeyword_18; }
		
		//'flows'
		public Keyword getFlowsKeyword_19() { return cFlowsKeyword_19; }
		
		//'group'
		public Keyword getGroupKeyword_20() { return cGroupKeyword_20; }
		
		//'implementation'
		public Keyword getImplementationKeyword_21() { return cImplementationKeyword_21; }
		
		//'in'
		public Keyword getInKeyword_22() { return cInKeyword_22; }
		
		//'inherit'
		public Keyword getInheritKeyword_23() { return cInheritKeyword_23; }
		
		//'initial'
		public Keyword getInitialKeyword_24() { return cInitialKeyword_24; }
		
		//'internal'
		public Keyword getInternalKeyword_25() { return cInternalKeyword_25; }
		
		//'inverse'
		public Keyword getInverseKeyword_26() { return cInverseKeyword_26; }
		
		//'is'
		public Keyword getIsKeyword_27() { return cIsKeyword_27; }
		
		//'list'
		public Keyword getListKeyword_28() { return cListKeyword_28; }
		
		//'memory'
		public Keyword getMemoryKeyword_29() { return cMemoryKeyword_29; }
		
		//'mode'
		public Keyword getModeKeyword_30() { return cModeKeyword_30; }
		
		//'modes'
		public Keyword getModesKeyword_31() { return cModesKeyword_31; }
		
		//'none'
		public Keyword getNoneKeyword_32() { return cNoneKeyword_32; }
		
		//'of'
		public Keyword getOfKeyword_33() { return cOfKeyword_33; }
		
		//'out'
		public Keyword getOutKeyword_34() { return cOutKeyword_34; }
		
		//'package'
		public Keyword getPackageKeyword_35() { return cPackageKeyword_35; }
		
		//'parameter'
		public Keyword getParameterKeyword_36() { return cParameterKeyword_36; }
		
		//'path'
		public Keyword getPathKeyword_37() { return cPathKeyword_37; }
		
		//'port'
		public Keyword getPortKeyword_38() { return cPortKeyword_38; }
		
		//'private'
		public Keyword getPrivateKeyword_39() { return cPrivateKeyword_39; }
		
		//'process'
		public Keyword getProcessKeyword_40() { return cProcessKeyword_40; }
		
		//'processor'
		public Keyword getProcessorKeyword_41() { return cProcessorKeyword_41; }
		
		//'prototype'
		public Keyword getPrototypeKeyword_42() { return cPrototypeKeyword_42; }
		
		//'prototypes'
		public Keyword getPrototypesKeyword_43() { return cPrototypesKeyword_43; }
		
		//'provides'
		public Keyword getProvidesKeyword_44() { return cProvidesKeyword_44; }
		
		//'public'
		public Keyword getPublicKeyword_45() { return cPublicKeyword_45; }
		
		//'refined'
		public Keyword getRefinedKeyword_46() { return cRefinedKeyword_46; }
		
		//'renames'
		public Keyword getRenamesKeyword_47() { return cRenamesKeyword_47; }
		
		//'requires'
		public Keyword getRequiresKeyword_48() { return cRequiresKeyword_48; }
		
		//'self'
		public Keyword getSelfKeyword_49() { return cSelfKeyword_49; }
		
		//'set'
		public Keyword getSetKeyword_50() { return cSetKeyword_50; }
		
		//'sink'
		public Keyword getSinkKeyword_51() { return cSinkKeyword_51; }
		
		//'source'
		public Keyword getSourceKeyword_52() { return cSourceKeyword_52; }
		
		//'subcomponents'
		public Keyword getSubcomponentsKeyword_53() { return cSubcomponentsKeyword_53; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_54() { return cSubprogramKeyword_54; }
		
		//'system'
		public Keyword getSystemKeyword_55() { return cSystemKeyword_55; }
		
		//'thread'
		public Keyword getThreadKeyword_56() { return cThreadKeyword_56; }
		
		//'type'
		public Keyword getTypeKeyword_57() { return cTypeKeyword_57; }
		
		//'to'
		public Keyword getToKeyword_58() { return cToKeyword_58; }
		
		//'virtual'
		public Keyword getVirtualKeyword_59() { return cVirtualKeyword_59; }
		
		//'with'
		public Keyword getWithKeyword_60() { return cWithKeyword_60; }
	}
	public class PNAMEElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.PNAME");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cColonColonKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//// package anme
		//PNAME:
		//    ID ('::' ID)*;
		@Override public ParserRule getRule() { return rule; }
		
		//ID ('::' ID)*
		public Group getGroup() { return cGroup; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
		
		//('::' ID)*
		public Group getGroup_1() { return cGroup_1; }
		
		//'::'
		public Keyword getColonColonKeyword_1_0() { return cColonColonKeyword_1_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
	}
	public class FQCREFElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FQCREF");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_0_0 = (RuleCall)cGroup_0.eContents().get(0);
		private final Keyword cColonColonKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cFullStopKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_2_1 = (RuleCall)cGroup_2.eContents().get(1);
		
		//// fully qualified classifier name (always includes package name
		//FQCREF:
		//    (ID '::')+ ID ('.' ID)?;
		@Override public ParserRule getRule() { return rule; }
		
		//(ID '::')+ ID ('.' ID)?
		public Group getGroup() { return cGroup; }
		
		//(ID '::')+
		public Group getGroup_0() { return cGroup_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_0_0() { return cIDTerminalRuleCall_0_0; }
		
		//'::'
		public Keyword getColonColonKeyword_0_1() { return cColonColonKeyword_0_1; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
		
		//('.' ID)?
		public Group getGroup_2() { return cGroup_2; }
		
		//'.'
		public Keyword getFullStopKeyword_2_0() { return cFullStopKeyword_2_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_2_1() { return cIDTerminalRuleCall_2_1; }
	}
	public class INAMEElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.INAME");
		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
		
		//// implementation name (used by value converter)
		//INAME:
		//    ID;
		@Override public ParserRule getRule() { return rule; }
		
		//ID
		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
	}
	public class FULLINAMEElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FULLINAME");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		
		//// implementation name (used by value converter)
		//FULLINAME:
		//    ID '.' ID;
		@Override public ParserRule getRule() { return rule; }
		
		//ID '.' ID
		public Group getGroup() { return cGroup; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
		
		//'.'
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_2() { return cIDTerminalRuleCall_2; }
	}
	public class REFINEDNAMEElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.REFINEDNAME");
		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
		
		//// name of refined entity. Used to set name field by value converter
		//REFINEDNAME:
		//    ID;
		@Override public ParserRule getRule() { return rule; }
		
		//ID
		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
	}
	public class AbstractImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.AbstractImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAbstractKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//AbstractImplementationKeywords:
		//    'abstract' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'abstract' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'abstract'
		public Keyword getAbstractKeyword_0() { return cAbstractKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class BusAccessKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusAccessKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cBusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cAccessKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//BusAccessKeywords:
		//    'bus' 'access'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'bus' 'access'
		public Group getGroup() { return cGroup; }
		
		//'bus'
		public Keyword getBusKeyword_0() { return cBusKeyword_0; }
		
		//'access'
		public Keyword getAccessKeyword_1() { return cAccessKeyword_1; }
	}
	public class BusImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.BusImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cBusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//BusImplementationKeywords:
		//    'bus' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'bus' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'bus'
		public Keyword getBusKeyword_0() { return cBusKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class DataAccessKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataAccessKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDataKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cAccessKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//DataAccessKeywords:
		//    'data' 'access'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'data' 'access'
		public Group getGroup() { return cGroup; }
		
		//'data'
		public Keyword getDataKeyword_0() { return cDataKeyword_0; }
		
		//'access'
		public Keyword getAccessKeyword_1() { return cAccessKeyword_1; }
	}
	public class DataImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDataKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//DataImplementationKeywords:
		//    'data' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'data' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'data'
		public Keyword getDataKeyword_0() { return cDataKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class DataPortKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DataPortKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDataKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cPortKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//DataPortKeywords:
		//    'data' 'port'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'data' 'port'
		public Group getGroup() { return cGroup; }
		
		//'data'
		public Keyword getDataKeyword_0() { return cDataKeyword_0; }
		
		//'port'
		public Keyword getPortKeyword_1() { return cPortKeyword_1; }
	}
	public class DeviceImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.DeviceImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDeviceKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//DeviceImplementationKeywords:
		//    'device' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'device' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'device'
		public Keyword getDeviceKeyword_0() { return cDeviceKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class EndToEndFlowKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EndToEndFlowKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEndKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cToKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cEndKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cFlowKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//EndToEndFlowKeywords:
		//    'end' 'to' 'end' 'flow'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'end' 'to' 'end' 'flow'
		public Group getGroup() { return cGroup; }
		
		//'end'
		public Keyword getEndKeyword_0() { return cEndKeyword_0; }
		
		//'to'
		public Keyword getToKeyword_1() { return cToKeyword_1; }
		
		//'end'
		public Keyword getEndKeyword_2() { return cEndKeyword_2; }
		
		//'flow'
		public Keyword getFlowKeyword_3() { return cFlowKeyword_3; }
	}
	public class EventDataKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventDataKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEventKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//EventDataKeywords:
		//    'event' 'data'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'event' 'data'
		public Group getGroup() { return cGroup; }
		
		//'event'
		public Keyword getEventKeyword_0() { return cEventKeyword_0; }
		
		//'data'
		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
	}
	public class EventDataPortKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventDataPortKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEventKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cPortKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//EventDataPortKeywords:
		//    'event' 'data' 'port'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'event' 'data' 'port'
		public Group getGroup() { return cGroup; }
		
		//'event'
		public Keyword getEventKeyword_0() { return cEventKeyword_0; }
		
		//'data'
		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
		
		//'port'
		public Keyword getPortKeyword_2() { return cPortKeyword_2; }
	}
	public class EventPortKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.EventPortKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cEventKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cPortKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//EventPortKeywords:
		//    'event' 'port'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'event' 'port'
		public Group getGroup() { return cGroup; }
		
		//'event'
		public Keyword getEventKeyword_0() { return cEventKeyword_0; }
		
		//'port'
		public Keyword getPortKeyword_1() { return cPortKeyword_1; }
	}
	public class FeatureGroupKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FeatureGroupKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFeatureKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//FeatureGroupKeywords:
		//    'feature' 'group'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'feature' 'group'
		public Group getGroup() { return cGroup; }
		
		//'feature'
		public Keyword getFeatureKeyword_0() { return cFeatureKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
	}
	public class InternalFeaturesKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.InternalFeaturesKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cInternalKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFeaturesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//InternalFeaturesKeywords:
		//    'internal' 'features'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'internal' 'features'
		public Group getGroup() { return cGroup; }
		
		//'internal'
		public Keyword getInternalKeyword_0() { return cInternalKeyword_0; }
		
		//'features'
		public Keyword getFeaturesKeyword_1() { return cFeaturesKeyword_1; }
	}
	public class InverseOfKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.InverseOfKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cInverseKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//InverseOfKeywords:
		//    'inverse' 'of'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'inverse' 'of'
		public Group getGroup() { return cGroup; }
		
		//'inverse'
		public Keyword getInverseKeyword_0() { return cInverseKeyword_0; }
		
		//'of'
		public Keyword getOfKeyword_1() { return cOfKeyword_1; }
	}
	public class ListOfKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ListOfKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cListKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ListOfKeywords:
		//    'list' 'of'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'list' 'of'
		public Group getGroup() { return cGroup; }
		
		//'list'
		public Keyword getListKeyword_0() { return cListKeyword_0; }
		
		//'of'
		public Keyword getOfKeyword_1() { return cOfKeyword_1; }
	}
	public class MemoryImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.MemoryImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cMemoryKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//MemoryImplementationKeywords:
		//    'memory' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'memory' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'memory'
		public Keyword getMemoryKeyword_0() { return cMemoryKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class ProcessImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ProcessImplementationKeywords:
		//    'process' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'process' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'process'
		public Keyword getProcessKeyword_0() { return cProcessKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class ProcessorFeaturesKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorFeaturesKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cFeaturesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ProcessorFeaturesKeywords:
		//    'processor' 'features'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'processor' 'features'
		public Group getGroup() { return cGroup; }
		
		//'processor'
		public Keyword getProcessorKeyword_0() { return cProcessorKeyword_0; }
		
		//'features'
		public Keyword getFeaturesKeyword_1() { return cFeaturesKeyword_1; }
	}
	public class ProcessorImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ProcessorImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cProcessorKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ProcessorImplementationKeywords:
		//    'processor' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'processor' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'processor'
		public Keyword getProcessorKeyword_0() { return cProcessorKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class RangeOfKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RangeOfKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRangeKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//RangeOfKeywords:
		//    'range' 'of'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'range' 'of'
		public Group getGroup() { return cGroup; }
		
		//'range'
		public Keyword getRangeKeyword_0() { return cRangeKeyword_0; }
		
		//'of'
		public Keyword getOfKeyword_1() { return cOfKeyword_1; }
	}
	public class RefinedToKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RefinedToKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRefinedKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cToKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//RefinedToKeywords:
		//    'refined' 'to'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'refined' 'to'
		public Group getGroup() { return cGroup; }
		
		//'refined'
		public Keyword getRefinedKeyword_0() { return cRefinedKeyword_0; }
		
		//'to'
		public Keyword getToKeyword_1() { return cToKeyword_1; }
	}
	public class RequiresModesKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.RequiresModesKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRequiresKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cModesKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//RequiresModesKeywords:
		//    'requires' 'modes'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'requires' 'modes'
		public Group getGroup() { return cGroup; }
		
		//'requires'
		public Keyword getRequiresKeyword_0() { return cRequiresKeyword_0; }
		
		//'modes'
		public Keyword getModesKeyword_1() { return cModesKeyword_1; }
	}
	public class SubprogramAccessKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramAccessKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cAccessKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//SubprogramAccessKeywords:
		//    'subprogram' 'access'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' 'access'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//'access'
		public Keyword getAccessKeyword_1() { return cAccessKeyword_1; }
	}
	public class SubprogramGroupKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//SubprogramGroupKeywords:
		//    'subprogram' 'group'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' 'group'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
	}
	public class SubprogramGroupAccessKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupAccessKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cAccessKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//SubprogramGroupAccessKeywords:
		//    'subprogram' 'group' 'access'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' 'group' 'access'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
		
		//'access'
		public Keyword getAccessKeyword_2() { return cAccessKeyword_2; }
	}
	public class SubprogramGroupImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramGroupImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cImplementationKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//SubprogramGroupImplementationKeywords:
		//    'subprogram' 'group' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' 'group' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
		
		//'implementation'
		public Keyword getImplementationKeyword_2() { return cImplementationKeyword_2; }
	}
	public class SubprogramImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SubprogramImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSubprogramKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//SubprogramImplementationKeywords:
		//    'subprogram' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'subprogram' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'subprogram'
		public Keyword getSubprogramKeyword_0() { return cSubprogramKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class SystemImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.SystemImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSystemKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//SystemImplementationKeywords:
		//    'system' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'system' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'system'
		public Keyword getSystemKeyword_0() { return cSystemKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class ThreadGroupKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cThreadKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ThreadGroupKeywords:
		//    'thread' 'group'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'thread' 'group'
		public Group getGroup() { return cGroup; }
		
		//'thread'
		public Keyword getThreadKeyword_0() { return cThreadKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
	}
	public class ThreadGroupImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadGroupImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cThreadKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cImplementationKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//ThreadGroupImplementationKeywords:
		//    'thread' 'group' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'thread' 'group' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'thread'
		public Keyword getThreadKeyword_0() { return cThreadKeyword_0; }
		
		//'group'
		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
		
		//'implementation'
		public Keyword getImplementationKeyword_2() { return cImplementationKeyword_2; }
	}
	public class ThreadImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ThreadImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cThreadKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cImplementationKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//ThreadImplementationKeywords:
		//    'thread' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'thread' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'thread'
		public Keyword getThreadKeyword_0() { return cThreadKeyword_0; }
		
		//'implementation'
		public Keyword getImplementationKeyword_1() { return cImplementationKeyword_1; }
	}
	public class VirtualBusKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cVirtualKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cBusKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//VirtualBusKeywords:
		//    'virtual' 'bus'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'virtual' 'bus'
		public Group getGroup() { return cGroup; }
		
		//'virtual'
		public Keyword getVirtualKeyword_0() { return cVirtualKeyword_0; }
		
		//'bus'
		public Keyword getBusKeyword_1() { return cBusKeyword_1; }
	}
	public class VirtualBusImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualBusImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cVirtualKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cBusKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cImplementationKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//VirtualBusImplementationKeywords:
		//    'virtual' 'bus' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'virtual' 'bus' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'virtual'
		public Keyword getVirtualKeyword_0() { return cVirtualKeyword_0; }
		
		//'bus'
		public Keyword getBusKeyword_1() { return cBusKeyword_1; }
		
		//'implementation'
		public Keyword getImplementationKeyword_2() { return cImplementationKeyword_2; }
	}
	public class VirtualProcessorKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cVirtualKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cProcessorKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//VirtualProcessorKeywords:
		//    'virtual' 'processor'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'virtual' 'processor'
		public Group getGroup() { return cGroup; }
		
		//'virtual'
		public Keyword getVirtualKeyword_0() { return cVirtualKeyword_0; }
		
		//'processor'
		public Keyword getProcessorKeyword_1() { return cProcessorKeyword_1; }
	}
	public class VirtualProcessorImplementationKeywordsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.VirtualProcessorImplementationKeywords");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cVirtualKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cProcessorKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cImplementationKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//VirtualProcessorImplementationKeywords:
		//    'virtual' 'processor' 'implementation'
		//;
		@Override public ParserRule getRule() { return rule; }
		
		//'virtual' 'processor' 'implementation'
		public Group getGroup() { return cGroup; }
		
		//'virtual'
		public Keyword getVirtualKeyword_0() { return cVirtualKeyword_0; }
		
		//'processor'
		public Keyword getProcessorKeyword_1() { return cProcessorKeyword_1; }
		
		//'implementation'
		public Keyword getImplementationKeyword_2() { return cImplementationKeyword_2; }
	}
	
	public class FlowKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.FlowKind");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cSourceEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cSourceSourceKeyword_0_0 = (Keyword)cSourceEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cPathEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cPathPathKeyword_1_0 = (Keyword)cPathEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cSinkEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cSinkSinkKeyword_2_0 = (Keyword)cSinkEnumLiteralDeclaration_2.eContents().get(0);
		
		//// ******** Flows
		//enum FlowKind returns aadl2::FlowKind:
		//    source='source' | path='path' | sink='sink';
		public EnumRule getRule() { return rule; }
		
		//source='source' | path='path' | sink='sink'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//source='source'
		public EnumLiteralDeclaration getSourceEnumLiteralDeclaration_0() { return cSourceEnumLiteralDeclaration_0; }
		
		//'source'
		public Keyword getSourceSourceKeyword_0_0() { return cSourceSourceKeyword_0_0; }
		
		//path='path'
		public EnumLiteralDeclaration getPathEnumLiteralDeclaration_1() { return cPathEnumLiteralDeclaration_1; }
		
		//'path'
		public Keyword getPathPathKeyword_1_0() { return cPathPathKeyword_1_0; }
		
		//sink='sink'
		public EnumLiteralDeclaration getSinkEnumLiteralDeclaration_2() { return cSinkEnumLiteralDeclaration_2; }
		
		//'sink'
		public Keyword getSinkSinkKeyword_2_0() { return cSinkSinkKeyword_2_0; }
	}
	
	private final ModelElements pModel;
	private final AadlPackageElements pAadlPackage;
	private final PublicPackageSectionElements pPublicPackageSection;
	private final PrivatePackageSectionElements pPrivatePackageSection;
	private final PackageRenameElements pPackageRename;
	private final RenameAllElements pRenameAll;
	private final FGTRenameElements pFGTRename;
	private final CTRenameElements pCTRename;
	private final TypeExtensionElements pTypeExtension;
	private final ImplementationExtensionElements pImplementationExtension;
	private final GroupExtensionElements pGroupExtension;
	private final ComponentCategoryElements pComponentCategory;
	private final ClassifierElements pClassifier;
	private final ComponentTypeElements pComponentType;
	private final AbstractTypeElements pAbstractType;
	private final SystemTypeElements pSystemType;
	private final ProcessTypeElements pProcessType;
	private final ThreadGroupTypeElements pThreadGroupType;
	private final ThreadTypeElements pThreadType;
	private final SubprogramTypeElements pSubprogramType;
	private final SubprogramGroupTypeElements pSubprogramGroupType;
	private final ProcessorTypeElements pProcessorType;
	private final DeviceTypeElements pDeviceType;
	private final MemoryTypeElements pMemoryType;
	private final BusTypeElements pBusType;
	private final VirtualBusTypeElements pVirtualBusType;
	private final VirtualProcessorTypeElements pVirtualProcessorType;
	private final DataTypeElements pDataType;
	private final ComponentImplementationElements pComponentImplementation;
	private final RealizationElements pRealization;
	private final AbstractImplementationElements pAbstractImplementation;
	private final SystemImplementationElements pSystemImplementation;
	private final ProcessImplementationElements pProcessImplementation;
	private final ThreadGroupImplementationElements pThreadGroupImplementation;
	private final ThreadImplementationElements pThreadImplementation;
	private final SubprogramImplementationElements pSubprogramImplementation;
	private final SubprogramGroupImplementationElements pSubprogramGroupImplementation;
	private final ProcessorImplementationElements pProcessorImplementation;
	private final VirtualProcessorImplementationElements pVirtualProcessorImplementation;
	private final DeviceImplementationElements pDeviceImplementation;
	private final MemoryImplementationElements pMemoryImplementation;
	private final BusImplementationElements pBusImplementation;
	private final VirtualBusImplementationElements pVirtualBusImplementation;
	private final DataImplementationElements pDataImplementation;
	private final SubprogramCallSequenceElements pSubprogramCallSequence;
	private final SubprogramCallElements pSubprogramCall;
	private final PrototypeElements pPrototype;
	private final ComponentPrototypeElements pComponentPrototype;
	private final AbstractPrototypeElements pAbstractPrototype;
	private final BusPrototypeElements pBusPrototype;
	private final DataPrototypeElements pDataPrototype;
	private final DevicePrototypeElements pDevicePrototype;
	private final MemoryPrototypeElements pMemoryPrototype;
	private final ProcessPrototypeElements pProcessPrototype;
	private final ProcessorPrototypeElements pProcessorPrototype;
	private final SubprogramPrototypeElements pSubprogramPrototype;
	private final SubprogramGroupPrototypeElements pSubprogramGroupPrototype;
	private final SystemPrototypeElements pSystemPrototype;
	private final ThreadPrototypeElements pThreadPrototype;
	private final ThreadGroupPrototypeElements pThreadGroupPrototype;
	private final VirtualBusPrototypeElements pVirtualBusPrototype;
	private final VirtualProcessorPrototypeElements pVirtualProcessorPrototype;
	private final FeatureGroupPrototypeElements pFeatureGroupPrototype;
	private final FeaturePrototypeElements pFeaturePrototype;
	private final PrototypeBindingElements pPrototypeBinding;
	private final FeatureGroupPrototypeBindingElements pFeatureGroupPrototypeBinding;
	private final FeatureGroupPrototypeActualElements pFeatureGroupPrototypeActual;
	private final FeaturePrototypeBindingElements pFeaturePrototypeBinding;
	private final PortSpecificationElements pPortSpecification;
	private final AccessSpecificationElements pAccessSpecification;
	private final FeaturePrototypeReferenceElements pFeaturePrototypeReference;
	private final ComponentPrototypeBindingElements pComponentPrototypeBinding;
	private final ComponentReferenceElements pComponentReference;
	private final AbstractSubcomponentElements pAbstractSubcomponent;
	private final SystemSubcomponentElements pSystemSubcomponent;
	private final ProcessSubcomponentElements pProcessSubcomponent;
	private final ThreadGroupSubcomponentElements pThreadGroupSubcomponent;
	private final ThreadSubcomponentElements pThreadSubcomponent;
	private final SubprogramSubcomponentElements pSubprogramSubcomponent;
	private final SubprogramGroupSubcomponentElements pSubprogramGroupSubcomponent;
	private final ProcessorSubcomponentElements pProcessorSubcomponent;
	private final VirtualProcessorSubcomponentElements pVirtualProcessorSubcomponent;
	private final DeviceSubcomponentElements pDeviceSubcomponent;
	private final MemorySubcomponentElements pMemorySubcomponent;
	private final BusSubcomponentElements pBusSubcomponent;
	private final VirtualBusSubcomponentElements pVirtualBusSubcomponent;
	private final DataSubcomponentElements pDataSubcomponent;
	private final ArrayDimensionElements pArrayDimension;
	private final ArraySizeElements pArraySize;
	private final ComponentImplementationReferenceElements pComponentImplementationReference;
	private final DataPortElements pDataPort;
	private final EventDataPortElements pEventDataPort;
	private final EventPortElements pEventPort;
	private final FeatureGroupElements pFeatureGroup;
	private final ParameterElements pParameter;
	private final SubprogramAccessElements pSubprogramAccess;
	private final SubprogramGroupAccessElements pSubprogramGroupAccess;
	private final BusAccessElements pBusAccess;
	private final DataAccessElements pDataAccess;
	private final AbstractFeatureElements pAbstractFeature;
	private final PortDirectionElements pPortDirection;
	private final InOutDirectionElements pInOutDirection;
	private final AccessDirectionElements pAccessDirection;
	private final PortCategoryElements pPortCategory;
	private final FeatureGroupTypeElements pFeatureGroupType;
	private final EventSourceElements pEventSource;
	private final EventDataSourceElements pEventDataSource;
	private final PortProxyElements pPortProxy;
	private final SubprogramProxyElements pSubprogramProxy;
	private final NestedConnectedElementElements pNestedConnectedElement;
	private final ConnectedElementChainElements pConnectedElementChain;
	private final ConnectedElementElements pConnectedElement;
	private final ProcessorPortElements pProcessorPort;
	private final ProcessorSubprogramElements pProcessorSubprogram;
	private final InternalEventElements pInternalEvent;
	private final AbstractConnectionEndElements pAbstractConnectionEnd;
	private final ProcessorConnectionEndElements pProcessorConnectionEnd;
	private final AccessConnectionEndElements pAccessConnectionEnd;
	private final PortConnectionElements pPortConnection;
	private final AccessConnectionElements pAccessConnection;
	private final FeatureGroupConnectionElements pFeatureGroupConnection;
	private final FeatureConnectionElements pFeatureConnection;
	private final ParameterConnectionElements pParameterConnection;
	private final AccessCategoryElements pAccessCategory;
	private final FlowKindElements eFlowKind;
	private final FlowSourceElements pFlowSource;
	private final FlowSinkElements pFlowSink;
	private final FlowPathElements pFlowPath;
	private final FlowSpecificationElements pFlowSpecification;
	private final FlowSourceSpecElements pFlowSourceSpec;
	private final FlowSinkSpecElements pFlowSinkSpec;
	private final FlowPathSpecElements pFlowPathSpec;
	private final FlowEndElements pFlowEnd;
	private final FlowSpecRefinementElements pFlowSpecRefinement;
	private final FlowImplementationElements pFlowImplementation;
	private final FlowSourceImplElements pFlowSourceImpl;
	private final FlowSinkImplElements pFlowSinkImpl;
	private final FlowPathImplElements pFlowPathImpl;
	private final EndToEndFlowElements pEndToEndFlow;
	private final SubcomponentFlowElements pSubcomponentFlow;
	private final ConnectionFlowElements pConnectionFlow;
	private final ETESubcomponentFlowElements pETESubcomponentFlow;
	private final ETEConnectionFlowElements pETEConnectionFlow;
	private final ModeElements pMode;
	private final ModeTransitionElements pModeTransition;
	private final TriggerElements pTrigger;
	private final ModeRefElements pModeRef;
	private final AnnexLibraryElements pAnnexLibrary;
	private final DefaultAnnexLibraryElements pDefaultAnnexLibrary;
	private final AnnexSubclauseElements pAnnexSubclause;
	private final DefaultAnnexSubclauseElements pDefaultAnnexSubclause;
	private final PropertySetElements pPropertySet;
	private final PropertyTypeElements pPropertyType;
	private final UnnamedPropertyTypeElements pUnnamedPropertyType;
	private final BooleanTypeElements pBooleanType;
	private final UnnamedBooleanTypeElements pUnnamedBooleanType;
	private final StringTypeElements pStringType;
	private final UnnamedStringTypeElements pUnnamedStringType;
	private final EnumerationTypeElements pEnumerationType;
	private final UnnamedEnumerationTypeElements pUnnamedEnumerationType;
	private final EnumerationLiteralElements pEnumerationLiteral;
	private final UnitsTypeElements pUnitsType;
	private final UnnamedUnitsTypeElements pUnnamedUnitsType;
	private final UnitLiteralElements pUnitLiteral;
	private final UnitLiteralConversionElements pUnitLiteralConversion;
	private final RealTypeElements pRealType;
	private final UnnamedRealTypeElements pUnnamedRealType;
	private final IntegerTypeElements pIntegerType;
	private final UnnamedIntegerTypeElements pUnnamedIntegerType;
	private final RangeTypeElements pRangeType;
	private final UnnamedRangeTypeElements pUnnamedRangeType;
	private final ClassifierTypeElements pClassifierType;
	private final UnnamedClassifierTypeElements pUnnamedClassifierType;
	private final QMReferenceElements pQMReference;
	private final QCReferenceElements pQCReference;
	private final ReferenceTypeElements pReferenceType;
	private final UnnamedReferenceTypeElements pUnnamedReferenceType;
	private final RecordTypeElements pRecordType;
	private final UnnamedRecordTypeElements pUnnamedRecordType;
	private final RecordFieldElements pRecordField;
	private final PropertyDefinitionElements pPropertyDefinition;
	private final AllReferenceElements pAllReference;
	private final ListTypeElements pListType;
	private final PropertyOwnerElements pPropertyOwner;
	private final PropertyConstantElements pPropertyConstant;
	private final NumberValueElements pNumberValue;
	private final RealLitElements pRealLit;
	private final IntegerLitElements pIntegerLit;
	private final ConstantPropertyExpressionElements pConstantPropertyExpression;
	private final IntegerRangeElements pIntegerRange;
	private final RealRangeElements pRealRange;
	private final CoreKeyWordElements pCoreKeyWord;
	private final PNAMEElements pPNAME;
	private final FQCREFElements pFQCREF;
	private final INAMEElements pINAME;
	private final FULLINAMEElements pFULLINAME;
	private final REFINEDNAMEElements pREFINEDNAME;
	private final AbstractImplementationKeywordsElements pAbstractImplementationKeywords;
	private final BusAccessKeywordsElements pBusAccessKeywords;
	private final BusImplementationKeywordsElements pBusImplementationKeywords;
	private final DataAccessKeywordsElements pDataAccessKeywords;
	private final DataImplementationKeywordsElements pDataImplementationKeywords;
	private final DataPortKeywordsElements pDataPortKeywords;
	private final DeviceImplementationKeywordsElements pDeviceImplementationKeywords;
	private final EndToEndFlowKeywordsElements pEndToEndFlowKeywords;
	private final EventDataKeywordsElements pEventDataKeywords;
	private final EventDataPortKeywordsElements pEventDataPortKeywords;
	private final EventPortKeywordsElements pEventPortKeywords;
	private final FeatureGroupKeywordsElements pFeatureGroupKeywords;
	private final InternalFeaturesKeywordsElements pInternalFeaturesKeywords;
	private final InverseOfKeywordsElements pInverseOfKeywords;
	private final ListOfKeywordsElements pListOfKeywords;
	private final MemoryImplementationKeywordsElements pMemoryImplementationKeywords;
	private final ProcessImplementationKeywordsElements pProcessImplementationKeywords;
	private final ProcessorFeaturesKeywordsElements pProcessorFeaturesKeywords;
	private final ProcessorImplementationKeywordsElements pProcessorImplementationKeywords;
	private final RangeOfKeywordsElements pRangeOfKeywords;
	private final RefinedToKeywordsElements pRefinedToKeywords;
	private final RequiresModesKeywordsElements pRequiresModesKeywords;
	private final SubprogramAccessKeywordsElements pSubprogramAccessKeywords;
	private final SubprogramGroupKeywordsElements pSubprogramGroupKeywords;
	private final SubprogramGroupAccessKeywordsElements pSubprogramGroupAccessKeywords;
	private final SubprogramGroupImplementationKeywordsElements pSubprogramGroupImplementationKeywords;
	private final SubprogramImplementationKeywordsElements pSubprogramImplementationKeywords;
	private final SystemImplementationKeywordsElements pSystemImplementationKeywords;
	private final ThreadGroupKeywordsElements pThreadGroupKeywords;
	private final ThreadGroupImplementationKeywordsElements pThreadGroupImplementationKeywords;
	private final ThreadImplementationKeywordsElements pThreadImplementationKeywords;
	private final VirtualBusKeywordsElements pVirtualBusKeywords;
	private final VirtualBusImplementationKeywordsElements pVirtualBusImplementationKeywords;
	private final VirtualProcessorKeywordsElements pVirtualProcessorKeywords;
	private final VirtualProcessorImplementationKeywordsElements pVirtualProcessorImplementationKeywords;
	private final TerminalRule tANNEXTEXT;
	
	private final Grammar grammar;
	
	private final PropertiesGrammarAccess gaProperties;

	@Inject
	public Aadl2GrammarAccess(GrammarProvider grammarProvider,
			PropertiesGrammarAccess gaProperties) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaProperties = gaProperties;
		this.pModel = new ModelElements();
		this.pAadlPackage = new AadlPackageElements();
		this.pPublicPackageSection = new PublicPackageSectionElements();
		this.pPrivatePackageSection = new PrivatePackageSectionElements();
		this.pPackageRename = new PackageRenameElements();
		this.pRenameAll = new RenameAllElements();
		this.pFGTRename = new FGTRenameElements();
		this.pCTRename = new CTRenameElements();
		this.pTypeExtension = new TypeExtensionElements();
		this.pImplementationExtension = new ImplementationExtensionElements();
		this.pGroupExtension = new GroupExtensionElements();
		this.pComponentCategory = new ComponentCategoryElements();
		this.pClassifier = new ClassifierElements();
		this.pComponentType = new ComponentTypeElements();
		this.pAbstractType = new AbstractTypeElements();
		this.pSystemType = new SystemTypeElements();
		this.pProcessType = new ProcessTypeElements();
		this.pThreadGroupType = new ThreadGroupTypeElements();
		this.pThreadType = new ThreadTypeElements();
		this.pSubprogramType = new SubprogramTypeElements();
		this.pSubprogramGroupType = new SubprogramGroupTypeElements();
		this.pProcessorType = new ProcessorTypeElements();
		this.pDeviceType = new DeviceTypeElements();
		this.pMemoryType = new MemoryTypeElements();
		this.pBusType = new BusTypeElements();
		this.pVirtualBusType = new VirtualBusTypeElements();
		this.pVirtualProcessorType = new VirtualProcessorTypeElements();
		this.pDataType = new DataTypeElements();
		this.pComponentImplementation = new ComponentImplementationElements();
		this.pRealization = new RealizationElements();
		this.pAbstractImplementation = new AbstractImplementationElements();
		this.pSystemImplementation = new SystemImplementationElements();
		this.pProcessImplementation = new ProcessImplementationElements();
		this.pThreadGroupImplementation = new ThreadGroupImplementationElements();
		this.pThreadImplementation = new ThreadImplementationElements();
		this.pSubprogramImplementation = new SubprogramImplementationElements();
		this.pSubprogramGroupImplementation = new SubprogramGroupImplementationElements();
		this.pProcessorImplementation = new ProcessorImplementationElements();
		this.pVirtualProcessorImplementation = new VirtualProcessorImplementationElements();
		this.pDeviceImplementation = new DeviceImplementationElements();
		this.pMemoryImplementation = new MemoryImplementationElements();
		this.pBusImplementation = new BusImplementationElements();
		this.pVirtualBusImplementation = new VirtualBusImplementationElements();
		this.pDataImplementation = new DataImplementationElements();
		this.pSubprogramCallSequence = new SubprogramCallSequenceElements();
		this.pSubprogramCall = new SubprogramCallElements();
		this.pPrototype = new PrototypeElements();
		this.pComponentPrototype = new ComponentPrototypeElements();
		this.pAbstractPrototype = new AbstractPrototypeElements();
		this.pBusPrototype = new BusPrototypeElements();
		this.pDataPrototype = new DataPrototypeElements();
		this.pDevicePrototype = new DevicePrototypeElements();
		this.pMemoryPrototype = new MemoryPrototypeElements();
		this.pProcessPrototype = new ProcessPrototypeElements();
		this.pProcessorPrototype = new ProcessorPrototypeElements();
		this.pSubprogramPrototype = new SubprogramPrototypeElements();
		this.pSubprogramGroupPrototype = new SubprogramGroupPrototypeElements();
		this.pSystemPrototype = new SystemPrototypeElements();
		this.pThreadPrototype = new ThreadPrototypeElements();
		this.pThreadGroupPrototype = new ThreadGroupPrototypeElements();
		this.pVirtualBusPrototype = new VirtualBusPrototypeElements();
		this.pVirtualProcessorPrototype = new VirtualProcessorPrototypeElements();
		this.pFeatureGroupPrototype = new FeatureGroupPrototypeElements();
		this.pFeaturePrototype = new FeaturePrototypeElements();
		this.pPrototypeBinding = new PrototypeBindingElements();
		this.pFeatureGroupPrototypeBinding = new FeatureGroupPrototypeBindingElements();
		this.pFeatureGroupPrototypeActual = new FeatureGroupPrototypeActualElements();
		this.pFeaturePrototypeBinding = new FeaturePrototypeBindingElements();
		this.pPortSpecification = new PortSpecificationElements();
		this.pAccessSpecification = new AccessSpecificationElements();
		this.pFeaturePrototypeReference = new FeaturePrototypeReferenceElements();
		this.pComponentPrototypeBinding = new ComponentPrototypeBindingElements();
		this.pComponentReference = new ComponentReferenceElements();
		this.pAbstractSubcomponent = new AbstractSubcomponentElements();
		this.pSystemSubcomponent = new SystemSubcomponentElements();
		this.pProcessSubcomponent = new ProcessSubcomponentElements();
		this.pThreadGroupSubcomponent = new ThreadGroupSubcomponentElements();
		this.pThreadSubcomponent = new ThreadSubcomponentElements();
		this.pSubprogramSubcomponent = new SubprogramSubcomponentElements();
		this.pSubprogramGroupSubcomponent = new SubprogramGroupSubcomponentElements();
		this.pProcessorSubcomponent = new ProcessorSubcomponentElements();
		this.pVirtualProcessorSubcomponent = new VirtualProcessorSubcomponentElements();
		this.pDeviceSubcomponent = new DeviceSubcomponentElements();
		this.pMemorySubcomponent = new MemorySubcomponentElements();
		this.pBusSubcomponent = new BusSubcomponentElements();
		this.pVirtualBusSubcomponent = new VirtualBusSubcomponentElements();
		this.pDataSubcomponent = new DataSubcomponentElements();
		this.pArrayDimension = new ArrayDimensionElements();
		this.pArraySize = new ArraySizeElements();
		this.pComponentImplementationReference = new ComponentImplementationReferenceElements();
		this.pDataPort = new DataPortElements();
		this.pEventDataPort = new EventDataPortElements();
		this.pEventPort = new EventPortElements();
		this.pFeatureGroup = new FeatureGroupElements();
		this.pParameter = new ParameterElements();
		this.pSubprogramAccess = new SubprogramAccessElements();
		this.pSubprogramGroupAccess = new SubprogramGroupAccessElements();
		this.pBusAccess = new BusAccessElements();
		this.pDataAccess = new DataAccessElements();
		this.pAbstractFeature = new AbstractFeatureElements();
		this.pPortDirection = new PortDirectionElements();
		this.pInOutDirection = new InOutDirectionElements();
		this.pAccessDirection = new AccessDirectionElements();
		this.pPortCategory = new PortCategoryElements();
		this.pFeatureGroupType = new FeatureGroupTypeElements();
		this.pEventSource = new EventSourceElements();
		this.pEventDataSource = new EventDataSourceElements();
		this.pPortProxy = new PortProxyElements();
		this.pSubprogramProxy = new SubprogramProxyElements();
		this.pNestedConnectedElement = new NestedConnectedElementElements();
		this.pConnectedElementChain = new ConnectedElementChainElements();
		this.pConnectedElement = new ConnectedElementElements();
		this.pProcessorPort = new ProcessorPortElements();
		this.pProcessorSubprogram = new ProcessorSubprogramElements();
		this.pInternalEvent = new InternalEventElements();
		this.pAbstractConnectionEnd = new AbstractConnectionEndElements();
		this.pProcessorConnectionEnd = new ProcessorConnectionEndElements();
		this.pAccessConnectionEnd = new AccessConnectionEndElements();
		this.pPortConnection = new PortConnectionElements();
		this.pAccessConnection = new AccessConnectionElements();
		this.pFeatureGroupConnection = new FeatureGroupConnectionElements();
		this.pFeatureConnection = new FeatureConnectionElements();
		this.pParameterConnection = new ParameterConnectionElements();
		this.pAccessCategory = new AccessCategoryElements();
		this.eFlowKind = new FlowKindElements();
		this.pFlowSource = new FlowSourceElements();
		this.pFlowSink = new FlowSinkElements();
		this.pFlowPath = new FlowPathElements();
		this.pFlowSpecification = new FlowSpecificationElements();
		this.pFlowSourceSpec = new FlowSourceSpecElements();
		this.pFlowSinkSpec = new FlowSinkSpecElements();
		this.pFlowPathSpec = new FlowPathSpecElements();
		this.pFlowEnd = new FlowEndElements();
		this.pFlowSpecRefinement = new FlowSpecRefinementElements();
		this.pFlowImplementation = new FlowImplementationElements();
		this.pFlowSourceImpl = new FlowSourceImplElements();
		this.pFlowSinkImpl = new FlowSinkImplElements();
		this.pFlowPathImpl = new FlowPathImplElements();
		this.pEndToEndFlow = new EndToEndFlowElements();
		this.pSubcomponentFlow = new SubcomponentFlowElements();
		this.pConnectionFlow = new ConnectionFlowElements();
		this.pETESubcomponentFlow = new ETESubcomponentFlowElements();
		this.pETEConnectionFlow = new ETEConnectionFlowElements();
		this.pMode = new ModeElements();
		this.pModeTransition = new ModeTransitionElements();
		this.pTrigger = new TriggerElements();
		this.pModeRef = new ModeRefElements();
		this.pAnnexLibrary = new AnnexLibraryElements();
		this.pDefaultAnnexLibrary = new DefaultAnnexLibraryElements();
		this.pAnnexSubclause = new AnnexSubclauseElements();
		this.pDefaultAnnexSubclause = new DefaultAnnexSubclauseElements();
		this.pPropertySet = new PropertySetElements();
		this.pPropertyType = new PropertyTypeElements();
		this.pUnnamedPropertyType = new UnnamedPropertyTypeElements();
		this.pBooleanType = new BooleanTypeElements();
		this.pUnnamedBooleanType = new UnnamedBooleanTypeElements();
		this.pStringType = new StringTypeElements();
		this.pUnnamedStringType = new UnnamedStringTypeElements();
		this.pEnumerationType = new EnumerationTypeElements();
		this.pUnnamedEnumerationType = new UnnamedEnumerationTypeElements();
		this.pEnumerationLiteral = new EnumerationLiteralElements();
		this.pUnitsType = new UnitsTypeElements();
		this.pUnnamedUnitsType = new UnnamedUnitsTypeElements();
		this.pUnitLiteral = new UnitLiteralElements();
		this.pUnitLiteralConversion = new UnitLiteralConversionElements();
		this.pRealType = new RealTypeElements();
		this.pUnnamedRealType = new UnnamedRealTypeElements();
		this.pIntegerType = new IntegerTypeElements();
		this.pUnnamedIntegerType = new UnnamedIntegerTypeElements();
		this.pRangeType = new RangeTypeElements();
		this.pUnnamedRangeType = new UnnamedRangeTypeElements();
		this.pClassifierType = new ClassifierTypeElements();
		this.pUnnamedClassifierType = new UnnamedClassifierTypeElements();
		this.pQMReference = new QMReferenceElements();
		this.pQCReference = new QCReferenceElements();
		this.pReferenceType = new ReferenceTypeElements();
		this.pUnnamedReferenceType = new UnnamedReferenceTypeElements();
		this.pRecordType = new RecordTypeElements();
		this.pUnnamedRecordType = new UnnamedRecordTypeElements();
		this.pRecordField = new RecordFieldElements();
		this.pPropertyDefinition = new PropertyDefinitionElements();
		this.pAllReference = new AllReferenceElements();
		this.pListType = new ListTypeElements();
		this.pPropertyOwner = new PropertyOwnerElements();
		this.pPropertyConstant = new PropertyConstantElements();
		this.pNumberValue = new NumberValueElements();
		this.pRealLit = new RealLitElements();
		this.pIntegerLit = new IntegerLitElements();
		this.pConstantPropertyExpression = new ConstantPropertyExpressionElements();
		this.pIntegerRange = new IntegerRangeElements();
		this.pRealRange = new RealRangeElements();
		this.pCoreKeyWord = new CoreKeyWordElements();
		this.pPNAME = new PNAMEElements();
		this.pFQCREF = new FQCREFElements();
		this.pINAME = new INAMEElements();
		this.pFULLINAME = new FULLINAMEElements();
		this.pREFINEDNAME = new REFINEDNAMEElements();
		this.pAbstractImplementationKeywords = new AbstractImplementationKeywordsElements();
		this.pBusAccessKeywords = new BusAccessKeywordsElements();
		this.pBusImplementationKeywords = new BusImplementationKeywordsElements();
		this.pDataAccessKeywords = new DataAccessKeywordsElements();
		this.pDataImplementationKeywords = new DataImplementationKeywordsElements();
		this.pDataPortKeywords = new DataPortKeywordsElements();
		this.pDeviceImplementationKeywords = new DeviceImplementationKeywordsElements();
		this.pEndToEndFlowKeywords = new EndToEndFlowKeywordsElements();
		this.pEventDataKeywords = new EventDataKeywordsElements();
		this.pEventDataPortKeywords = new EventDataPortKeywordsElements();
		this.pEventPortKeywords = new EventPortKeywordsElements();
		this.pFeatureGroupKeywords = new FeatureGroupKeywordsElements();
		this.pInternalFeaturesKeywords = new InternalFeaturesKeywordsElements();
		this.pInverseOfKeywords = new InverseOfKeywordsElements();
		this.pListOfKeywords = new ListOfKeywordsElements();
		this.pMemoryImplementationKeywords = new MemoryImplementationKeywordsElements();
		this.pProcessImplementationKeywords = new ProcessImplementationKeywordsElements();
		this.pProcessorFeaturesKeywords = new ProcessorFeaturesKeywordsElements();
		this.pProcessorImplementationKeywords = new ProcessorImplementationKeywordsElements();
		this.pRangeOfKeywords = new RangeOfKeywordsElements();
		this.pRefinedToKeywords = new RefinedToKeywordsElements();
		this.pRequiresModesKeywords = new RequiresModesKeywordsElements();
		this.pSubprogramAccessKeywords = new SubprogramAccessKeywordsElements();
		this.pSubprogramGroupKeywords = new SubprogramGroupKeywordsElements();
		this.pSubprogramGroupAccessKeywords = new SubprogramGroupAccessKeywordsElements();
		this.pSubprogramGroupImplementationKeywords = new SubprogramGroupImplementationKeywordsElements();
		this.pSubprogramImplementationKeywords = new SubprogramImplementationKeywordsElements();
		this.pSystemImplementationKeywords = new SystemImplementationKeywordsElements();
		this.pThreadGroupKeywords = new ThreadGroupKeywordsElements();
		this.pThreadGroupImplementationKeywords = new ThreadGroupImplementationKeywordsElements();
		this.pThreadImplementationKeywords = new ThreadImplementationKeywordsElements();
		this.pVirtualBusKeywords = new VirtualBusKeywordsElements();
		this.pVirtualBusImplementationKeywords = new VirtualBusImplementationKeywordsElements();
		this.pVirtualProcessorKeywords = new VirtualProcessorKeywordsElements();
		this.pVirtualProcessorImplementationKeywords = new VirtualProcessorImplementationKeywordsElements();
		this.tANNEXTEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.osate.xtext.aadl2.Aadl2.ANNEXTEXT");
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.osate.xtext.aadl2.Aadl2".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	
	
	public PropertiesGrammarAccess getPropertiesGrammarAccess() {
		return gaProperties;
	}

	
	////import "http://www.eclipse.org/emf/2002/Ecore" as ecore
	//Model returns aadl2::ModelUnit:
	//    (AadlPackage | PropertySet )?
	//;
	public ModelElements getModelAccess() {
		return pModel;
	}
	
	public ParserRule getModelRule() {
		return getModelAccess().getRule();
	}
	
	//AadlPackage returns aadl2::AadlPackage:
	//    'package' name=PNAME
	//    ((ownedPublicSection=PublicPackageSection
	//    (ownedPrivateSection=PrivatePackageSection)?) |
	//    ownedPrivateSection=PrivatePackageSection)
	//    ('properties'
	//    (((ownedPropertyAssociation+=BasicPropertyAssociation)+ )
	////| (noProperties?='none' ';')
	//    | ('none' ';') )
	//    )?
	//    'end' PNAME ';';
	public AadlPackageElements getAadlPackageAccess() {
		return pAadlPackage;
	}
	
	public ParserRule getAadlPackageRule() {
		return getAadlPackageAccess().getRule();
	}
	
	////ID ('::' ID)* ';';
	//PublicPackageSection returns aadl2::PublicPackageSection:
	//    {aadl2::PublicPackageSection}
	//    'public'
	//    (('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
	//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
	//     | ownedPackageRename+=(PackageRename|RenameAll)
	//     | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
	//    )*
	//    ( ownedClassifier+=Classifier
	//    | ownedAnnexLibrary+=AnnexLibrary
	//        )*
	//    ;
	public PublicPackageSectionElements getPublicPackageSectionAccess() {
		return pPublicPackageSection;
	}
	
	public ParserRule getPublicPackageSectionRule() {
		return getPublicPackageSectionAccess().getRule();
	}
	
	//PrivatePackageSection returns aadl2::PrivatePackageSection:
	//    {aadl2::PrivatePackageSection}
	//    'private'
	//    (('with' (importedUnit+=[aadl2::ModelUnit|PNAME])
	//        (',' importedUnit+=[aadl2::ModelUnit|PNAME])* ';')
	//     | ownedPackageRename+=(PackageRename|RenameAll)
	//     | ownedFeatureGroupTypeRename+=FGTRename | ownedComponentTypeRename+=CTRename
	//    )*
	//   ( ownedClassifier += Classifier
	//    | ownedAnnexLibrary+=AnnexLibrary
	//     )*
	//    ;
	public PrivatePackageSectionElements getPrivatePackageSectionAccess() {
		return pPrivatePackageSection;
	}
	
	public ParserRule getPrivatePackageSectionRule() {
		return getPrivatePackageSectionAccess().getRule();
	}
	
	//PackageRename returns aadl2::PackageRename:
	//    name=ID 'renames' 'package' renamedPackage=[aadl2::AadlPackage|PNAME] ('::' renameAll?='all')?
	//    ';'
	//;
	public PackageRenameElements getPackageRenameAccess() {
		return pPackageRename;
	}
	
	public ParserRule getPackageRenameRule() {
		return getPackageRenameAccess().getRule();
	}
	
	//RenameAll returns aadl2::PackageRename:
	//    'renames' renamedPackage=[aadl2::AadlPackage|PNAME] '::' renameAll?='all'
	//    ';'
	//;
	public RenameAllElements getRenameAllAccess() {
		return pRenameAll;
	}
	
	public ParserRule getRenameAllRule() {
		return getRenameAllAccess().getRule();
	}
	
	//FGTRename returns aadl2::FeatureGroupTypeRename:
	//    (name=ID)? 'renames' FeatureGroupKeywords renamedFeatureGroupType=[aadl2::FeatureGroupType|QCREF]
	//    ';'
	//;
	public FGTRenameElements getFGTRenameAccess() {
		return pFGTRename;
	}
	
	public ParserRule getFGTRenameRule() {
		return getFGTRenameAccess().getRule();
	}
	
	//CTRename returns aadl2::ComponentTypeRename:
	//    (name=ID)? 'renames' category=ComponentCategory renamedComponentType=[aadl2::ComponentType|QCREF]
	//    ';'
	//;
	public CTRenameElements getCTRenameAccess() {
		return pCTRename;
	}
	
	public ParserRule getCTRenameRule() {
		return getCTRenameAccess().getRule();
	}
	
	//TypeExtension returns aadl2::TypeExtension:
	//    'extends' extended=[aadl2::ComponentType|QCREF];
	public TypeExtensionElements getTypeExtensionAccess() {
		return pTypeExtension;
	}
	
	public ParserRule getTypeExtensionRule() {
		return getTypeExtensionAccess().getRule();
	}
	
	//ImplementationExtension returns aadl2::ImplementationExtension:
	//    'extends' extended=[aadl2::ComponentImplementation|QCREF];
	public ImplementationExtensionElements getImplementationExtensionAccess() {
		return pImplementationExtension;
	}
	
	public ParserRule getImplementationExtensionRule() {
		return getImplementationExtensionAccess().getRule();
	}
	
	//GroupExtension returns aadl2::GroupExtension:
	//    'extends' extended=[aadl2::FeatureGroupType|QCREF];
	public GroupExtensionElements getGroupExtensionAccess() {
		return pGroupExtension;
	}
	
	public ParserRule getGroupExtensionRule() {
		return getGroupExtensionAccess().getRule();
	}
	
	//ComponentCategory returns aadl2::ComponentCategory: 'abstract' | 'bus'|'data'
	//    | 'device' | 'memory' | 'process' | 'processor' | 'subprogram'
	//    | 'subprogram' 'group' | 'system' | 'thread' 'group'
	//    | 'thread' | 'virtual' 'bus' | 'virtual' 'processor';
	public ComponentCategoryElements getComponentCategoryAccess() {
		return pComponentCategory;
	}
	
	public ParserRule getComponentCategoryRule() {
		return getComponentCategoryAccess().getRule();
	}
	
	//Classifier returns aadl2::Classifier:
	//    ComponentType | ComponentImplementation | FeatureGroupType
	//;
	public ClassifierElements getClassifierAccess() {
		return pClassifier;
	}
	
	public ParserRule getClassifierRule() {
		return getClassifierAccess().getRule();
	}
	
	//ComponentType returns aadl2::ComponentType:
	//    (AbstractType  | SystemType | VirtualProcessorType
	//        |SubprogramGroupType | DataType
	//        | BusType|         VirtualBusType|MemoryType
	//        | ProcessorType | ProcessType|ThreadGroupType|ThreadType|DeviceType|SubprogramType
	//    )
	//;
	public ComponentTypeElements getComponentTypeAccess() {
		return pComponentType;
	}
	
	public ParserRule getComponentTypeRule() {
		return getComponentTypeAccess().getRule();
	}
	
	//AbstractType returns aadl2::AbstractType:
	//    'abstract' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public AbstractTypeElements getAbstractTypeAccess() {
		return pAbstractType;
	}
	
	public ParserRule getAbstractTypeRule() {
		return getAbstractTypeAccess().getRule();
	}
	
	//SystemType returns aadl2::SystemType:
	//    'system' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('features' (
	//            (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//                | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
	//            | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//            | ownedAbstractFeature+=AbstractFeature
	//            )+
	//            | (noFeatures?='none' ';')
	//     ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public SystemTypeElements getSystemTypeAccess() {
		return pSystemType;
	}
	
	public ParserRule getSystemTypeRule() {
		return getSystemTypeAccess().getRule();
	}
	
	//ProcessType returns aadl2::ProcessType:
	//    'process' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public ProcessTypeElements getProcessTypeAccess() {
		return pProcessType;
	}
	
	public ParserRule getProcessTypeRule() {
		return getProcessTypeAccess().getRule();
	}
	
	//ThreadGroupType returns aadl2::ThreadGroupType:
	//    ThreadGroupKeywords name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public ThreadGroupTypeElements getThreadGroupTypeAccess() {
		return pThreadGroupType;
	}
	
	public ParserRule getThreadGroupTypeRule() {
		return getThreadGroupTypeAccess().getRule();
	}
	
	//ThreadType returns aadl2::ThreadType:
	//    'thread' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public ThreadTypeElements getThreadTypeAccess() {
		return pThreadType;
	}
	
	public ParserRule getThreadTypeRule() {
		return getThreadTypeAccess().getRule();
	}
	
	//SubprogramType returns aadl2::SubprogramType:
	//    'subprogram' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedParameter+=Parameter| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public SubprogramTypeElements getSubprogramTypeAccess() {
		return pSubprogramType;
	}
	
	public ParserRule getSubprogramTypeRule() {
		return getSubprogramTypeAccess().getRule();
	}
	
	//SubprogramGroupType returns aadl2::SubprogramGroupType:
	//    SubprogramGroupKeywords name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedSubprogramAccess+=SubprogramAccess
	//        | ownedFeatureGroup+=FeatureGroup
	//    | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public SubprogramGroupTypeElements getSubprogramGroupTypeAccess() {
		return pSubprogramGroupType;
	}
	
	public ParserRule getSubprogramGroupTypeRule() {
		return getSubprogramGroupTypeAccess().getRule();
	}
	
	//ProcessorType returns aadl2::ProcessorType:
	//    'processor' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public ProcessorTypeElements getProcessorTypeAccess() {
		return pProcessorType;
	}
	
	public ParserRule getProcessorTypeRule() {
		return getProcessorTypeAccess().getRule();
	}
	
	//DeviceType returns aadl2::DeviceType:
	//    'device' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup | ownedBusAccess+=BusAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public DeviceTypeElements getDeviceTypeAccess() {
		return pDeviceType;
	}
	
	public ParserRule getDeviceTypeRule() {
		return getDeviceTypeAccess().getRule();
	}
	
	//MemoryType returns aadl2::MemoryType:
	//    'memory' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
	//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public MemoryTypeElements getMemoryTypeAccess() {
		return pMemoryType;
	}
	
	public ParserRule getMemoryTypeRule() {
		return getMemoryTypeAccess().getRule();
	}
	
	//BusType returns aadl2::BusType:
	//    'bus' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedFeatureGroup+=FeatureGroup |ownedBusAccess+=BusAccess
	//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ ) )?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public BusTypeElements getBusTypeAccess() {
		return pBusType;
	}
	
	public ParserRule getBusTypeRule() {
		return getBusTypeAccess().getRule();
	}
	
	//VirtualBusType returns aadl2::VirtualBusType:
	//    VirtualBusKeywords name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedFeatureGroup+=FeatureGroup
	//    | ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//    | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
	//    )+ ) )?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public VirtualBusTypeElements getVirtualBusTypeAccess() {
		return pVirtualBusType;
	}
	
	public ParserRule getVirtualBusTypeRule() {
		return getVirtualBusTypeAccess().getRule();
	}
	
	//VirtualProcessorType returns aadl2::VirtualProcessorType:
	//    VirtualProcessorKeywords name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//        | ownedFeatureGroup+=FeatureGroup
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature | ownedBusAccess+=BusAccess
	//    )+ ) )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public VirtualProcessorTypeElements getVirtualProcessorTypeAccess() {
		return pVirtualProcessorType;
	}
	
	public ParserRule getVirtualProcessorTypeRule() {
		return getVirtualProcessorTypeAccess().getRule();
	}
	
	//DataType returns aadl2::DataType:
	//    'data' name=ID
	//    (ownedExtension=TypeExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' ((noFeatures?='none' ';')
	//    | (
	//    ownedFeatureGroup+=FeatureGroup| ownedDataAccess+=DataAccess | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    )+ )
	//     )?
	//    ('flows'
	//    ((ownedFlowSpecification+=FlowSpecification)+ | (noFlows?='none' ';')))?
	//    ((derivedModes?=RequiresModesKeywords
	//     ((ownedMode+=Mode)+))
	//    |
	//     ('modes' ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+ | (noModes?='none' ';')))
	//    )?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';'
	//    ;
	public DataTypeElements getDataTypeAccess() {
		return pDataType;
	}
	
	public ParserRule getDataTypeRule() {
		return getDataTypeAccess().getRule();
	}
	
	//// Component Implementations:
	//ComponentImplementation returns aadl2::ComponentImplementation:
	//    (AbstractImplementation | SystemImplementation | ProcessorImplementation| ProcessImplementation|ThreadGroupImplementation|ThreadImplementation|DeviceImplementation|BusImplementation|
	//        VirtualProcessorImplementation| VirtualBusImplementation|MemoryImplementation|SubprogramImplementation|SubprogramGroupImplementation|DataImplementation
	//    )
	//;
	public ComponentImplementationElements getComponentImplementationAccess() {
		return pComponentImplementation;
	}
	
	public ParserRule getComponentImplementationRule() {
		return getComponentImplementationAccess().getRule();
	}
	
	//Realization returns aadl2::Realization:
	//    implemented=[aadl2::ComponentType|ID];
	public RealizationElements getRealizationAccess() {
		return pRealization;
	}
	
	public ParserRule getRealizationRule() {
		return getRealizationAccess().getRule();
	}
	
	//AbstractImplementation returns aadl2::AbstractImplementation:
	//    AbstractImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedSystemSubcomponent+=SystemSubcomponent
	//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//      | ownedThreadSubcomponent+=ThreadSubcomponent | ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent
	//      | ownedProcessSubcomponent+=ProcessSubcomponent
	//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
	//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
	//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
	//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('calls'
	//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
	//    | noCalls?='none' ';'
	//    )
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    | ownedParameterConnection+=ParameterConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public AbstractImplementationElements getAbstractImplementationAccess() {
		return pAbstractImplementation;
	}
	
	public ParserRule getAbstractImplementationRule() {
		return getAbstractImplementationAccess().getRule();
	}
	
	//SystemImplementation returns aadl2::SystemImplementation:
	//    SystemImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ( 'subcomponents'
	//      ((ownedSystemSubcomponent+=SystemSubcomponent
	//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//      | ownedProcessSubcomponent+=ProcessSubcomponent
	//      |ownedProcessorSubcomponent+=ProcessorSubcomponent
	//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
	//      | ownedMemorySubcomponent+=MemorySubcomponent | ownedDeviceSubcomponent+=DeviceSubcomponent
	//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public SystemImplementationElements getSystemImplementationAccess() {
		return pSystemImplementation;
	}
	
	public ParserRule getSystemImplementationRule() {
		return getSystemImplementationAccess().getRule();
	}
	
	//ProcessImplementation returns aadl2::ProcessImplementation:
	//    ProcessImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
	//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public ProcessImplementationElements getProcessImplementationAccess() {
		return pProcessImplementation;
	}
	
	public ParserRule getProcessImplementationRule() {
		return getProcessImplementationAccess().getRule();
	}
	
	//ThreadGroupImplementation returns aadl2::ThreadGroupImplementation:
	//    ThreadGroupImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedThreadGroupSubcomponent+=ThreadGroupSubcomponent | ownedThreadSubcomponent+=ThreadSubcomponent
	//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public ThreadGroupImplementationElements getThreadGroupImplementationAccess() {
		return pThreadGroupImplementation;
	}
	
	public ParserRule getThreadGroupImplementationRule() {
		return getThreadGroupImplementationAccess().getRule();
	}
	
	//ThreadImplementation returns aadl2::ThreadImplementation:
	//    ThreadImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedSubprogramSubcomponent+=SubprogramSubcomponent
	//      |ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('calls'
	//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
	//     | noCalls?='none' ';'
	//    ))?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    | ownedParameterConnection+=ParameterConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public ThreadImplementationElements getThreadImplementationAccess() {
		return pThreadImplementation;
	}
	
	public ParserRule getThreadImplementationRule() {
		return getThreadImplementationAccess().getRule();
	}
	
	//SubprogramImplementation returns aadl2::SubprogramImplementation:
	//    SubprogramImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      |ownedSubprogramSubcomponent+=SubprogramSubcomponent
	//      |ownedDataSubcomponent+=DataSubcomponent)+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('calls'
	//    ((ownedSubprogramCallSequence+=SubprogramCallSequence)+
	//     | noCalls?='none' ';'
	//    ))?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    | ownedParameterConnection+=ParameterConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public SubprogramImplementationElements getSubprogramImplementationAccess() {
		return pSubprogramImplementation;
	}
	
	public ParserRule getSubprogramImplementationRule() {
		return getSubprogramImplementationAccess().getRule();
	}
	
	//SubprogramGroupImplementation returns aadl2::SubprogramGroupImplementation:
	//    SubprogramGroupImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedSubprogramSubcomponent+=SubprogramSubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//    | ownedSubprogramGroupSubcomponent+=SubprogramGroupSubcomponent
	//    | ownedDataSubcomponent+=DataSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    (( ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public SubprogramGroupImplementationElements getSubprogramGroupImplementationAccess() {
		return pSubprogramGroupImplementation;
	}
	
	public ParserRule getSubprogramGroupImplementationRule() {
		return getSubprogramGroupImplementationAccess().getRule();
	}
	
	//ProcessorImplementation returns aadl2::ProcessorImplementation:
	//    ProcessorImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedMemorySubcomponent+=MemorySubcomponent | ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedBusSubcomponent+=BusSubcomponent | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public ProcessorImplementationElements getProcessorImplementationAccess() {
		return pProcessorImplementation;
	}
	
	public ParserRule getProcessorImplementationRule() {
		return getProcessorImplementationAccess().getRule();
	}
	
	//VirtualProcessorImplementation returns aadl2::VirtualProcessorImplementation:
	//    VirtualProcessorImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      | ownedVirtualProcessorSubcomponent+=VirtualProcessorSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public VirtualProcessorImplementationElements getVirtualProcessorImplementationAccess() {
		return pVirtualProcessorImplementation;
	}
	
	public ParserRule getVirtualProcessorImplementationRule() {
		return getVirtualProcessorImplementationAccess().getRule();
	}
	
	//DeviceImplementation returns aadl2::DeviceImplementation:
	//    DeviceImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent | ownedDataSubcomponent+=DataSubcomponent
	//        | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      | ownedBusSubcomponent+=BusSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    (
	//        ProcessorFeaturesKeywords (
	//            ownedPortProxy+= PortProxy
	//            | ownedSubprogramProxy+= SubprogramProxy
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public DeviceImplementationElements getDeviceImplementationAccess() {
		return pDeviceImplementation;
	}
	
	public ParserRule getDeviceImplementationRule() {
		return getDeviceImplementationAccess().getRule();
	}
	
	//MemoryImplementation returns aadl2::MemoryImplementation:
	//    MemoryImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedMemorySubcomponent+=MemorySubcomponent
	//      | ownedBusSubcomponent+=BusSubcomponent
	//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public MemoryImplementationElements getMemoryImplementationAccess() {
		return pMemoryImplementation;
	}
	
	public ParserRule getMemoryImplementationRule() {
		return getMemoryImplementationAccess().getRule();
	}
	
	//BusImplementation returns aadl2::BusImplementation:
	//    BusImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public BusImplementationElements getBusImplementationAccess() {
		return pBusImplementation;
	}
	
	public ParserRule getBusImplementationRule() {
		return getBusImplementationAccess().getRule();
	}
	
	//VirtualBusImplementation returns aadl2::VirtualBusImplementation:
	//    VirtualBusImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedVirtualBusSubcomponent+=VirtualBusSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';'))
	//    )?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    ('connections'
	//    ((ownedPortConnection+=PortConnection | ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public VirtualBusImplementationElements getVirtualBusImplementationAccess() {
		return pVirtualBusImplementation;
	}
	
	public ParserRule getVirtualBusImplementationRule() {
		return getVirtualBusImplementationAccess().getRule();
	}
	
	//DataImplementation returns aadl2::DataImplementation:
	//    {aadl2::DataImplementation}
	//    DataImplementationKeywords
	//    ownedRealization=Realization '.' name=INAME
	//    (ownedExtension=ImplementationExtension )?
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    ('prototypes'
	//        (  (ownedPrototype+=Prototype)+
	//        |(noPrototypes?='none' ';')
	//    ))?
	//    ('subcomponents'
	//      ((ownedAbstractSubcomponent+=AbstractSubcomponent
	//      | ownedDataSubcomponent+=DataSubcomponent | ownedSubprogramSubcomponent+=SubprogramSubcomponent
	//      )+
	//    | (noSubcomponents?='none' ';')))?
	//    (
	//        InternalFeaturesKeywords (
	//            ownedEventSource+= EventSource
	//            | ownedEventDataSource+= EventDataSource
	//        )+
	//    )?
	//    ('connections'
	//    (( ownedAccessConnection+=AccessConnection
	//    |ownedFeatureGroupConnection+=FeatureGroupConnection | ownedFeatureConnection+=FeatureConnection
	//    )+
	//    | (noConnections?='none' ';')))?
	//    ('flows'
	//        ((ownedFlowImplementation+=(FlowImplementation)|ownedEndToEndFlow+=EndToEndFlow)+ |
	//    (noFlows?='none' ';')))?
	//    ('modes'
	//    ((ownedMode+=Mode | ownedModeTransition+=ModeTransition)+
	//    | (noModes?='none' ';')))?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' FULLINAME ';'
	//    ;
	public DataImplementationElements getDataImplementationAccess() {
		return pDataImplementation;
	}
	
	public ParserRule getDataImplementationRule() {
		return getDataImplementationAccess().getRule();
	}
	
	///* subprogram calls */
	//SubprogramCallSequence returns aadl2::SubprogramCallSequence:
	//    name = ID ':' '{'
	//    ( ownedSubprogramCall+=SubprogramCall)+
	//    '}'
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
	//    ';'
	//;
	public SubprogramCallSequenceElements getSubprogramCallSequenceAccess() {
		return pSubprogramCallSequence;
	}
	
	public ParserRule getSubprogramCallSequenceRule() {
		return getSubprogramCallSequenceAccess().getRule();
	}
	
	//SubprogramCall returns aadl2::SubprogramCall:
	//     {aadl2::SubprogramCall}name=ID ':' 'subprogram'
	//        // direct assignment of context does not work because the name <id>.<id> could also refer to a component implementation
	//        // therefore we let the LinkingService figure out what kind of reference we have and set the context as appropriate
	//         //calledSubprogram=[aadl2::CalledSubprogram|QCREF]
	//        (
	//            (context=[aadl2::CallContext|PNAME] '.' calledSubprogram=[aadl2::CalledSubprogram|ID])
	//             | calledSubprogram=[aadl2::CalledSubprogram|PNAME]
	//            | ('processor' '.' calledSubprogram=[aadl2::SubprogramProxy|ID])
	//        )
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';'
	//;
	public SubprogramCallElements getSubprogramCallAccess() {
		return pSubprogramCall;
	}
	
	public ParserRule getSubprogramCallRule() {
		return getSubprogramCallAccess().getRule();
	}
	
	////******* Prototypes
	//Prototype returns aadl2::Prototype:
	//    ComponentPrototype | FeatureGroupPrototype | FeaturePrototype
	//;
	public PrototypeElements getPrototypeAccess() {
		return pPrototype;
	}
	
	public ParserRule getPrototypeRule() {
		return getPrototypeAccess().getRule();
	}
	
	//ComponentPrototype returns aadl2::ComponentPrototype:
	//    AbstractPrototype | BusPrototype | DevicePrototype | MemoryPrototype | ProcessPrototype | ProcessorPrototype |
	//        SubprogramPrototype | SubprogramGroupPrototype | ThreadPrototype | ThreadGroupPrototype | VirtualBusPrototype | VirtualProcessorPrototype |
	//    SystemPrototype | DataPrototype
	//;
	public ComponentPrototypeElements getComponentPrototypeAccess() {
		return pComponentPrototype;
	}
	
	public ParserRule getComponentPrototypeRule() {
		return getComponentPrototypeAccess().getRule();
	}
	
	//AbstractPrototype returns aadl2::AbstractPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'abstract'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public AbstractPrototypeElements getAbstractPrototypeAccess() {
		return pAbstractPrototype;
	}
	
	public ParserRule getAbstractPrototypeRule() {
		return getAbstractPrototypeAccess().getRule();
	}
	
	//BusPrototype returns aadl2::BusPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'bus'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public BusPrototypeElements getBusPrototypeAccess() {
		return pBusPrototype;
	}
	
	public ParserRule getBusPrototypeRule() {
		return getBusPrototypeAccess().getRule();
	}
	
	//DataPrototype returns aadl2::DataPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'data'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public DataPrototypeElements getDataPrototypeAccess() {
		return pDataPrototype;
	}
	
	public ParserRule getDataPrototypeRule() {
		return getDataPrototypeAccess().getRule();
	}
	
	//DevicePrototype returns aadl2::DevicePrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'device'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public DevicePrototypeElements getDevicePrototypeAccess() {
		return pDevicePrototype;
	}
	
	public ParserRule getDevicePrototypeRule() {
		return getDevicePrototypeAccess().getRule();
	}
	
	//MemoryPrototype returns aadl2::MemoryPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'memory'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public MemoryPrototypeElements getMemoryPrototypeAccess() {
		return pMemoryPrototype;
	}
	
	public ParserRule getMemoryPrototypeRule() {
		return getMemoryPrototypeAccess().getRule();
	}
	
	//ProcessPrototype returns aadl2::ProcessPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'process'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public ProcessPrototypeElements getProcessPrototypeAccess() {
		return pProcessPrototype;
	}
	
	public ParserRule getProcessPrototypeRule() {
		return getProcessPrototypeAccess().getRule();
	}
	
	//ProcessorPrototype returns aadl2::ProcessorPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'processor'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public ProcessorPrototypeElements getProcessorPrototypeAccess() {
		return pProcessorPrototype;
	}
	
	public ParserRule getProcessorPrototypeRule() {
		return getProcessorPrototypeAccess().getRule();
	}
	
	//SubprogramPrototype returns aadl2::SubprogramPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'subprogram'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public SubprogramPrototypeElements getSubprogramPrototypeAccess() {
		return pSubprogramPrototype;
	}
	
	public ParserRule getSubprogramPrototypeRule() {
		return getSubprogramPrototypeAccess().getRule();
	}
	
	//SubprogramGroupPrototype returns aadl2::SubprogramGroupPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    SubprogramGroupKeywords
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public SubprogramGroupPrototypeElements getSubprogramGroupPrototypeAccess() {
		return pSubprogramGroupPrototype;
	}
	
	public ParserRule getSubprogramGroupPrototypeRule() {
		return getSubprogramGroupPrototypeAccess().getRule();
	}
	
	//SystemPrototype returns aadl2::SystemPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'system'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public SystemPrototypeElements getSystemPrototypeAccess() {
		return pSystemPrototype;
	}
	
	public ParserRule getSystemPrototypeRule() {
		return getSystemPrototypeAccess().getRule();
	}
	
	//ThreadPrototype returns aadl2::ThreadPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    'thread'
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public ThreadPrototypeElements getThreadPrototypeAccess() {
		return pThreadPrototype;
	}
	
	public ParserRule getThreadPrototypeRule() {
		return getThreadPrototypeAccess().getRule();
	}
	
	//ThreadGroupPrototype returns aadl2::ThreadGroupPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    ThreadGroupKeywords
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public ThreadGroupPrototypeElements getThreadGroupPrototypeAccess() {
		return pThreadGroupPrototype;
	}
	
	public ParserRule getThreadGroupPrototypeRule() {
		return getThreadGroupPrototypeAccess().getRule();
	}
	
	//VirtualBusPrototype returns aadl2::VirtualBusPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    VirtualBusKeywords
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public VirtualBusPrototypeElements getVirtualBusPrototypeAccess() {
		return pVirtualBusPrototype;
	}
	
	public ParserRule getVirtualBusPrototypeRule() {
		return getVirtualBusPrototypeAccess().getRule();
	}
	
	//VirtualProcessorPrototype returns aadl2::VirtualProcessorPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::ComponentPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    VirtualProcessorKeywords
	//    constrainingClassifier=[aadl2::ComponentClassifier|QCREF]?
	//    (array?='[' ']')?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public VirtualProcessorPrototypeElements getVirtualProcessorPrototypeAccess() {
		return pVirtualProcessorPrototype;
	}
	
	public ParserRule getVirtualProcessorPrototypeRule() {
		return getVirtualProcessorPrototypeAccess().getRule();
	}
	
	//FeatureGroupPrototype returns aadl2::FeatureGroupPrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::FeatureGroupPrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    FeatureGroupKeywords
	//    (constrainingFeatureGroupType=[aadl2::FeatureGroupType|QCREF])?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public FeatureGroupPrototypeElements getFeatureGroupPrototypeAccess() {
		return pFeatureGroupPrototype;
	}
	
	public ParserRule getFeatureGroupPrototypeRule() {
		return getFeatureGroupPrototypeAccess().getRule();
	}
	
	//FeaturePrototype returns aadl2::FeaturePrototype:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::FeaturePrototype|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' | out ?= 'out')? // only in or out not inout
	//    'feature'
	//    (constrainingClassifier=[aadl2::ComponentClassifier|QCREF])?
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    ';'
	//    ;
	public FeaturePrototypeElements getFeaturePrototypeAccess() {
		return pFeaturePrototype;
	}
	
	public ParserRule getFeaturePrototypeRule() {
		return getFeaturePrototypeAccess().getRule();
	}
	
	///*
	// * Prototype Bindings
	// */
	//PrototypeBinding returns aadl2::PrototypeBinding:
	//    FeatureGroupPrototypeBinding | FeaturePrototypeBinding | ComponentPrototypeBinding
	//    ;
	public PrototypeBindingElements getPrototypeBindingAccess() {
		return pPrototypeBinding;
	}
	
	public ParserRule getPrototypeBindingRule() {
		return getPrototypeBindingAccess().getRule();
	}
	
	//FeatureGroupPrototypeBinding returns aadl2::FeatureGroupPrototypeBinding:
	//    formal=[aadl2::Prototype|ID] '=>'  FeatureGroupKeywords
	//    actual=FeatureGroupPrototypeActual
	//    ;
	public FeatureGroupPrototypeBindingElements getFeatureGroupPrototypeBindingAccess() {
		return pFeatureGroupPrototypeBinding;
	}
	
	public ParserRule getFeatureGroupPrototypeBindingRule() {
		return getFeatureGroupPrototypeBindingAccess().getRule();
	}
	
	//FeatureGroupPrototypeActual returns aadl2::FeatureGroupPrototypeActual:
	//    featureType=[aadl2::FeatureType|QCREF]
	//      ('(' binding+=PrototypeBinding (','  binding+=PrototypeBinding)* ')')?
	//    ;
	public FeatureGroupPrototypeActualElements getFeatureGroupPrototypeActualAccess() {
		return pFeatureGroupPrototypeActual;
	}
	
	public ParserRule getFeatureGroupPrototypeActualRule() {
		return getFeatureGroupPrototypeActualAccess().getRule();
	}
	
	//FeaturePrototypeBinding returns aadl2::FeaturePrototypeBinding:
	//    formal=[aadl2::Prototype|ID] '=>'
	//    actual=(PortSpecification|AccessSpecification|FeaturePrototypeReference)
	//    ;
	public FeaturePrototypeBindingElements getFeaturePrototypeBindingAccess() {
		return pFeaturePrototypeBinding;
	}
	
	public ParserRule getFeaturePrototypeBindingRule() {
		return getFeaturePrototypeBindingAccess().getRule();
	}
	
	//PortSpecification returns aadl2::PortSpecification:
	//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
	//    category=PortCategory 'port' (classifier=[aadl2::ComponentClassifier|QCREF])?
	//    ;
	public PortSpecificationElements getPortSpecificationAccess() {
		return pPortSpecification;
	}
	
	public ParserRule getPortSpecificationRule() {
		return getPortSpecificationAccess().getRule();
	}
	
	//AccessSpecification returns aadl2::AccessSpecification:
	//    kind=AccessDirection category=AccessCategory 'access' (classifier=[aadl2::ComponentClassifier|QCREF])?
	//    ;
	public AccessSpecificationElements getAccessSpecificationAccess() {
		return pAccessSpecification;
	}
	
	public ParserRule getAccessSpecificationRule() {
		return getAccessSpecificationAccess().getRule();
	}
	
	//FeaturePrototypeReference returns aadl2::FeaturePrototypeReference:
	//    (in ?= 'in' | out ?= 'out')? 'feature' prototype=[aadl2::FeaturePrototype|ID]
	//    ;
	public FeaturePrototypeReferenceElements getFeaturePrototypeReferenceAccess() {
		return pFeaturePrototypeReference;
	}
	
	public ParserRule getFeaturePrototypeReferenceRule() {
		return getFeaturePrototypeReferenceAccess().getRule();
	}
	
	//ComponentPrototypeBinding returns aadl2::ComponentPrototypeBinding:
	//    formal=[aadl2::Prototype|ID] '=>'
	//    (actual+=ComponentReference |
	//    '(' actual+=ComponentReference (',' actual+=ComponentReference)* ')'
	//    )
	//    ;
	public ComponentPrototypeBindingElements getComponentPrototypeBindingAccess() {
		return pComponentPrototypeBinding;
	}
	
	public ParserRule getComponentPrototypeBindingRule() {
		return getComponentPrototypeBindingAccess().getRule();
	}
	
	//ComponentReference returns aadl2::ComponentPrototypeActual:
	//     category=ComponentCategory subcomponentType=[aadl2::SubcomponentType|QCREF]('(' binding+=PrototypeBinding (',' binding+=PrototypeBinding)*')')?
	//    ;
	public ComponentReferenceElements getComponentReferenceAccess() {
		return pComponentReference;
	}
	
	public ParserRule getComponentReferenceRule() {
		return getComponentReferenceAccess().getRule();
	}
	
	///*
	// * Subcomponents
	// */
	//AbstractSubcomponent returns aadl2::AbstractSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::AbstractSubcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'abstract'
	//    (abstractSubcomponentType=[aadl2::AbstractSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public AbstractSubcomponentElements getAbstractSubcomponentAccess() {
		return pAbstractSubcomponent;
	}
	
	public ParserRule getAbstractSubcomponentRule() {
		return getAbstractSubcomponentAccess().getRule();
	}
	
	//SystemSubcomponent returns aadl2::SystemSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'system'
	//    (systemSubcomponentType=[aadl2::SystemSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public SystemSubcomponentElements getSystemSubcomponentAccess() {
		return pSystemSubcomponent;
	}
	
	public ParserRule getSystemSubcomponentRule() {
		return getSystemSubcomponentAccess().getRule();
	}
	
	//ProcessSubcomponent returns aadl2::ProcessSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'process'
	//    (processSubcomponentType=[aadl2::ProcessSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public ProcessSubcomponentElements getProcessSubcomponentAccess() {
		return pProcessSubcomponent;
	}
	
	public ParserRule getProcessSubcomponentRule() {
		return getProcessSubcomponentAccess().getRule();
	}
	
	//ThreadGroupSubcomponent returns aadl2::ThreadGroupSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    ThreadGroupKeywords
	//    (threadGroupSubcomponentType=[aadl2::ThreadGroupSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public ThreadGroupSubcomponentElements getThreadGroupSubcomponentAccess() {
		return pThreadGroupSubcomponent;
	}
	
	public ParserRule getThreadGroupSubcomponentRule() {
		return getThreadGroupSubcomponentAccess().getRule();
	}
	
	//ThreadSubcomponent returns aadl2::ThreadSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'thread'
	//    (threadSubcomponentType=[aadl2::ThreadSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public ThreadSubcomponentElements getThreadSubcomponentAccess() {
		return pThreadSubcomponent;
	}
	
	public ParserRule getThreadSubcomponentRule() {
		return getThreadSubcomponentAccess().getRule();
	}
	
	//SubprogramSubcomponent returns aadl2::SubprogramSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'subprogram'
	//    (subprogramSubcomponentType=[aadl2::SubprogramSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public SubprogramSubcomponentElements getSubprogramSubcomponentAccess() {
		return pSubprogramSubcomponent;
	}
	
	public ParserRule getSubprogramSubcomponentRule() {
		return getSubprogramSubcomponentAccess().getRule();
	}
	
	//SubprogramGroupSubcomponent returns aadl2::SubprogramGroupSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    SubprogramGroupKeywords
	//    (subprogramGroupSubcomponentType=[aadl2::SubprogramGroupSubcomponentType|QCREF]
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public SubprogramGroupSubcomponentElements getSubprogramGroupSubcomponentAccess() {
		return pSubprogramGroupSubcomponent;
	}
	
	public ParserRule getSubprogramGroupSubcomponentRule() {
		return getSubprogramGroupSubcomponentAccess().getRule();
	}
	
	//ProcessorSubcomponent returns aadl2::ProcessorSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'processor'
	//     (processorSubcomponentType=[aadl2::ProcessorSubcomponentType|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public ProcessorSubcomponentElements getProcessorSubcomponentAccess() {
		return pProcessorSubcomponent;
	}
	
	public ParserRule getProcessorSubcomponentRule() {
		return getProcessorSubcomponentAccess().getRule();
	}
	
	//VirtualProcessorSubcomponent returns aadl2::VirtualProcessorSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    VirtualProcessorKeywords
	//     (virtualProcessorSubcomponentType=[aadl2::VirtualProcessorSubcomponentType|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public VirtualProcessorSubcomponentElements getVirtualProcessorSubcomponentAccess() {
		return pVirtualProcessorSubcomponent;
	}
	
	public ParserRule getVirtualProcessorSubcomponentRule() {
		return getVirtualProcessorSubcomponentAccess().getRule();
	}
	
	//DeviceSubcomponent returns aadl2::DeviceSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'device'
	//     (deviceSubcomponentType=[aadl2::DeviceSubcomponentType|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public DeviceSubcomponentElements getDeviceSubcomponentAccess() {
		return pDeviceSubcomponent;
	}
	
	public ParserRule getDeviceSubcomponentRule() {
		return getDeviceSubcomponentAccess().getRule();
	}
	
	//MemorySubcomponent returns aadl2::MemorySubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'memory'
	//     (memorySubcomponentType=[aadl2::MemorySubcomponentType|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public MemorySubcomponentElements getMemorySubcomponentAccess() {
		return pMemorySubcomponent;
	}
	
	public ParserRule getMemorySubcomponentRule() {
		return getMemorySubcomponentAccess().getRule();
	}
	
	//BusSubcomponent returns aadl2::BusSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'bus'
	//     (busSubcomponentType=[aadl2::BusSubcomponentType|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public BusSubcomponentElements getBusSubcomponentAccess() {
		return pBusSubcomponent;
	}
	
	public ParserRule getBusSubcomponentRule() {
		return getBusSubcomponentAccess().getRule();
	}
	
	//VirtualBusSubcomponent returns aadl2::VirtualBusSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    VirtualBusKeywords
	//     (virtualBusSubcomponentType=[aadl2::VirtualBusClassifier|QCREF]
	//         ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//     )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public VirtualBusSubcomponentElements getVirtualBusSubcomponentAccess() {
		return pVirtualBusSubcomponent;
	}
	
	public ParserRule getVirtualBusSubcomponentRule() {
		return getVirtualBusSubcomponentAccess().getRule();
	}
	
	//DataSubcomponent returns aadl2::DataSubcomponent:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Subcomponent|REFINEDNAME] ':' RefinedToKeywords))
	//    'data'
	//    (dataSubcomponentType=[aadl2::DataSubcomponentType|QCREF]
	//     ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//     ( (arrayDimension+=ArrayDimension )+
	//      ( '(' implementationReference+=ComponentImplementationReference
	//      (',' implementationReference+=ComponentImplementationReference)*
	//      ')' )?
	//     )?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')?
	//    (InModesKeywords '(' (ownedModeBinding+=ModeRef(',' ownedModeBinding+=ModeRef)*
	//         ) ')')?
	//    ';';
	public DataSubcomponentElements getDataSubcomponentAccess() {
		return pDataSubcomponent;
	}
	
	public ParserRule getDataSubcomponentRule() {
		return getDataSubcomponentAccess().getRule();
	}
	
	//ArrayDimension returns aadl2::ArrayDimension:
	//    {aadl2::ArrayDimension}'[' (size=ArraySize)? ']'
	//;
	public ArrayDimensionElements getArrayDimensionAccess() {
		return pArrayDimension;
	}
	
	public ParserRule getArrayDimensionRule() {
		return getArrayDimensionAccess().getRule();
	}
	
	//ArraySize returns aadl2::ArraySize:
	//    size=INTVALUE | sizeProperty=[aadl2::ArraySizeProperty|QPREF]
	//;
	public ArraySizeElements getArraySizeAccess() {
		return pArraySize;
	}
	
	public ParserRule getArraySizeRule() {
		return getArraySizeAccess().getRule();
	}
	
	//ComponentImplementationReference returns aadl2::ComponentImplementationReference:
	//    {aadl2::ComponentImplementationReference}implementation=[aadl2::ComponentImplementation|QCREF]
	//    ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//;
	public ComponentImplementationReferenceElements getComponentImplementationReferenceAccess() {
		return pComponentImplementationReference;
	}
	
	public ParserRule getComponentImplementationReferenceRule() {
		return getComponentImplementationReferenceAccess().getRule();
	}
	
	//// ******** Features
	//DataPort returns aadl2::DataPort:
	//    {aadl2::DataPort}
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
	//    DataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';'
	//    ;
	public DataPortElements getDataPortAccess() {
		return pDataPort;
	}
	
	public ParserRule getDataPortRule() {
		return getDataPortAccess().getRule();
	}
	
	//EventDataPort returns aadl2::EventDataPort:
	//    {aadl2::EventDataPort}
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
	//    EventDataPortKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';'
	//    ;
	public EventDataPortElements getEventDataPortAccess() {
		return pEventDataPort;
	}
	
	public ParserRule getEventDataPortRule() {
		return getEventDataPortAccess().getRule();
	}
	
	//EventPort returns aadl2::EventPort:
	//    {aadl2::EventPort}
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' out ?= 'out'? | out ?= 'out')
	//    EventPortKeywords
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';'
	//    ;
	public EventPortElements getEventPortAccess() {
		return pEventPort;
	}
	
	public ParserRule getEventPortRule() {
		return getEventPortAccess().getRule();
	}
	
	//FeatureGroup returns aadl2::FeatureGroup:
	//        // default is inout if no direction
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' | out ?= 'out')? FeatureGroupKeywords
	//    (( inverse?=InverseOfKeywords)?
	//    featureType=[aadl2::FeatureType|QCREF] )?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=ContainedPropertyAssociation)+ '}')? ';'
	//    ;
	public FeatureGroupElements getFeatureGroupAccess() {
		return pFeatureGroup;
	}
	
	public ParserRule getFeatureGroupRule() {
		return getFeatureGroupAccess().getRule();
	}
	
	//Parameter returns aadl2::Parameter:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' out ?= 'out'? | out ?= 'out') 'parameter' (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//    ;
	public ParameterElements getParameterAccess() {
		return pParameter;
	}
	
	public ParserRule getParameterRule() {
		return getParameterAccess().getRule();
	}
	
	//// AccessCategory not set (is encoded in type)
	//SubprogramAccess returns aadl2::SubprogramAccess:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    kind=AccessDirection
	//    SubprogramAccessKeywords (subprogramFeatureClassifier=[aadl2::SubprogramSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//;
	public SubprogramAccessElements getSubprogramAccessAccess() {
		return pSubprogramAccess;
	}
	
	public ParserRule getSubprogramAccessRule() {
		return getSubprogramAccessAccess().getRule();
	}
	
	//SubprogramGroupAccess returns aadl2::SubprogramGroupAccess:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    kind=AccessDirection
	//    SubprogramGroupAccessKeywords (subprogramGroupFeatureClassifier=[aadl2::SubprogramGroupSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//;
	public SubprogramGroupAccessElements getSubprogramGroupAccessAccess() {
		return pSubprogramGroupAccess;
	}
	
	public ParserRule getSubprogramGroupAccessRule() {
		return getSubprogramGroupAccessAccess().getRule();
	}
	
	//BusAccess returns aadl2::BusAccess:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    kind=AccessDirection (virtual?='virtual')?
	//    BusAccessKeywords (busFeatureClassifier=[aadl2::BusSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//;
	public BusAccessElements getBusAccessAccess() {
		return pBusAccess;
	}
	
	public ParserRule getBusAccessRule() {
		return getBusAccessAccess().getRule();
	}
	
	//DataAccess returns aadl2::DataAccess:
	//    ((name=ID ':' )|
	//    (refined=[aadl2::Feature|REFINEDNAME] ':' RefinedToKeywords))
	//    kind=AccessDirection
	//    DataAccessKeywords (dataFeatureClassifier=[aadl2::DataSubcomponentType|QCREF])?
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//;
	public DataAccessElements getDataAccessAccess() {
		return pDataAccess;
	}
	
	public ParserRule getDataAccessRule() {
		return getDataAccessAccess().getRule();
	}
	
	//AbstractFeature returns aadl2::AbstractFeature:
	//    // default is inout if no direction
	//    ((name=ID ':' )|
	//    (refined=[aadl2::AbstractFeature|REFINEDNAME] ':' RefinedToKeywords))
	//    (in ?= 'in' | out ?= 'out')?
	//    (
	//    'prototype' featurePrototype=[aadl2::FeaturePrototype|QCREF]
	//    | 'feature' abstractFeatureClassifier=[aadl2::AbstractFeatureClassifier|QCREF] | 'feature'
	//    )
	//    (arrayDimension+=ArrayDimension)?
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')? ';'
	//    ;
	public AbstractFeatureElements getAbstractFeatureAccess() {
		return pAbstractFeature;
	}
	
	public ParserRule getAbstractFeatureRule() {
		return getAbstractFeatureAccess().getRule();
	}
	
	//PortDirection returns aadl2::DirectionType: 'in' | 'out' |  'in' 'out';
	public PortDirectionElements getPortDirectionAccess() {
		return pPortDirection;
	}
	
	public ParserRule getPortDirectionRule() {
		return getPortDirectionAccess().getRule();
	}
	
	//InOutDirection returns aadl2::DirectionType: 'in' | 'out' ;
	public InOutDirectionElements getInOutDirectionAccess() {
		return pInOutDirection;
	}
	
	public ParserRule getInOutDirectionRule() {
		return getInOutDirectionAccess().getRule();
	}
	
	//AccessDirection returns aadl2::AccessType: 'requires' | 'provides';
	public AccessDirectionElements getAccessDirectionAccess() {
		return pAccessDirection;
	}
	
	public ParserRule getAccessDirectionRule() {
		return getAccessDirectionAccess().getRule();
	}
	
	//PortCategory returns aadl2::PortCategory: 'data' | 'event' |  ('event' 'data');
	public PortCategoryElements getPortCategoryAccess() {
		return pPortCategory;
	}
	
	public ParserRule getPortCategoryRule() {
		return getPortCategoryAccess().getRule();
	}
	
	//FeatureGroupType returns aadl2::FeatureGroupType:
	//    FeatureGroupKeywords name=ID
	//    (  ownedExtension=GroupExtension
	//      ('(' ownedPrototypeBinding+=PrototypeBinding (','  ownedPrototypeBinding+=PrototypeBinding)* ')')?
	//    )?
	//    ('prototypes' ((noPrototypes?='none' ';') |
	//    (ownedPrototype+=Prototype)+))?
	//    ('features' (// no none for FGT in standard 2.1 (noFeatures?='none' ';') |
	//    (ownedDataPort+=DataPort| ownedEventPort+=EventPort | ownedEventDataPort+=EventDataPort
	//    | ownedFeatureGroup+=FeatureGroup | ownedDataAccess+=DataAccess | ownedBusAccess+=BusAccess
	//    | ownedSubprogramAccess+=SubprogramAccess | ownedSubprogramGroupAccess+=SubprogramGroupAccess
	//    | ownedAbstractFeature+=AbstractFeature
	//    | ownedParameter+=Parameter
	//    )+ ) )?
	//    (InverseOfKeywords inverse=[aadl2::FeatureGroupType|QCREF])?
	//    ('properties'
	//    ((ownedPropertyAssociation+=ContainedPropertyAssociation)+
	//    | (noProperties?='none' ';')))?
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';';
	public FeatureGroupTypeElements getFeatureGroupTypeAccess() {
		return pFeatureGroupType;
	}
	
	public ParserRule getFeatureGroupTypeRule() {
		return getFeatureGroupTypeAccess().getRule();
	}
	
	//// ********* internal features
	//EventSource returns aadl2::EventSource:
	//    name = ID ':' 'event'
	//    (
	//        '{'
	//            (ownedPropertyAssociation+=PropertyAssociation)+
	//        '}'
	//    )?
	//    ';'
	//;
	public EventSourceElements getEventSourceAccess() {
		return pEventSource;
	}
	
	public ParserRule getEventSourceRule() {
		return getEventSourceAccess().getRule();
	}
	
	//EventDataSource returns aadl2::EventDataSource:
	//    name = ID ':' EventDataKeywords
	//    (
	//        dataClassifier = [aadl2::DataClassifier|QCREF]
	//    )?
	//    (
	//        '{'
	//            (ownedPropertyAssociation+=PropertyAssociation)+
	//        '}'
	//    )?
	//    ';'
	//;
	public EventDataSourceElements getEventDataSourceAccess() {
		return pEventDataSource;
	}
	
	public ParserRule getEventDataSourceRule() {
		return getEventDataSourceAccess().getRule();
	}
	
	//PortProxy returns aadl2::PortProxy:
	//    name = ID ':' 'port'
	//    (
	//        dataClassifier = [aadl2::DataClassifier|QCREF]
	//    )?
	//    (
	//        '{'
	//            (ownedPropertyAssociation+=PropertyAssociation)+
	//        '}'
	//    )?
	//    ';'
	//;
	public PortProxyElements getPortProxyAccess() {
		return pPortProxy;
	}
	
	public ParserRule getPortProxyRule() {
		return getPortProxyAccess().getRule();
	}
	
	//SubprogramProxy returns aadl2::SubprogramProxy:
	//    name = ID ':' 'subprogram'
	//    (
	//        subprogramClassifier = [aadl2::SubprogramClassifier|QCREF]
	//    )?
	//    (
	//        '{'
	//            (ownedPropertyAssociation+=PropertyAssociation)+
	//        '}'
	//    )?
	//    ';'
	//;
	public SubprogramProxyElements getSubprogramProxyAccess() {
		return pSubprogramProxy;
	}
	
	public ParserRule getSubprogramProxyRule() {
		return getSubprogramProxyAccess().getRule();
	}
	
	//// ********* connections
	//NestedConnectedElement returns aadl2::ConnectedElement:
	//    ConnectedElement |
	//    context=[aadl2::Context|ID] '.' connectionEnd=[aadl2::ConnectionEnd|ID] '.' next=ConnectedElementChain
	//;
	public NestedConnectedElementElements getNestedConnectedElementAccess() {
		return pNestedConnectedElement;
	}
	
	public ParserRule getNestedConnectedElementRule() {
		return getNestedConnectedElementAccess().getRule();
	}
	
	//ConnectedElementChain returns aadl2::ConnectedElement:
	//    connectionEnd=[aadl2::ConnectionEnd|ID] ('.' next=ConnectedElementChain)?
	//;
	public ConnectedElementChainElements getConnectedElementChainAccess() {
		return pConnectedElementChain;
	}
	
	public ParserRule getConnectedElementChainRule() {
		return getConnectedElementChainAccess().getRule();
	}
	
	//ConnectedElement returns aadl2::ConnectedElement:
	//    (context=[aadl2::Context|ID] '.')?
	//    connectionEnd=[aadl2::ConnectionEnd|ID]
	//;
	public ConnectedElementElements getConnectedElementAccess() {
		return pConnectedElement;
	}
	
	public ParserRule getConnectedElementRule() {
		return getConnectedElementAccess().getRule();
	}
	
	//ProcessorPort returns aadl2::ConnectedElement:
	//    'processor' '.' connectionEnd=[aadl2::PortProxy|ID]
	//;
	public ProcessorPortElements getProcessorPortAccess() {
		return pProcessorPort;
	}
	
	public ParserRule getProcessorPortRule() {
		return getProcessorPortAccess().getRule();
	}
	
	//ProcessorSubprogram returns aadl2::ConnectedElement:
	//    'processor' '.' connectionEnd=[aadl2::SubprogramProxy|ID]
	//;
	public ProcessorSubprogramElements getProcessorSubprogramAccess() {
		return pProcessorSubprogram;
	}
	
	public ParserRule getProcessorSubprogramRule() {
		return getProcessorSubprogramAccess().getRule();
	}
	
	//InternalEvent returns aadl2::ConnectedElement:
	//    'self' '.' connectionEnd=[aadl2::InternalFeature|ID]
	//;
	public InternalEventElements getInternalEventAccess() {
		return pInternalEvent;
	}
	
	public ParserRule getInternalEventRule() {
		return getInternalEventAccess().getRule();
	}
	
	//AbstractConnectionEnd returns aadl2::ConnectedElement:
	//     ConnectedElement | ProcessorPort | InternalEvent
	//;
	public AbstractConnectionEndElements getAbstractConnectionEndAccess() {
		return pAbstractConnectionEnd;
	}
	
	public ParserRule getAbstractConnectionEndRule() {
		return getAbstractConnectionEndAccess().getRule();
	}
	
	//ProcessorConnectionEnd returns aadl2::ConnectedElement:
	//     ConnectedElement | ProcessorPort
	//;
	public ProcessorConnectionEndElements getProcessorConnectionEndAccess() {
		return pProcessorConnectionEnd;
	}
	
	public ParserRule getProcessorConnectionEndRule() {
		return getProcessorConnectionEndAccess().getRule();
	}
	
	//AccessConnectionEnd returns aadl2::ConnectedElement:
	//     ConnectedElement | ProcessorSubprogram
	//;
	public AccessConnectionEndElements getAccessConnectionEndAccess() {
		return pAccessConnectionEnd;
	}
	
	public ParserRule getAccessConnectionEndRule() {
		return getAccessConnectionEndAccess().getRule();
	}
	
	//PortConnection returns aadl2::PortConnection:
	//    ((name=ID ':' 'port'
	//            source=AbstractConnectionEnd
	//    ('->' | bidirectional?='<->')
	//    destination=AbstractConnectionEnd )
	//    |
	//    (refined=[aadl2::PortConnection|REFINEDNAME] ':' RefinedToKeywords 'port'))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
	//    ) ')')?
	//    ';';
	public PortConnectionElements getPortConnectionAccess() {
		return pPortConnection;
	}
	
	public ParserRule getPortConnectionRule() {
		return getPortConnectionAccess().getRule();
	}
	
	//AccessConnection returns aadl2::AccessConnection:
	//    ((name=ID ':'  accessCategory=AccessCategory 'access'
	//            source=AccessConnectionEnd
	//            ('->' | bidirectional?='<->')
	//            destination=AccessConnectionEnd )
	//    |
	//    (refined=[aadl2::AccessConnection|REFINEDNAME] ':' RefinedToKeywords accessCategory=AccessCategory 'access'))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
	//    ) ')')?
	//    ';';
	public AccessConnectionElements getAccessConnectionAccess() {
		return pAccessConnection;
	}
	
	public ParserRule getAccessConnectionRule() {
		return getAccessConnectionAccess().getRule();
	}
	
	//FeatureGroupConnection returns aadl2::FeatureGroupConnection:
	//    ((name=ID ':' FeatureGroupKeywords
	//    source=NestedConnectedElement
	//    ( '->' | bidirectional?='<->')
	//    destination=NestedConnectedElement )
	//    |
	//    (refined=[aadl2::FeatureGroupConnection|REFINEDNAME] ':' RefinedToKeywords FeatureGroupKeywords))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
	//    ) ')')?
	//    ';';
	public FeatureGroupConnectionElements getFeatureGroupConnectionAccess() {
		return pFeatureGroupConnection;
	}
	
	public ParserRule getFeatureGroupConnectionRule() {
		return getFeatureGroupConnectionAccess().getRule();
	}
	
	//FeatureConnection returns aadl2::FeatureConnection:
	//    ((name=ID ':'  'feature'
	//            source=NestedConnectedElement ('->' | bidirectional?='<->') destination=NestedConnectedElement )
	//        |
	//    (refined=[aadl2::FeatureConnection|REFINEDNAME] ':' RefinedToKeywords 'feature'))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
	//    ) ')')?
	//    ';';
	public FeatureConnectionElements getFeatureConnectionAccess() {
		return pFeatureConnection;
	}
	
	public ParserRule getFeatureConnectionRule() {
		return getFeatureConnectionAccess().getRule();
	}
	
	//ParameterConnection returns aadl2::ParameterConnection:
	//    ((name=ID ':' 'parameter'
	//    source=ConnectedElement
	//     '->'
	//    destination=ConnectedElement
	//    )|
	//    (refined=[aadl2::ParameterConnection|REFINEDNAME] ':' RefinedToKeywords 'parameter'))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' (inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])*
	//    ) ')')?
	//    ';';
	public ParameterConnectionElements getParameterConnectionAccess() {
		return pParameterConnection;
	}
	
	public ParserRule getParameterConnectionRule() {
		return getParameterConnectionAccess().getRule();
	}
	
	//AccessCategory returns aadl2::AccessCategory:
	//    'bus' | 'data' | 'subprogram' | 'subprogram' 'group' | 'virtual' 'bus';
	public AccessCategoryElements getAccessCategoryAccess() {
		return pAccessCategory;
	}
	
	public ParserRule getAccessCategoryRule() {
		return getAccessCategoryAccess().getRule();
	}
	
	//// ******** Flows
	//enum FlowKind returns aadl2::FlowKind:
	//    source='source' | path='path' | sink='sink';
	public FlowKindElements getFlowKindAccess() {
		return eFlowKind;
	}
	
	public EnumRule getFlowKindRule() {
		return getFlowKindAccess().getRule();
	}
	
	//FlowSource returns aadl2::FlowKind: 'source';
	public FlowSourceElements getFlowSourceAccess() {
		return pFlowSource;
	}
	
	public ParserRule getFlowSourceRule() {
		return getFlowSourceAccess().getRule();
	}
	
	//FlowSink returns aadl2::FlowKind: 'sink';
	public FlowSinkElements getFlowSinkAccess() {
		return pFlowSink;
	}
	
	public ParserRule getFlowSinkRule() {
		return getFlowSinkAccess().getRule();
	}
	
	//FlowPath returns aadl2::FlowKind: 'path';
	public FlowPathElements getFlowPathAccess() {
		return pFlowPath;
	}
	
	public ParserRule getFlowPathRule() {
		return getFlowPathAccess().getRule();
	}
	
	//FlowSpecification returns aadl2::FlowSpecification:
	//    FlowSourceSpec | FlowSinkSpec | FlowPathSpec | FlowSpecRefinement
	//    ;
	public FlowSpecificationElements getFlowSpecificationAccess() {
		return pFlowSpecification;
	}
	
	public ParserRule getFlowSpecificationRule() {
		return getFlowSpecificationAccess().getRule();
	}
	
	//FlowSourceSpec returns aadl2::FlowSpecification:
	//    name=ID ':'
	//    'flow' kind=FlowSource
	//    outEnd=FlowEnd
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
	//    ';'
	//;
	public FlowSourceSpecElements getFlowSourceSpecAccess() {
		return pFlowSourceSpec;
	}
	
	public ParserRule getFlowSourceSpecRule() {
		return getFlowSourceSpecAccess().getRule();
	}
	
	//FlowSinkSpec returns aadl2::FlowSpecification:
	//    name=ID ':'
	//    'flow' kind=FlowSink
	//    InEnd=FlowEnd
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
	//    ';'
	//;
	public FlowSinkSpecElements getFlowSinkSpecAccess() {
		return pFlowSinkSpec;
	}
	
	public ParserRule getFlowSinkSpecRule() {
		return getFlowSinkSpecAccess().getRule();
	}
	
	//FlowPathSpec returns aadl2::FlowSpecification:
	//    name=ID ':'
	//    'flow' kind=FlowPath
	//    InEnd=FlowEnd
	//    '->'     outEnd=FlowEnd
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
	//    ';'
	//;
	public FlowPathSpecElements getFlowPathSpecAccess() {
		return pFlowPathSpec;
	}
	
	public ParserRule getFlowPathSpecRule() {
		return getFlowPathSpecAccess().getRule();
	}
	
	//FlowEnd returns aadl2::FlowEnd:
	//    feature=[aadl2::Feature|ID] ({aadl2::FlowEnd.context=current} "." feature=[aadl2::Feature|ID])*
	//;
	public FlowEndElements getFlowEndAccess() {
		return pFlowEnd;
	}
	
	public ParserRule getFlowEndRule() {
		return getFlowEndAccess().getRule();
	}
	
	//FlowSpecRefinement returns aadl2::FlowSpecification:
	//    refined=[aadl2::FlowSpecification|REFINEDNAME]
	//    ':' RefinedToKeywords 'flow' kind=FlowKind
	//    ('{' ownedPropertyAssociation+=PropertyAssociation+ '}')?
	//    (InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID] (',' inModeOrTransition+=[aadl2::ModeFeature|ID])* ')')?
	//    ';'
	//    ;
	public FlowSpecRefinementElements getFlowSpecRefinementAccess() {
		return pFlowSpecRefinement;
	}
	
	public ParserRule getFlowSpecRefinementRule() {
		return getFlowSpecRefinementAccess().getRule();
	}
	
	//FlowImplementation returns aadl2::FlowImplementation:
	//    FlowSourceImpl | FlowSinkImpl | FlowPathImpl
	//;
	public FlowImplementationElements getFlowImplementationAccess() {
		return pFlowImplementation;
	}
	
	public ParserRule getFlowImplementationRule() {
		return getFlowImplementationAccess().getRule();
	}
	
	//FlowSourceImpl returns aadl2::FlowImplementation:
	//    specification=[aadl2::FlowSpecification|ID]
	//    ':' 'flow' kind=FlowSource
	//    (  ownedFlowSegment+=SubcomponentFlow '->' ownedFlowSegment+=ConnectionFlow '->' )*
	//    outEnd=FlowEnd
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
	//    ';'
	//;
	public FlowSourceImplElements getFlowSourceImplAccess() {
		return pFlowSourceImpl;
	}
	
	public ParserRule getFlowSourceImplRule() {
		return getFlowSourceImplAccess().getRule();
	}
	
	//FlowSinkImpl returns aadl2::FlowImplementation:
	//    specification=[aadl2::FlowSpecification|ID]//name=ID
	//    ':' 'flow' kind=FlowSink
	//    inEnd = FlowEnd
	//    ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow  )*
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
	//    ';'
	//;
	public FlowSinkImplElements getFlowSinkImplAccess() {
		return pFlowSinkImpl;
	}
	
	public ParserRule getFlowSinkImplRule() {
		return getFlowSinkImplAccess().getRule();
	}
	
	//FlowPathImpl returns aadl2::FlowImplementation:
	//    specification=[aadl2::FlowSpecification|ID]//name=ID
	//    ':' 'flow' kind=FlowPath
	//    inEnd = FlowEnd
	//    (  ( '->' ownedFlowSegment+=ConnectionFlow '->' ownedFlowSegment+=SubcomponentFlow   )*
	//        '->' ownedFlowSegment+=ConnectionFlow )?
	// '->' outEnd=FlowEnd
	//     ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
	//    ';'
	//;
	public FlowPathImplElements getFlowPathImplAccess() {
		return pFlowPathImpl;
	}
	
	public ParserRule getFlowPathImplRule() {
		return getFlowPathImplAccess().getRule();
	}
	
	//EndToEndFlow returns aadl2::EndToEndFlow:
	//    ((name=ID ':' EndToEndFlowKeywords
	//    ownedEndToEndFlowSegment+=ETESubcomponentFlow
	//    ( '->' ownedEndToEndFlowSegment+=ETEConnectionFlow '->' ownedEndToEndFlowSegment+=ETESubcomponentFlow )+)
	//    | (refined=[aadl2::EndToEndFlow|REFINEDNAME] ':' RefinedToKeywords EndToEndFlowKeywords))
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ( InModesKeywords '(' inModeOrTransition+=[aadl2::ModeFeature|ID]( ',' inModeOrTransition+=[aadl2::ModeFeature|ID])*  ')')?
	//    ';'
	//    ;
	public EndToEndFlowElements getEndToEndFlowAccess() {
		return pEndToEndFlow;
	}
	
	public ParserRule getEndToEndFlowRule() {
		return getEndToEndFlowAccess().getRule();
	}
	
	//// refinement should have at elast one of property or in modes. We perform a validation check
	//SubcomponentFlow returns aadl2::FlowSegment:
	//    (context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::FlowElement|ID]
	//;
	public SubcomponentFlowElements getSubcomponentFlowAccess() {
		return pSubcomponentFlow;
	}
	
	public ParserRule getSubcomponentFlowRule() {
		return getSubcomponentFlowAccess().getRule();
	}
	
	//ConnectionFlow returns aadl2::FlowSegment:
	//     flowElement=[aadl2::Connection|ID]
	//;
	public ConnectionFlowElements getConnectionFlowAccess() {
		return pConnectionFlow;
	}
	
	public ParserRule getConnectionFlowRule() {
		return getConnectionFlowAccess().getRule();
	}
	
	//ETESubcomponentFlow returns aadl2::EndToEndFlowSegment:
	//    (context=[aadl2::Subcomponent|ID] '.')? flowElement=[aadl2::EndToEndFlowElement|ID]
	//;
	public ETESubcomponentFlowElements getETESubcomponentFlowAccess() {
		return pETESubcomponentFlow;
	}
	
	public ParserRule getETESubcomponentFlowRule() {
		return getETESubcomponentFlowAccess().getRule();
	}
	
	//ETEConnectionFlow returns aadl2::EndToEndFlowSegment:
	//     flowElement=[aadl2::Connection|ID]
	//;
	public ETEConnectionFlowElements getETEConnectionFlowAccess() {
		return pETEConnectionFlow;
	}
	
	public ParserRule getETEConnectionFlowRule() {
		return getETEConnectionFlowAccess().getRule();
	}
	
	//// Modes
	//Mode returns aadl2::Mode:
	//    name=ID ':' initial?='initial'? 'mode'
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';';
	public ModeElements getModeAccess() {
		return pMode;
	}
	
	public ParserRule getModeRule() {
		return getModeAccess().getRule();
	}
	
	//ModeTransition returns aadl2::ModeTransition:
	//    (name=ID ':')?
	//    source=[aadl2::Mode|ID] '-['
	//    ownedTrigger+=Trigger
	//    (',' ownedTrigger+=Trigger)*
	//    ']->' destination=[aadl2::Mode|ID]
	//    ('{' (ownedPropertyAssociation+=PropertyAssociation)+ '}')?
	//    ';';
	public ModeTransitionElements getModeTransitionAccess() {
		return pModeTransition;
	}
	
	public ParserRule getModeTransitionRule() {
		return getModeTransitionAccess().getRule();
	}
	
	//Trigger returns aadl2::ModeTransitionTrigger:
	//    (
	//        (context=[aadl2::Context|ID] '.')?
	//        triggerPort=[aadl2::Port|ID]
	//    )
	//    | 'self' '.' triggerPort=[aadl2::InternalFeature|ID]
	//    | 'processor' '.' triggerPort=[aadl2::PortProxy|ID]
	//;
	public TriggerElements getTriggerAccess() {
		return pTrigger;
	}
	
	public ParserRule getTriggerRule() {
		return getTriggerAccess().getRule();
	}
	
	//// used where component_in_modes is shown in standard grammar
	//ModeRef returns aadl2::ModeBinding:
	//    parentMode=[aadl2::Mode|ID] ('=>' derivedMode=[aadl2::Mode|ID])?;
	public ModeRefElements getModeRefAccess() {
		return pModeRef;
	}
	
	public ParserRule getModeRefRule() {
		return getModeRefAccess().getRule();
	}
	
	//AnnexLibrary returns aadl2::AnnexLibrary:
	//     DefaultAnnexLibrary;
	public AnnexLibraryElements getAnnexLibraryAccess() {
		return pAnnexLibrary;
	}
	
	public ParserRule getAnnexLibraryRule() {
		return getAnnexLibraryAccess().getRule();
	}
	
	//DefaultAnnexLibrary returns aadl2::DefaultAnnexLibrary:
	//    'annex' name=ID
	//     sourceText=ANNEXTEXT
	//    ';';
	public DefaultAnnexLibraryElements getDefaultAnnexLibraryAccess() {
		return pDefaultAnnexLibrary;
	}
	
	public ParserRule getDefaultAnnexLibraryRule() {
		return getDefaultAnnexLibraryAccess().getRule();
	}
	
	//AnnexSubclause returns aadl2::AnnexSubclause:
	//     DefaultAnnexSubclause;
	public AnnexSubclauseElements getAnnexSubclauseAccess() {
		return pAnnexSubclause;
	}
	
	public ParserRule getAnnexSubclauseRule() {
		return getAnnexSubclauseAccess().getRule();
	}
	
	//DefaultAnnexSubclause returns aadl2::DefaultAnnexSubclause:
	//    'annex' name=ID
	//     sourceText=ANNEXTEXT
	//    ( InModesKeywords '(' (inMode+=[aadl2::Mode|ID](',' inMode+=[aadl2::Mode|ID])* ) ')')?
	//    ';';
	public DefaultAnnexSubclauseElements getDefaultAnnexSubclauseAccess() {
		return pDefaultAnnexSubclause;
	}
	
	public ParserRule getDefaultAnnexSubclauseRule() {
		return getDefaultAnnexSubclauseAccess().getRule();
	}
	
	//    // **************
	//// Properties
	//PropertySet returns aadl2::PropertySet:
	//    'property' 'set' name=ID 'is'
	//    ('with' (importedUnit+=[aadl2::PropertySet|ID])
	//        (',' importedUnit+=[aadl2::PropertySet|ID])* ';')*
	//    (ownedPropertyType+=PropertyType | ownedProperty+=PropertyDefinition
	//    | ownedPropertyConstant+=PropertyConstant)*
	//    (ownedAnnexSubclause+=AnnexSubclause)*
	//    'end' ID ';' ;
	public PropertySetElements getPropertySetAccess() {
		return pPropertySet;
	}
	
	public ParserRule getPropertySetRule() {
		return getPropertySetAccess().getRule();
	}
	
	//PropertyType returns aadl2::PropertyType:
	//    (BooleanType|StringType|EnumerationType|UnitsType |RealType
	//    |IntegerType|RangeType|ClassifierType|ReferenceType|RecordType)
	//    ';';
	public PropertyTypeElements getPropertyTypeAccess() {
		return pPropertyType;
	}
	
	public ParserRule getPropertyTypeRule() {
		return getPropertyTypeAccess().getRule();
	}
	
	//UnnamedPropertyType returns aadl2::PropertyType:
	//    (ListType|
	//        UnnamedBooleanType|UnnamedStringType|UnnamedEnumerationType|UnnamedUnitsType |UnnamedRealType
	//    |UnnamedIntegerType|UnnamedRangeType|UnnamedClassifierType|UnnamedReferenceType|UnnamedRecordType)
	//    ;
	public UnnamedPropertyTypeElements getUnnamedPropertyTypeAccess() {
		return pUnnamedPropertyType;
	}
	
	public ParserRule getUnnamedPropertyTypeRule() {
		return getUnnamedPropertyTypeAccess().getRule();
	}
	
	//BooleanType returns aadl2::AadlBoolean:
	//     name=ID ':' 'type'
	//    'aadlboolean';
	public BooleanTypeElements getBooleanTypeAccess() {
		return pBooleanType;
	}
	
	public ParserRule getBooleanTypeRule() {
		return getBooleanTypeAccess().getRule();
	}
	
	//UnnamedBooleanType returns aadl2::AadlBoolean:
	//    {aadl2::AadlBoolean}'aadlboolean';
	public UnnamedBooleanTypeElements getUnnamedBooleanTypeAccess() {
		return pUnnamedBooleanType;
	}
	
	public ParserRule getUnnamedBooleanTypeRule() {
		return getUnnamedBooleanTypeAccess().getRule();
	}
	
	//StringType returns aadl2::AadlString:
	//    name=ID ':' 'type'
	//    'aadlstring';
	public StringTypeElements getStringTypeAccess() {
		return pStringType;
	}
	
	public ParserRule getStringTypeRule() {
		return getStringTypeAccess().getRule();
	}
	
	//UnnamedStringType returns aadl2::AadlString:
	//    {aadl2::AadlString}'aadlstring';
	public UnnamedStringTypeElements getUnnamedStringTypeAccess() {
		return pUnnamedStringType;
	}
	
	public ParserRule getUnnamedStringTypeRule() {
		return getUnnamedStringTypeAccess().getRule();
	}
	
	//EnumerationType returns aadl2::EnumerationType:
	//    name=ID ':' 'type'
	//    'enumeration'
	//    '(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')';
	public EnumerationTypeElements getEnumerationTypeAccess() {
		return pEnumerationType;
	}
	
	public ParserRule getEnumerationTypeRule() {
		return getEnumerationTypeAccess().getRule();
	}
	
	//UnnamedEnumerationType returns aadl2::EnumerationType:
	//    'enumeration'
	//    '(' ownedLiteral+=EnumerationLiteral (',' ownedLiteral+=EnumerationLiteral)* ')';
	public UnnamedEnumerationTypeElements getUnnamedEnumerationTypeAccess() {
		return pUnnamedEnumerationType;
	}
	
	public ParserRule getUnnamedEnumerationTypeRule() {
		return getUnnamedEnumerationTypeAccess().getRule();
	}
	
	//EnumerationLiteral returns aadl2::EnumerationLiteral:
	//    name=ID;
	public EnumerationLiteralElements getEnumerationLiteralAccess() {
		return pEnumerationLiteral;
	}
	
	public ParserRule getEnumerationLiteralRule() {
		return getEnumerationLiteralAccess().getRule();
	}
	
	//UnitsType returns aadl2::UnitsType:
	//    name=ID ':' 'type'
	//    'units'
	//    '(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')';
	public UnitsTypeElements getUnitsTypeAccess() {
		return pUnitsType;
	}
	
	public ParserRule getUnitsTypeRule() {
		return getUnitsTypeAccess().getRule();
	}
	
	//UnnamedUnitsType returns aadl2::UnitsType:
	//    'units'
	//    '(' ownedLiteral+=UnitLiteral (',' ownedLiteral+=UnitLiteralConversion)* ')';
	public UnnamedUnitsTypeElements getUnnamedUnitsTypeAccess() {
		return pUnnamedUnitsType;
	}
	
	public ParserRule getUnnamedUnitsTypeRule() {
		return getUnnamedUnitsTypeAccess().getRule();
	}
	
	//UnitLiteral returns aadl2::UnitLiteral:
	//    name=ID;
	public UnitLiteralElements getUnitLiteralAccess() {
		return pUnitLiteral;
	}
	
	public ParserRule getUnitLiteralRule() {
		return getUnitLiteralAccess().getRule();
	}
	
	//UnitLiteralConversion returns aadl2::UnitLiteral:
	//    name=ID '=>' baseUnit=[aadl2::UnitLiteral|ID] STAR factor=NumberValue
	//    ;
	public UnitLiteralConversionElements getUnitLiteralConversionAccess() {
		return pUnitLiteralConversion;
	}
	
	public ParserRule getUnitLiteralConversionRule() {
		return getUnitLiteralConversionAccess().getRule();
	}
	
	//RealType returns aadl2::AadlReal:
	//    name=ID ':' 'type'
	//    'aadlreal' (range=RealRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
	//     ;
	public RealTypeElements getRealTypeAccess() {
		return pRealType;
	}
	
	public ParserRule getRealTypeRule() {
		return getRealTypeAccess().getRule();
	}
	
	//UnnamedRealType returns aadl2::AadlReal:
	//    {aadl2::AadlReal}
	//    'aadlreal' (range=RealRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
	//     ;
	public UnnamedRealTypeElements getUnnamedRealTypeAccess() {
		return pUnnamedRealType;
	}
	
	public ParserRule getUnnamedRealTypeRule() {
		return getUnnamedRealTypeAccess().getRule();
	}
	
	//IntegerType returns aadl2::AadlInteger:
	//    name=ID ':' 'type'
	//    'aadlinteger' (range=IntegerRange)? ((ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
	//     ;
	public IntegerTypeElements getIntegerTypeAccess() {
		return pIntegerType;
	}
	
	public ParserRule getIntegerTypeRule() {
		return getIntegerTypeAccess().getRule();
	}
	
	//UnnamedIntegerType returns aadl2::AadlInteger:
	//    {aadl2::AadlInteger}
	//    'aadlinteger' (range=IntegerRange)? ( (ownedUnitsType=UnnamedUnitsType| ('units' referencedUnitsType=[aadl2::UnitsType|QPREF])))?
	//     ;
	public UnnamedIntegerTypeElements getUnnamedIntegerTypeAccess() {
		return pUnnamedIntegerType;
	}
	
	public ParserRule getUnnamedIntegerTypeRule() {
		return getUnnamedIntegerTypeAccess().getRule();
	}
	
	//RangeType returns aadl2::RangeType:
	//    name=ID ':' 'type'
	//    RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
	//        | referencedNumberType=[aadl2::NumberType|QPREF]
	//    )
	//     ;
	public RangeTypeElements getRangeTypeAccess() {
		return pRangeType;
	}
	
	public ParserRule getRangeTypeRule() {
		return getRangeTypeAccess().getRule();
	}
	
	//UnnamedRangeType returns aadl2::RangeType:
	//    {aadl2::RangeType}
	//    RangeOfKeywords (ownedNumberType=(UnnamedIntegerType|UnnamedRealType)
	//        | referencedNumberType=[aadl2::NumberType|QPREF]
	//    )
	//     ;
	public UnnamedRangeTypeElements getUnnamedRangeTypeAccess() {
		return pUnnamedRangeType;
	}
	
	public ParserRule getUnnamedRangeTypeRule() {
		return getUnnamedRangeTypeAccess().getRule();
	}
	
	//ClassifierType returns aadl2::ClassifierType:
	//    name=ID ':' 'type'
	//    'classifier'
	//    ('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
	//     ;
	public ClassifierTypeElements getClassifierTypeAccess() {
		return pClassifierType;
	}
	
	public ParserRule getClassifierTypeRule() {
		return getClassifierTypeAccess().getRule();
	}
	
	//UnnamedClassifierType returns aadl2::ClassifierType:
	//    {aadl2::ClassifierType}
	//    'classifier'
	//    ('(' classifierReference+=QMReference (',' classifierReference+=QMReference)*')')?
	//     ;
	public UnnamedClassifierTypeElements getUnnamedClassifierTypeAccess() {
		return pUnnamedClassifierType;
	}
	
	public ParserRule getUnnamedClassifierTypeRule() {
		return getUnnamedClassifierTypeAccess().getRule();
	}
	
	//QMReference returns aadl2::MetaclassReference:
	//    ('{'  annexName=ID '}' STAR STAR )?
	//    ( metaclassName+=(CoreKeyWord|ID) )+
	//     ;
	public QMReferenceElements getQMReferenceAccess() {
		return pQMReference;
	}
	
	public ParserRule getQMReferenceRule() {
		return getQMReferenceAccess().getRule();
	}
	
	//QCReference returns aadl2::ClassifierValue:
	//   classifier=[aadl2::ComponentClassifier|FQCREF]
	//  ;
	public QCReferenceElements getQCReferenceAccess() {
		return pQCReference;
	}
	
	public ParserRule getQCReferenceRule() {
		return getQCReferenceAccess().getRule();
	}
	
	//ReferenceType returns aadl2::ReferenceType:
	//    name=ID ':' 'type'
	//    'reference'
	//    ('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
	//     ;
	public ReferenceTypeElements getReferenceTypeAccess() {
		return pReferenceType;
	}
	
	public ParserRule getReferenceTypeRule() {
		return getReferenceTypeAccess().getRule();
	}
	
	//UnnamedReferenceType returns aadl2::ReferenceType:
	//    'reference' {aadl2::ReferenceType}
	//    ('(' namedElementReference+=QMReference (',' namedElementReference+=QMReference)* ')')?
	//     ;
	public UnnamedReferenceTypeElements getUnnamedReferenceTypeAccess() {
		return pUnnamedReferenceType;
	}
	
	public ParserRule getUnnamedReferenceTypeRule() {
		return getUnnamedReferenceTypeAccess().getRule();
	}
	
	//RecordType returns aadl2::RecordType:
	//    name=ID ':' 'type'
	//    'record' '('
	//    (ownedField+=RecordField )+
	//    ')'
	//     ;
	public RecordTypeElements getRecordTypeAccess() {
		return pRecordType;
	}
	
	public ParserRule getRecordTypeRule() {
		return getRecordTypeAccess().getRule();
	}
	
	//UnnamedRecordType returns aadl2::RecordType:
	//    'record' '('
	//    (ownedField+=RecordField )+
	//    ')'
	//     ;
	public UnnamedRecordTypeElements getUnnamedRecordTypeAccess() {
		return pUnnamedRecordType;
	}
	
	public ParserRule getUnnamedRecordTypeRule() {
		return getUnnamedRecordTypeAccess().getRule();
	}
	
	//RecordField returns aadl2::BasicProperty:
	//    name=ID ':'
	////    ('list' 'of')* is handled as part of UnnamedPropertytype
	//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
	//    ';'
	//     ;
	public RecordFieldElements getRecordFieldAccess() {
		return pRecordField;
	}
	
	public ParserRule getRecordFieldRule() {
		return getRecordFieldAccess().getRule();
	}
	
	////&&&&& Property Definition
	//PropertyDefinition returns aadl2::Property:
	//    name=ID ':'
	//    (inherit?='inherit')?
	////    ('list' 'of')* is handled as part of UnnamedPropertytype
	//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
	//    ('=>' defaultValue=PropertyExpression)?
	//    AppliesToKeywords '('
	//    ((appliesTo+=PropertyOwner (',' appliesTo+=PropertyOwner)*)|
	//    appliesTo+=AllReference)
	//    ')'
	//    ';'
	//     ;
	public PropertyDefinitionElements getPropertyDefinitionAccess() {
		return pPropertyDefinition;
	}
	
	public ParserRule getPropertyDefinitionRule() {
		return getPropertyDefinitionAccess().getRule();
	}
	
	//AllReference returns aadl2::MetaclassReference:
	//     metaclassName+='all'  // &&&&& actually set it to NamedElement using ALL rule returning "named element" as string
	//;
	public AllReferenceElements getAllReferenceAccess() {
		return pAllReference;
	}
	
	public ParserRule getAllReferenceRule() {
		return getAllReferenceAccess().getRule();
	}
	
	//ListType returns aadl2::ListType:
	//     ListOfKeywords
	//    (referencedElementType=[aadl2::PropertyType|QPREF]|ownedElementType=UnnamedPropertyType)
	//;
	public ListTypeElements getListTypeAccess() {
		return pListType;
	}
	
	public ParserRule getListTypeRule() {
		return getListTypeAccess().getRule();
	}
	
	//PropertyOwner returns aadl2::PropertyOwner:
	//    // classifier value is always qualified by a package name
	//    QMReference | QCReference
	//     ;
	public PropertyOwnerElements getPropertyOwnerAccess() {
		return pPropertyOwner;
	}
	
	public ParserRule getPropertyOwnerRule() {
		return getPropertyOwnerAccess().getRule();
	}
	
	//PropertyConstant returns aadl2::PropertyConstant:
	//    name=ID ':' 'constant'
	////    ('list' 'of')* is handled as part of UnnamedPropertytype
	//    (referencedPropertyType=[aadl2::PropertyType|QPREF]|ownedPropertyType=UnnamedPropertyType)
	//    '=>' constantValue=ConstantPropertyExpression
	//    ';'
	//     ;
	public PropertyConstantElements getPropertyConstantAccess() {
		return pPropertyConstant;
	}
	
	public ParserRule getPropertyConstantRule() {
		return getPropertyConstantAccess().getRule();
	}
	
	//NumberValue returns aadl2::NumberValue:
	//    RealLit | IntegerLit ;
	public NumberValueElements getNumberValueAccess() {
		return pNumberValue;
	}
	
	public ParserRule getNumberValueRule() {
		return getNumberValueAccess().getRule();
	}
	
	//RealLit returns aadl2::RealLiteral:
	//    value=SignedReal ;
	public RealLitElements getRealLitAccess() {
		return pRealLit;
	}
	
	public ParserRule getRealLitRule() {
		return getRealLitAccess().getRule();
	}
	
	//IntegerLit returns aadl2::IntegerLiteral:
	//    value=SignedInt ;
	public IntegerLitElements getIntegerLitAccess() {
		return pIntegerLit;
	}
	
	public ParserRule getIntegerLitRule() {
		return getIntegerLitAccess().getRule();
	}
	
	//ConstantPropertyExpression returns aadl2::PropertyExpression:
	////    OldRecordTerm |
	//    RecordTerm | ComponentClassifierTerm
	//    | ComputedTerm | StringTerm |NumericRangeTerm
	//    | RealTerm | IntegerTerm
	//          | ListTerm
	//     |BooleanLiteral | LiteralorReferenceTerm
	//    ;
	public ConstantPropertyExpressionElements getConstantPropertyExpressionAccess() {
		return pConstantPropertyExpression;
	}
	
	public ParserRule getConstantPropertyExpressionRule() {
		return getConstantPropertyExpressionAccess().getRule();
	}
	
	//IntegerRange returns aadl2::NumericRange:
	//    lowerBound=(IntegerTerm | SignedConstant | ConstantValue )
	//    '..' upperBound=(IntegerTerm | SignedConstant | ConstantValue )
	//    ;
	public IntegerRangeElements getIntegerRangeAccess() {
		return pIntegerRange;
	}
	
	public ParserRule getIntegerRangeRule() {
		return getIntegerRangeAccess().getRule();
	}
	
	//RealRange returns aadl2::NumericRange:
	//    lowerBound=(RealTerm | SignedConstant | ConstantValue )
	//    '..' upperBound=(RealTerm | SignedConstant | ConstantValue )
	//    ;
	public RealRangeElements getRealRangeAccess() {
		return pRealRange;
	}
	
	public ParserRule getRealRangeRule() {
		return getRealRangeAccess().getRule();
	}
	
	//CoreKeyWord :
	//    'abstract' |'access' | 'annex'| 'applies' | 'binding'
	//    | 'bus' |'calls' |'classifier'| 'connections' |'constant'| 'data'| 'device'
	//    |'end' |'enumeration'|'event'|'extends'
	//    | 'feature'|'features'|'flow'|'flows'
	//    | 'group'|'implementation'|'in'|'inherit'|'initial'| 'internal' |'inverse'|'is'|'list'
	//    | 'memory'|'mode'|'modes'|'none'|'of'|'out'|'package'|'parameter'|'path'| 'port'|'private'
	//    | 'process'  | 'processor' | 'prototype'
	//    |'prototypes'|'provides'|'public'
	//    |'refined'|'renames'|'requires'|'self'|'set'|'sink'|'source'
	//    |'subcomponents'| 'subprogram'|'system'| 'thread'|'type'|'to'|'virtual'|'with'
	////// properties grammar    |'properties'|'property'|'delta'|'false'|'not'| 'and'|'or'|'range'|'record'|'reference'|'true'|'units'
	//;
	public CoreKeyWordElements getCoreKeyWordAccess() {
		return pCoreKeyWord;
	}
	
	public ParserRule getCoreKeyWordRule() {
		return getCoreKeyWordAccess().getRule();
	}
	
	//// package anme
	//PNAME:
	//    ID ('::' ID)*;
	public PNAMEElements getPNAMEAccess() {
		return pPNAME;
	}
	
	public ParserRule getPNAMERule() {
		return getPNAMEAccess().getRule();
	}
	
	//// fully qualified classifier name (always includes package name
	//FQCREF:
	//    (ID '::')+ ID ('.' ID)?;
	public FQCREFElements getFQCREFAccess() {
		return pFQCREF;
	}
	
	public ParserRule getFQCREFRule() {
		return getFQCREFAccess().getRule();
	}
	
	//// implementation name (used by value converter)
	//INAME:
	//    ID;
	public INAMEElements getINAMEAccess() {
		return pINAME;
	}
	
	public ParserRule getINAMERule() {
		return getINAMEAccess().getRule();
	}
	
	//// implementation name (used by value converter)
	//FULLINAME:
	//    ID '.' ID;
	public FULLINAMEElements getFULLINAMEAccess() {
		return pFULLINAME;
	}
	
	public ParserRule getFULLINAMERule() {
		return getFULLINAMEAccess().getRule();
	}
	
	//// name of refined entity. Used to set name field by value converter
	//REFINEDNAME:
	//    ID;
	public REFINEDNAMEElements getREFINEDNAMEAccess() {
		return pREFINEDNAME;
	}
	
	public ParserRule getREFINEDNAMERule() {
		return getREFINEDNAMEAccess().getRule();
	}
	
	//AbstractImplementationKeywords:
	//    'abstract' 'implementation'
	//;
	public AbstractImplementationKeywordsElements getAbstractImplementationKeywordsAccess() {
		return pAbstractImplementationKeywords;
	}
	
	public ParserRule getAbstractImplementationKeywordsRule() {
		return getAbstractImplementationKeywordsAccess().getRule();
	}
	
	//BusAccessKeywords:
	//    'bus' 'access'
	//;
	public BusAccessKeywordsElements getBusAccessKeywordsAccess() {
		return pBusAccessKeywords;
	}
	
	public ParserRule getBusAccessKeywordsRule() {
		return getBusAccessKeywordsAccess().getRule();
	}
	
	//BusImplementationKeywords:
	//    'bus' 'implementation'
	//;
	public BusImplementationKeywordsElements getBusImplementationKeywordsAccess() {
		return pBusImplementationKeywords;
	}
	
	public ParserRule getBusImplementationKeywordsRule() {
		return getBusImplementationKeywordsAccess().getRule();
	}
	
	//DataAccessKeywords:
	//    'data' 'access'
	//;
	public DataAccessKeywordsElements getDataAccessKeywordsAccess() {
		return pDataAccessKeywords;
	}
	
	public ParserRule getDataAccessKeywordsRule() {
		return getDataAccessKeywordsAccess().getRule();
	}
	
	//DataImplementationKeywords:
	//    'data' 'implementation'
	//;
	public DataImplementationKeywordsElements getDataImplementationKeywordsAccess() {
		return pDataImplementationKeywords;
	}
	
	public ParserRule getDataImplementationKeywordsRule() {
		return getDataImplementationKeywordsAccess().getRule();
	}
	
	//DataPortKeywords:
	//    'data' 'port'
	//;
	public DataPortKeywordsElements getDataPortKeywordsAccess() {
		return pDataPortKeywords;
	}
	
	public ParserRule getDataPortKeywordsRule() {
		return getDataPortKeywordsAccess().getRule();
	}
	
	//DeviceImplementationKeywords:
	//    'device' 'implementation'
	//;
	public DeviceImplementationKeywordsElements getDeviceImplementationKeywordsAccess() {
		return pDeviceImplementationKeywords;
	}
	
	public ParserRule getDeviceImplementationKeywordsRule() {
		return getDeviceImplementationKeywordsAccess().getRule();
	}
	
	//EndToEndFlowKeywords:
	//    'end' 'to' 'end' 'flow'
	//;
	public EndToEndFlowKeywordsElements getEndToEndFlowKeywordsAccess() {
		return pEndToEndFlowKeywords;
	}
	
	public ParserRule getEndToEndFlowKeywordsRule() {
		return getEndToEndFlowKeywordsAccess().getRule();
	}
	
	//EventDataKeywords:
	//    'event' 'data'
	//;
	public EventDataKeywordsElements getEventDataKeywordsAccess() {
		return pEventDataKeywords;
	}
	
	public ParserRule getEventDataKeywordsRule() {
		return getEventDataKeywordsAccess().getRule();
	}
	
	//EventDataPortKeywords:
	//    'event' 'data' 'port'
	//;
	public EventDataPortKeywordsElements getEventDataPortKeywordsAccess() {
		return pEventDataPortKeywords;
	}
	
	public ParserRule getEventDataPortKeywordsRule() {
		return getEventDataPortKeywordsAccess().getRule();
	}
	
	//EventPortKeywords:
	//    'event' 'port'
	//;
	public EventPortKeywordsElements getEventPortKeywordsAccess() {
		return pEventPortKeywords;
	}
	
	public ParserRule getEventPortKeywordsRule() {
		return getEventPortKeywordsAccess().getRule();
	}
	
	//FeatureGroupKeywords:
	//    'feature' 'group'
	//;
	public FeatureGroupKeywordsElements getFeatureGroupKeywordsAccess() {
		return pFeatureGroupKeywords;
	}
	
	public ParserRule getFeatureGroupKeywordsRule() {
		return getFeatureGroupKeywordsAccess().getRule();
	}
	
	//InternalFeaturesKeywords:
	//    'internal' 'features'
	//;
	public InternalFeaturesKeywordsElements getInternalFeaturesKeywordsAccess() {
		return pInternalFeaturesKeywords;
	}
	
	public ParserRule getInternalFeaturesKeywordsRule() {
		return getInternalFeaturesKeywordsAccess().getRule();
	}
	
	//InverseOfKeywords:
	//    'inverse' 'of'
	//;
	public InverseOfKeywordsElements getInverseOfKeywordsAccess() {
		return pInverseOfKeywords;
	}
	
	public ParserRule getInverseOfKeywordsRule() {
		return getInverseOfKeywordsAccess().getRule();
	}
	
	//ListOfKeywords:
	//    'list' 'of'
	//;
	public ListOfKeywordsElements getListOfKeywordsAccess() {
		return pListOfKeywords;
	}
	
	public ParserRule getListOfKeywordsRule() {
		return getListOfKeywordsAccess().getRule();
	}
	
	//MemoryImplementationKeywords:
	//    'memory' 'implementation'
	//;
	public MemoryImplementationKeywordsElements getMemoryImplementationKeywordsAccess() {
		return pMemoryImplementationKeywords;
	}
	
	public ParserRule getMemoryImplementationKeywordsRule() {
		return getMemoryImplementationKeywordsAccess().getRule();
	}
	
	//ProcessImplementationKeywords:
	//    'process' 'implementation'
	//;
	public ProcessImplementationKeywordsElements getProcessImplementationKeywordsAccess() {
		return pProcessImplementationKeywords;
	}
	
	public ParserRule getProcessImplementationKeywordsRule() {
		return getProcessImplementationKeywordsAccess().getRule();
	}
	
	//ProcessorFeaturesKeywords:
	//    'processor' 'features'
	//;
	public ProcessorFeaturesKeywordsElements getProcessorFeaturesKeywordsAccess() {
		return pProcessorFeaturesKeywords;
	}
	
	public ParserRule getProcessorFeaturesKeywordsRule() {
		return getProcessorFeaturesKeywordsAccess().getRule();
	}
	
	//ProcessorImplementationKeywords:
	//    'processor' 'implementation'
	//;
	public ProcessorImplementationKeywordsElements getProcessorImplementationKeywordsAccess() {
		return pProcessorImplementationKeywords;
	}
	
	public ParserRule getProcessorImplementationKeywordsRule() {
		return getProcessorImplementationKeywordsAccess().getRule();
	}
	
	//RangeOfKeywords:
	//    'range' 'of'
	//;
	public RangeOfKeywordsElements getRangeOfKeywordsAccess() {
		return pRangeOfKeywords;
	}
	
	public ParserRule getRangeOfKeywordsRule() {
		return getRangeOfKeywordsAccess().getRule();
	}
	
	//RefinedToKeywords:
	//    'refined' 'to'
	//;
	public RefinedToKeywordsElements getRefinedToKeywordsAccess() {
		return pRefinedToKeywords;
	}
	
	public ParserRule getRefinedToKeywordsRule() {
		return getRefinedToKeywordsAccess().getRule();
	}
	
	//RequiresModesKeywords:
	//    'requires' 'modes'
	//;
	public RequiresModesKeywordsElements getRequiresModesKeywordsAccess() {
		return pRequiresModesKeywords;
	}
	
	public ParserRule getRequiresModesKeywordsRule() {
		return getRequiresModesKeywordsAccess().getRule();
	}
	
	//SubprogramAccessKeywords:
	//    'subprogram' 'access'
	//;
	public SubprogramAccessKeywordsElements getSubprogramAccessKeywordsAccess() {
		return pSubprogramAccessKeywords;
	}
	
	public ParserRule getSubprogramAccessKeywordsRule() {
		return getSubprogramAccessKeywordsAccess().getRule();
	}
	
	//SubprogramGroupKeywords:
	//    'subprogram' 'group'
	//;
	public SubprogramGroupKeywordsElements getSubprogramGroupKeywordsAccess() {
		return pSubprogramGroupKeywords;
	}
	
	public ParserRule getSubprogramGroupKeywordsRule() {
		return getSubprogramGroupKeywordsAccess().getRule();
	}
	
	//SubprogramGroupAccessKeywords:
	//    'subprogram' 'group' 'access'
	//;
	public SubprogramGroupAccessKeywordsElements getSubprogramGroupAccessKeywordsAccess() {
		return pSubprogramGroupAccessKeywords;
	}
	
	public ParserRule getSubprogramGroupAccessKeywordsRule() {
		return getSubprogramGroupAccessKeywordsAccess().getRule();
	}
	
	//SubprogramGroupImplementationKeywords:
	//    'subprogram' 'group' 'implementation'
	//;
	public SubprogramGroupImplementationKeywordsElements getSubprogramGroupImplementationKeywordsAccess() {
		return pSubprogramGroupImplementationKeywords;
	}
	
	public ParserRule getSubprogramGroupImplementationKeywordsRule() {
		return getSubprogramGroupImplementationKeywordsAccess().getRule();
	}
	
	//SubprogramImplementationKeywords:
	//    'subprogram' 'implementation'
	//;
	public SubprogramImplementationKeywordsElements getSubprogramImplementationKeywordsAccess() {
		return pSubprogramImplementationKeywords;
	}
	
	public ParserRule getSubprogramImplementationKeywordsRule() {
		return getSubprogramImplementationKeywordsAccess().getRule();
	}
	
	//SystemImplementationKeywords:
	//    'system' 'implementation'
	//;
	public SystemImplementationKeywordsElements getSystemImplementationKeywordsAccess() {
		return pSystemImplementationKeywords;
	}
	
	public ParserRule getSystemImplementationKeywordsRule() {
		return getSystemImplementationKeywordsAccess().getRule();
	}
	
	//ThreadGroupKeywords:
	//    'thread' 'group'
	//;
	public ThreadGroupKeywordsElements getThreadGroupKeywordsAccess() {
		return pThreadGroupKeywords;
	}
	
	public ParserRule getThreadGroupKeywordsRule() {
		return getThreadGroupKeywordsAccess().getRule();
	}
	
	//ThreadGroupImplementationKeywords:
	//    'thread' 'group' 'implementation'
	//;
	public ThreadGroupImplementationKeywordsElements getThreadGroupImplementationKeywordsAccess() {
		return pThreadGroupImplementationKeywords;
	}
	
	public ParserRule getThreadGroupImplementationKeywordsRule() {
		return getThreadGroupImplementationKeywordsAccess().getRule();
	}
	
	//ThreadImplementationKeywords:
	//    'thread' 'implementation'
	//;
	public ThreadImplementationKeywordsElements getThreadImplementationKeywordsAccess() {
		return pThreadImplementationKeywords;
	}
	
	public ParserRule getThreadImplementationKeywordsRule() {
		return getThreadImplementationKeywordsAccess().getRule();
	}
	
	//VirtualBusKeywords:
	//    'virtual' 'bus'
	//;
	public VirtualBusKeywordsElements getVirtualBusKeywordsAccess() {
		return pVirtualBusKeywords;
	}
	
	public ParserRule getVirtualBusKeywordsRule() {
		return getVirtualBusKeywordsAccess().getRule();
	}
	
	//VirtualBusImplementationKeywords:
	//    'virtual' 'bus' 'implementation'
	//;
	public VirtualBusImplementationKeywordsElements getVirtualBusImplementationKeywordsAccess() {
		return pVirtualBusImplementationKeywords;
	}
	
	public ParserRule getVirtualBusImplementationKeywordsRule() {
		return getVirtualBusImplementationKeywordsAccess().getRule();
	}
	
	//VirtualProcessorKeywords:
	//    'virtual' 'processor'
	//;
	public VirtualProcessorKeywordsElements getVirtualProcessorKeywordsAccess() {
		return pVirtualProcessorKeywords;
	}
	
	public ParserRule getVirtualProcessorKeywordsRule() {
		return getVirtualProcessorKeywordsAccess().getRule();
	}
	
	//VirtualProcessorImplementationKeywords:
	//    'virtual' 'processor' 'implementation'
	//;
	public VirtualProcessorImplementationKeywordsElements getVirtualProcessorImplementationKeywordsAccess() {
		return pVirtualProcessorImplementationKeywords;
	}
	
	public ParserRule getVirtualProcessorImplementationKeywordsRule() {
		return getVirtualProcessorImplementationKeywordsAccess().getRule();
	}
	
	//terminal ANNEXTEXT:
	//    '{**'->'**}';
	public TerminalRule getANNEXTEXTRule() {
		return tANNEXTEXT;
	}
	
	//PModel returns aadl2::Element:
	//    ContainedPropertyAssociation //| BasicPropertyAssociation | PropertyAssociation
	//    ;
	public PropertiesGrammarAccess.PModelElements getPModelAccess() {
		return gaProperties.getPModelAccess();
	}
	
	public ParserRule getPModelRule() {
		return getPModelAccess().getRule();
	}
	
	//// Properties
	//ContainedPropertyAssociation returns aadl2::PropertyAssociation:
	//    property=[aadl2::Property|QPREF]
	//    ('=>' | append?='+=>') (constant?='constant')?
	//    (
	//     ownedValue+=OptionalModalPropertyValue
	//    ( ',' ownedValue+=OptionalModalPropertyValue )*
	//    )
	//    (AppliesToKeywords appliesTo+=ContainmentPath
	//        (',' appliesTo+=ContainmentPath)*
	//    )?
	//    (InBindingKeywords '(' inBinding+=[aadl2::Classifier|QCREF]')')?
	//    ';';
	public PropertiesGrammarAccess.ContainedPropertyAssociationElements getContainedPropertyAssociationAccess() {
		return gaProperties.getContainedPropertyAssociationAccess();
	}
	
	public ParserRule getContainedPropertyAssociationRule() {
		return getContainedPropertyAssociationAccess().getRule();
	}
	
	//PropertyAssociation returns aadl2::PropertyAssociation:
	//    property=[aadl2::Property|QPREF]
	//    ('=>' | append?='+=>') (constant?='constant')?
	//    (
	//     ownedValue+=OptionalModalPropertyValue
	//    ( ',' ownedValue+=OptionalModalPropertyValue )*
	//    )
	//    (InBindingKeywords '(' inBinding+=[aadl2::Classifier|QCREF]')')?
	//    ';'
	//    ;
	public PropertiesGrammarAccess.PropertyAssociationElements getPropertyAssociationAccess() {
		return gaProperties.getPropertyAssociationAccess();
	}
	
	public ParserRule getPropertyAssociationRule() {
		return getPropertyAssociationAccess().getRule();
	}
	
	//BasicPropertyAssociation returns aadl2::PropertyAssociation:
	//    property=[aadl2::Property|QPREF]
	//    '=>' ownedValue+=PropertyValue ';'
	//    ;
	public PropertiesGrammarAccess.BasicPropertyAssociationElements getBasicPropertyAssociationAccess() {
		return gaProperties.getBasicPropertyAssociationAccess();
	}
	
	public ParserRule getBasicPropertyAssociationRule() {
		return getBasicPropertyAssociationAccess().getRule();
	}
	
	//ContainmentPath returns aadl2::ContainedNamedElement:
	//    path=ContainmentPathElement
	////    ( 'annex' containmentPathElement+=AnnexPath )?
	//;
	public PropertiesGrammarAccess.ContainmentPathElements getContainmentPathAccess() {
		return gaProperties.getContainmentPathAccess();
	}
	
	public ParserRule getContainmentPathRule() {
		return getContainmentPathAccess().getRule();
	}
	
	////AnnexPath returns aadl2::ContainmentPathElement:
	////     namedElement=[aadl2::NamedElement|IDANNEXTEXT];
	//ModalPropertyValue returns aadl2::ModalPropertyValue:
	//    ownedValue=PropertyExpression
	//    InModesKeywords '('
	//    inMode+=[aadl2::Mode|ID] (',' inMode+=[aadl2::Mode|ID])*
	//    ')'
	//    ;
	public PropertiesGrammarAccess.ModalPropertyValueElements getModalPropertyValueAccess() {
		return gaProperties.getModalPropertyValueAccess();
	}
	
	public ParserRule getModalPropertyValueRule() {
		return getModalPropertyValueAccess().getRule();
	}
	
	//OptionalModalPropertyValue returns aadl2::ModalPropertyValue:
	//    ownedValue=PropertyExpression
	//    // phf made this optional: need to check separately that only the last one is optional
	//    ( InModesKeywords '('
	//    inMode+=[aadl2::Mode|ID] (',' inMode+=[aadl2::Mode|ID])*
	//    ')')?
	//    ;
	public PropertiesGrammarAccess.OptionalModalPropertyValueElements getOptionalModalPropertyValueAccess() {
		return gaProperties.getOptionalModalPropertyValueAccess();
	}
	
	public ParserRule getOptionalModalPropertyValueRule() {
		return getOptionalModalPropertyValueAccess().getRule();
	}
	
	//    // &&&&&&&&&& handling of in binding
	//PropertyValue returns aadl2::ModalPropertyValue:
	//    ownedValue=PropertyExpression
	//    ;
	public PropertiesGrammarAccess.PropertyValueElements getPropertyValueAccess() {
		return gaProperties.getPropertyValueAccess();
	}
	
	public ParserRule getPropertyValueRule() {
		return getPropertyValueAccess().getRule();
	}
	
	//PropertyExpression returns aadl2::PropertyExpression:
	////    OldRecordTerm |
	//      RecordTerm | ReferenceTerm | ComponentClassifierTerm
	//     | ComputedTerm | StringTerm |  NumericRangeTerm
	//    | RealTerm | IntegerTerm
	//          | ListTerm
	//          | BooleanLiteral | LiteralorReferenceTerm
	//    ;
	public PropertiesGrammarAccess.PropertyExpressionElements getPropertyExpressionAccess() {
		return gaProperties.getPropertyExpressionAccess();
	}
	
	public ParserRule getPropertyExpressionRule() {
		return getPropertyExpressionAccess().getRule();
	}
	
	//LiteralorReferenceTerm returns aadl2::NamedValue:
	//  namedValue=[aadl2::AbstractNamedValue|QPREF]
	//;
	public PropertiesGrammarAccess.LiteralorReferenceTermElements getLiteralorReferenceTermAccess() {
		return gaProperties.getLiteralorReferenceTermAccess();
	}
	
	public ParserRule getLiteralorReferenceTermRule() {
		return getLiteralorReferenceTermAccess().getRule();
	}
	
	//BooleanLiteral returns aadl2::BooleanLiteral:
	//  {aadl2::BooleanLiteral}(value?='true'|'false')
	//  ;
	public PropertiesGrammarAccess.BooleanLiteralElements getBooleanLiteralAccess() {
		return gaProperties.getBooleanLiteralAccess();
	}
	
	public ParserRule getBooleanLiteralRule() {
		return getBooleanLiteralAccess().getRule();
	}
	
	//ConstantValue returns aadl2::NamedValue:
	//  namedValue=[aadl2::PropertyConstant|QPREF]
	//  ;
	public PropertiesGrammarAccess.ConstantValueElements getConstantValueAccess() {
		return gaProperties.getConstantValueAccess();
	}
	
	public ParserRule getConstantValueRule() {
		return getConstantValueAccess().getRule();
	}
	
	//ReferenceTerm returns aadl2::ReferenceValue:
	//  'reference' '('
	//  path=ContainmentPathElement
	////    ( 'annex' ID '{**'
	////    containmentPathElement+=ContainmentPathElement
	////    ( '.' containmentPathElement+=ContainmentPathElement)*
	////    '**}')?
	//  ')'
	//  ;
	public PropertiesGrammarAccess.ReferenceTermElements getReferenceTermAccess() {
		return gaProperties.getReferenceTermAccess();
	}
	
	public ParserRule getReferenceTermRule() {
		return getReferenceTermAccess().getRule();
	}
	
	//RecordTerm returns aadl2::RecordValue:
	//   '['
	//   (ownedFieldValue+=FieldPropertyAssociation)+
	//  ']'
	//  ;
	public PropertiesGrammarAccess.RecordTermElements getRecordTermAccess() {
		return gaProperties.getRecordTermAccess();
	}
	
	public ParserRule getRecordTermRule() {
		return getRecordTermAccess().getRule();
	}
	
	//OldRecordTerm returns aadl2::RecordValue:
	//   '('
	//   (ownedFieldValue+=FieldPropertyAssociation)+
	//  ')'
	//  ;
	public PropertiesGrammarAccess.OldRecordTermElements getOldRecordTermAccess() {
		return gaProperties.getOldRecordTermAccess();
	}
	
	public ParserRule getOldRecordTermRule() {
		return getOldRecordTermAccess().getRule();
	}
	
	//ComputedTerm returns aadl2::ComputedValue:
	//   'compute' '('
	//   function=ID
	//  ')'
	//  ;
	public PropertiesGrammarAccess.ComputedTermElements getComputedTermAccess() {
		return gaProperties.getComputedTermAccess();
	}
	
	public ParserRule getComputedTermRule() {
		return getComputedTermAccess().getRule();
	}
	
	//ComponentClassifierTerm returns aadl2::ClassifierValue:
	//   'classifier' '('
	//   classifier=[aadl2::ComponentClassifier|QCREF]
	//  ')'
	//  ;
	public PropertiesGrammarAccess.ComponentClassifierTermElements getComponentClassifierTermAccess() {
		return gaProperties.getComponentClassifierTermAccess();
	}
	
	public ParserRule getComponentClassifierTermRule() {
		return getComponentClassifierTermAccess().getRule();
	}
	
	//ListTerm returns aadl2::ListValue:
	//    {aadl2::ListValue}
	//   '('
	//   (ownedListElement+=(PropertyExpression)
	//   (',' ownedListElement+=(PropertyExpression))*)?
	//  ')'
	//  ;
	public PropertiesGrammarAccess.ListTermElements getListTermAccess() {
		return gaProperties.getListTermAccess();
	}
	
	public ParserRule getListTermRule() {
		return getListTermAccess().getRule();
	}
	
	//FieldPropertyAssociation returns aadl2::BasicPropertyAssociation:
	//    property=[aadl2::BasicProperty|ID]
	//    '=>'
	//    ownedValue=PropertyExpression
	//    ';';
	public PropertiesGrammarAccess.FieldPropertyAssociationElements getFieldPropertyAssociationAccess() {
		return gaProperties.getFieldPropertyAssociationAccess();
	}
	
	public ParserRule getFieldPropertyAssociationRule() {
		return getFieldPropertyAssociationAccess().getRule();
	}
	
	//// from AADL2
	//// need to add annex path element
	//ContainmentPathElement returns aadl2::ContainmentPathElement:
	//    (
	//        (
	//            namedElement=[aadl2::NamedElement|ID]
	//             (arrayRange+=ArrayRange)*
	//        )
	//        ('.' path=ContainmentPathElement)?
	////     |      'annex' namedElement=[aadl2::NamedElement|ID]
	//    )
	//;
	public PropertiesGrammarAccess.ContainmentPathElementElements getContainmentPathElementAccess() {
		return gaProperties.getContainmentPathElementAccess();
	}
	
	public ParserRule getContainmentPathElementRule() {
		return getContainmentPathElementAccess().getRule();
	}
	
	//ANNEXREF :
	//    // check what values are ok inside ** **
	//    '{' STAR STAR ID STAR STAR '}';
	public PropertiesGrammarAccess.ANNEXREFElements getANNEXREFAccess() {
		return gaProperties.getANNEXREFAccess();
	}
	
	public ParserRule getANNEXREFRule() {
		return getANNEXREFAccess().getRule();
	}
	
	//PlusMinus returns aadl2::OperationKind: '+' | '-';
	public PropertiesGrammarAccess.PlusMinusElements getPlusMinusAccess() {
		return gaProperties.getPlusMinusAccess();
	}
	
	public ParserRule getPlusMinusRule() {
		return getPlusMinusAccess().getRule();
	}
	
	//StringTerm returns aadl2::StringLiteral:
	//    value=NoQuoteString ;
	public PropertiesGrammarAccess.StringTermElements getStringTermAccess() {
		return gaProperties.getStringTermAccess();
	}
	
	public ParserRule getStringTermRule() {
		return getStringTermAccess().getRule();
	}
	
	//NoQuoteString :
	//    // remove quotes from string in ValueConverter
	//    STRING
	//;
	public PropertiesGrammarAccess.NoQuoteStringElements getNoQuoteStringAccess() {
		return gaProperties.getNoQuoteStringAccess();
	}
	
	public ParserRule getNoQuoteStringRule() {
		return getNoQuoteStringAccess().getRule();
	}
	
	//ArrayRange returns aadl2::ArrayRange: {aadl2::ArrayRange}
	//    '[' lowerBound=INTVALUE ('..' upperBound=INTVALUE)?
	//    ']'
	//;
	public PropertiesGrammarAccess.ArrayRangeElements getArrayRangeAccess() {
		return gaProperties.getArrayRangeAccess();
	}
	
	public ParserRule getArrayRangeRule() {
		return getArrayRangeAccess().getRule();
	}
	
	//SignedConstant returns aadl2::Operation:
	//    op=PlusMinus ownedPropertyExpression+=ConstantValue
	//    ;
	public PropertiesGrammarAccess.SignedConstantElements getSignedConstantAccess() {
		return gaProperties.getSignedConstantAccess();
	}
	
	public ParserRule getSignedConstantRule() {
		return getSignedConstantAccess().getRule();
	}
	
	//IntegerTerm returns aadl2::IntegerLiteral:
	//    value=SignedInt (unit=[aadl2::UnitLiteral|ID])?
	//    ;
	public PropertiesGrammarAccess.IntegerTermElements getIntegerTermAccess() {
		return gaProperties.getIntegerTermAccess();
	}
	
	public ParserRule getIntegerTermRule() {
		return getIntegerTermAccess().getRule();
	}
	
	//SignedInt returns aadl2::Integer:
	//    ('+'|'-')?INTEGER_LIT ;
	public PropertiesGrammarAccess.SignedIntElements getSignedIntAccess() {
		return gaProperties.getSignedIntAccess();
	}
	
	public ParserRule getSignedIntRule() {
		return getSignedIntAccess().getRule();
	}
	
	//RealTerm returns aadl2::RealLiteral:
	//    value=SignedReal (unit=[aadl2::UnitLiteral|ID])?
	//    ;
	public PropertiesGrammarAccess.RealTermElements getRealTermAccess() {
		return gaProperties.getRealTermAccess();
	}
	
	public ParserRule getRealTermRule() {
		return getRealTermAccess().getRule();
	}
	
	//SignedReal returns aadl2::Real:
	//    ('+'|'-')?REAL_LIT ;
	public PropertiesGrammarAccess.SignedRealElements getSignedRealAccess() {
		return gaProperties.getSignedRealAccess();
	}
	
	public ParserRule getSignedRealRule() {
		return getSignedRealAccess().getRule();
	}
	
	//NumericRangeTerm returns aadl2::RangeValue:
	//    minimum=NumAlt //(RealTerm|IntegerTerm| SignedConstant | ConstantValue)
	//        '..' maximum=NumAlt//(RealTerm|IntegerTerm| SignedConstant | ConstantValue)
	//    ( 'delta' delta=NumAlt//(RealTerm|IntegerTerm| SignedConstant | ConstantValue)
	//    )?
	//    ;
	public PropertiesGrammarAccess.NumericRangeTermElements getNumericRangeTermAccess() {
		return gaProperties.getNumericRangeTermAccess();
	}
	
	public ParserRule getNumericRangeTermRule() {
		return getNumericRangeTermAccess().getRule();
	}
	
	//NumAlt  returns aadl2::PropertyExpression:
	//    RealTerm|IntegerTerm| SignedConstant | ConstantValue
	//;
	public PropertiesGrammarAccess.NumAltElements getNumAltAccess() {
		return gaProperties.getNumAltAccess();
	}
	
	public ParserRule getNumAltRule() {
		return getNumAltAccess().getRule();
	}
	
	//AppliesToKeywords:
	//    'applies' 'to'
	//;
	public PropertiesGrammarAccess.AppliesToKeywordsElements getAppliesToKeywordsAccess() {
		return gaProperties.getAppliesToKeywordsAccess();
	}
	
	public ParserRule getAppliesToKeywordsRule() {
		return getAppliesToKeywordsAccess().getRule();
	}
	
	//InBindingKeywords:
	//    'in' 'binding'
	//;
	public PropertiesGrammarAccess.InBindingKeywordsElements getInBindingKeywordsAccess() {
		return gaProperties.getInBindingKeywordsAccess();
	}
	
	public ParserRule getInBindingKeywordsRule() {
		return getInBindingKeywordsAccess().getRule();
	}
	
	//InModesKeywords:
	//    'in' 'modes'
	//;
	public PropertiesGrammarAccess.InModesKeywordsElements getInModesKeywordsAccess() {
		return gaProperties.getInModesKeywordsAccess();
	}
	
	public ParserRule getInModesKeywordsRule() {
		return getInModesKeywordsAccess().getRule();
	}
	
	//terminal SL_COMMENT:
	//    '--' !('\n' | '\r')* ('\r'? '\n')?;
	public TerminalRule getSL_COMMENTRule() {
		return gaProperties.getSL_COMMENTRule();
	}
	
	//INTVALUE returns aadl2::Integer:
	//    INTEGER_LIT //NUMERAL
	//;
	public PropertiesGrammarAccess.INTVALUEElements getINTVALUEAccess() {
		return gaProperties.getINTVALUEAccess();
	}
	
	public ParserRule getINTVALUERule() {
		return getINTVALUEAccess().getRule();
	}
	
	////terminal NUMERAL:
	////    (DIGIT)+('_' (DIGIT)+)*
	////;
	////terminal INT returns ecore::EInt: (DIGIT)+('_' (DIGIT)+)*;
	//terminal fragment
	//EXPONENT  :  ('e'|'E') ('+'|'-')? ( DIGIT )+  ;
	public TerminalRule getEXPONENTRule() {
		return gaProperties.getEXPONENTRule();
	}
	
	//terminal fragment
	//INT_EXPONENT :  ('e'|'E') ('+')? ( DIGIT )+ ;
	public TerminalRule getINT_EXPONENTRule() {
		return gaProperties.getINT_EXPONENTRule();
	}
	
	//terminal REAL_LIT :
	//    (DIGIT)+('_' (DIGIT)+)* ( '.' (DIGIT)+('_' (DIGIT)+)* ( EXPONENT )?)
	//  ;
	public TerminalRule getREAL_LITRule() {
		return gaProperties.getREAL_LITRule();
	}
	
	//terminal INTEGER_LIT :
	//        (DIGIT)+('_' (DIGIT)+)*
	//        (( '#' BASED_INTEGER  '#' ( INT_EXPONENT )? )
	//            | (INT_EXPONENT)?
	//        )
	//  ;
	public TerminalRule getINTEGER_LITRule() {
		return gaProperties.getINTEGER_LITRule();
	}
	
	//terminal fragment
	//DIGIT     :  ( '0'..'9' ) ;
	public TerminalRule getDIGITRule() {
		return gaProperties.getDIGITRule();
	}
	
	//terminal fragment
	//EXTENDED_DIGIT     :  ( '0'..'9' | 'a'..'f' | 'A'..'F') ;
	public TerminalRule getEXTENDED_DIGITRule() {
		return gaProperties.getEXTENDED_DIGITRule();
	}
	
	//terminal fragment
	//BASED_INTEGER      :  ( EXTENDED_DIGIT ) ( ('_')? EXTENDED_DIGIT )* ;
	public TerminalRule getBASED_INTEGERRule() {
		return gaProperties.getBASED_INTEGERRule();
	}
	
	//QCLREF:
	//    ID '::' ID;
	public PropertiesGrammarAccess.QCLREFElements getQCLREFAccess() {
		return gaProperties.getQCLREFAccess();
	}
	
	public ParserRule getQCLREFRule() {
		return getQCLREFAccess().getRule();
	}
	
	//QPREF:
	//    ID ('::' ID)?;
	public PropertiesGrammarAccess.QPREFElements getQPREFAccess() {
		return gaProperties.getQPREFAccess();
	}
	
	public ParserRule getQPREFRule() {
		return getQPREFAccess().getRule();
	}
	
	//QCREF:
	//    (ID '::')* ID ('.' ID)?;
	public PropertiesGrammarAccess.QCREFElements getQCREFAccess() {
		return gaProperties.getQCREFAccess();
	}
	
	public ParserRule getQCREFRule() {
		return getQCREFAccess().getRule();
	}
	
	//STAR : '*';
	public PropertiesGrammarAccess.STARElements getSTARAccess() {
		return gaProperties.getSTARAccess();
	}
	
	public ParserRule getSTARRule() {
		return getSTARAccess().getRule();
	}
	
	//terminal STRING    :
	//            '"' ( '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') | !('\\'|'"') )* '"' |
	//            "'" ( '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') | !('\\'|"'") )* "'"
	//        ;
	public TerminalRule getSTRINGRule() {
		return gaProperties.getSTRINGRule();
	}
	
	////terminal ID          : '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
	//terminal ID:    ('a'..'z'
	//        |'A'..'Z'
	//        ) ( ('_')? ('a'..'z'
	//        |'A'..'Z'
	//        |'0'..'9'))*;
	public TerminalRule getIDRule() {
		return gaProperties.getIDRule();
	}
	
	//terminal WS			: (' '|'\t'|'\r'|'\n')+;
	public TerminalRule getWSRule() {
		return gaProperties.getWSRule();
	}
}