CommonSemanticSequencer.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.alisa.common.serializer;

import com.google.inject.Inject;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Parameter;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.serializer.ISerializationContext;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
import org.osate.aadl2.Aadl2Package;
import org.osate.aadl2.AadlBoolean;
import org.osate.aadl2.AadlInteger;
import org.osate.aadl2.AadlReal;
import org.osate.aadl2.AadlString;
import org.osate.aadl2.BooleanLiteral;
import org.osate.aadl2.IntegerLiteral;
import org.osate.aadl2.RealLiteral;
import org.osate.aadl2.StringLiteral;
import org.osate.alisa.common.common.ABinaryOperation;
import org.osate.alisa.common.common.AConditional;
import org.osate.alisa.common.common.AFunctionCall;
import org.osate.alisa.common.common.AModelReference;
import org.osate.alisa.common.common.APropertyReference;
import org.osate.alisa.common.common.ARange;
import org.osate.alisa.common.common.AUnaryOperation;
import org.osate.alisa.common.common.AUnitExpression;
import org.osate.alisa.common.common.AVariableReference;
import org.osate.alisa.common.common.CommonPackage;
import org.osate.alisa.common.common.ComputeDeclaration;
import org.osate.alisa.common.common.Description;
import org.osate.alisa.common.common.DescriptionElement;
import org.osate.alisa.common.common.ImageReference;
import org.osate.alisa.common.common.ModelRef;
import org.osate.alisa.common.common.PropertyRef;
import org.osate.alisa.common.common.Rationale;
import org.osate.alisa.common.common.TypeRef;
import org.osate.alisa.common.common.Uncertainty;
import org.osate.alisa.common.common.ValDeclaration;
import org.osate.alisa.common.services.CommonGrammarAccess;

@SuppressWarnings("all")
public class CommonSemanticSequencer extends AbstractDelegatingSemanticSequencer {

	@Inject
	private CommonGrammarAccess grammarAccess;
	
	@Override
	public void sequence(ISerializationContext context, EObject semanticObject) {
		EPackage epackage = semanticObject.eClass().getEPackage();
		ParserRule rule = context.getParserRule();
		Action action = context.getAssignedAction();
		Set<Parameter> parameters = context.getEnabledBooleanParameters();
		if (epackage == Aadl2Package.eINSTANCE)
			switch (semanticObject.eClass().getClassifierID()) {
			case Aadl2Package.AADL_BOOLEAN:
				sequence_TypeRef(context, (AadlBoolean) semanticObject); 
				return; 
			case Aadl2Package.AADL_INTEGER:
				sequence_TypeRef(context, (AadlInteger) semanticObject); 
				return; 
			case Aadl2Package.AADL_REAL:
				sequence_TypeRef(context, (AadlReal) semanticObject); 
				return; 
			case Aadl2Package.AADL_STRING:
				sequence_TypeRef(context, (AadlString) semanticObject); 
				return; 
			case Aadl2Package.BOOLEAN_LITERAL:
				sequence_ABooleanLiteral(context, (BooleanLiteral) semanticObject); 
				return; 
			case Aadl2Package.INTEGER_LITERAL:
				sequence_AIntegerTerm(context, (IntegerLiteral) semanticObject); 
				return; 
			case Aadl2Package.REAL_LITERAL:
				sequence_ARealTerm(context, (RealLiteral) semanticObject); 
				return; 
			case Aadl2Package.STRING_LITERAL:
				sequence_StringTerm(context, (StringLiteral) semanticObject); 
				return; 
			}
		else if (epackage == CommonPackage.eINSTANCE)
			switch (semanticObject.eClass().getClassifierID()) {
			case CommonPackage.ABINARY_OPERATION:
				sequence_AAdditiveExpression_AAndExpression_AEqualityExpression_AMultiplicativeExpression_AOrExpression_ARelationalExpression(context, (ABinaryOperation) semanticObject); 
				return; 
			case CommonPackage.ACONDITIONAL:
				sequence_AIfExpression(context, (AConditional) semanticObject); 
				return; 
			case CommonPackage.AFUNCTION_CALL:
				sequence_AFunctionCall(context, (AFunctionCall) semanticObject); 
				return; 
			case CommonPackage.AMODEL_REFERENCE:
				sequence_AModelReference(context, (AModelReference) semanticObject); 
				return; 
			case CommonPackage.APROPERTY_REFERENCE:
				if (rule == grammarAccess.getAModelOrPropertyReferenceRule()
						|| rule == grammarAccess.getAExpressionRule()
						|| rule == grammarAccess.getAOrExpressionRule()
						|| action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAAndExpressionRule()
						|| action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAEqualityExpressionRule()
						|| action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getARelationalExpressionRule()
						|| action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAAdditiveExpressionRule()
						|| action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAMultiplicativeExpressionRule()
						|| action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAUnaryOperationRule()
						|| rule == grammarAccess.getAUnitExpressionRule()
						|| action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0()
						|| rule == grammarAccess.getAPrimaryExpressionRule()
						|| rule == grammarAccess.getAParenthesizedExpressionRule()) {
					sequence_AModelOrPropertyReference_APropertyReference(context, (APropertyReference) semanticObject); 
					return; 
				}
				else if (rule == grammarAccess.getAPropertyReferenceRule()) {
					sequence_APropertyReference(context, (APropertyReference) semanticObject); 
					return; 
				}
				else break;
			case CommonPackage.ARANGE:
				sequence_ARangeExpression(context, (ARange) semanticObject); 
				return; 
			case CommonPackage.AUNARY_OPERATION:
				sequence_AUnaryOperation(context, (AUnaryOperation) semanticObject); 
				return; 
			case CommonPackage.AUNIT_EXPRESSION:
				if (rule == grammarAccess.getAExpressionRule()
						|| rule == grammarAccess.getAOrExpressionRule()
						|| action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAAndExpressionRule()
						|| action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAEqualityExpressionRule()
						|| action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getARelationalExpressionRule()
						|| action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAAdditiveExpressionRule()
						|| action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAMultiplicativeExpressionRule()
						|| action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0()
						|| rule == grammarAccess.getAUnaryOperationRule()
						|| rule == grammarAccess.getAUnitExpressionRule()
						|| action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0()
						|| rule == grammarAccess.getAPrimaryExpressionRule()
						|| rule == grammarAccess.getAParenthesizedExpressionRule()) {
					sequence_AUnitExpression(context, (AUnitExpression) semanticObject); 
					return; 
				}
				else if (rule == grammarAccess.getShowValueRule()) {
					sequence_ShowValue(context, (AUnitExpression) semanticObject); 
					return; 
				}
				else break;
			case CommonPackage.AVARIABLE_REFERENCE:
				sequence_AVariableReference(context, (AVariableReference) semanticObject); 
				return; 
			case CommonPackage.COMPUTE_DECLARATION:
				sequence_ComputeDeclaration(context, (ComputeDeclaration) semanticObject); 
				return; 
			case CommonPackage.DESCRIPTION:
				sequence_Description(context, (Description) semanticObject); 
				return; 
			case CommonPackage.DESCRIPTION_ELEMENT:
				sequence_DescriptionElement(context, (DescriptionElement) semanticObject); 
				return; 
			case CommonPackage.IMAGE_REFERENCE:
				sequence_ImageReference(context, (ImageReference) semanticObject); 
				return; 
			case CommonPackage.MODEL_REF:
				sequence_TypeRef(context, (ModelRef) semanticObject); 
				return; 
			case CommonPackage.PROPERTY_REF:
				sequence_PropertyRef(context, (PropertyRef) semanticObject); 
				return; 
			case CommonPackage.RATIONALE:
				sequence_Rationale(context, (Rationale) semanticObject); 
				return; 
			case CommonPackage.TYPE_REF:
				sequence_TypeRef(context, (TypeRef) semanticObject); 
				return; 
			case CommonPackage.UNCERTAINTY:
				sequence_Uncertainty(context, (Uncertainty) semanticObject); 
				return; 
			case CommonPackage.VAL_DECLARATION:
				sequence_ValDeclaration(context, (ValDeclaration) semanticObject); 
				return; 
			}
		if (errorAcceptor != null)
			errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
	}
	
	/**
	 * Contexts:
	 *     AExpression returns ABinaryOperation
	 *     AOrExpression returns ABinaryOperation
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     AAndExpression returns ABinaryOperation
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     AEqualityExpression returns ABinaryOperation
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     ARelationalExpression returns ABinaryOperation
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     AAdditiveExpression returns ABinaryOperation
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     AMultiplicativeExpression returns ABinaryOperation
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns ABinaryOperation
	 *     AUnaryOperation returns ABinaryOperation
	 *     AUnitExpression returns ABinaryOperation
	 *     AUnitExpression.AUnitExpression_1_0 returns ABinaryOperation
	 *     APrimaryExpression returns ABinaryOperation
	 *     AParenthesizedExpression returns ABinaryOperation
	 *
	 * Constraint:
	 *     (
	 *         (left=AOrExpression_ABinaryOperation_1_0_0_0 operator=OpOr right=AAndExpression) | 
	 *         (left=AAndExpression_ABinaryOperation_1_0_0_0 operator=OpAnd right=AEqualityExpression) | 
	 *         (left=AEqualityExpression_ABinaryOperation_1_0_0_0 operator=OpEquality right=ARelationalExpression) | 
	 *         (left=ARelationalExpression_ABinaryOperation_1_0_0_0 operator=OpCompare right=AAdditiveExpression) | 
	 *         (left=AAdditiveExpression_ABinaryOperation_1_0_0_0 operator=OpAdd right=AMultiplicativeExpression) | 
	 *         (left=AMultiplicativeExpression_ABinaryOperation_1_0_0_0 operator=OpMulti right=AUnaryOperation)
	 *     )
	 */
	protected void sequence_AAdditiveExpression_AAndExpression_AEqualityExpression_AMultiplicativeExpression_AOrExpression_ARelationalExpression(ISerializationContext context, ABinaryOperation semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns BooleanLiteral
	 *     AOrExpression returns BooleanLiteral
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     AAndExpression returns BooleanLiteral
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     AEqualityExpression returns BooleanLiteral
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     ARelationalExpression returns BooleanLiteral
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     AAdditiveExpression returns BooleanLiteral
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     AMultiplicativeExpression returns BooleanLiteral
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns BooleanLiteral
	 *     AUnaryOperation returns BooleanLiteral
	 *     AUnitExpression returns BooleanLiteral
	 *     AUnitExpression.AUnitExpression_1_0 returns BooleanLiteral
	 *     APrimaryExpression returns BooleanLiteral
	 *     ALiteral returns BooleanLiteral
	 *     ABooleanLiteral returns BooleanLiteral
	 *     AParenthesizedExpression returns BooleanLiteral
	 *
	 * Constraint:
	 *     value?='true'?
	 */
	protected void sequence_ABooleanLiteral(ISerializationContext context, BooleanLiteral semanticObject) {
		genericSequencer.createSequence(context, (EObject) semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns AFunctionCall
	 *     AOrExpression returns AFunctionCall
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     AAndExpression returns AFunctionCall
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     AEqualityExpression returns AFunctionCall
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     ARelationalExpression returns AFunctionCall
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     AAdditiveExpression returns AFunctionCall
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     AMultiplicativeExpression returns AFunctionCall
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AFunctionCall
	 *     AUnaryOperation returns AFunctionCall
	 *     AUnitExpression returns AFunctionCall
	 *     AUnitExpression.AUnitExpression_1_0 returns AFunctionCall
	 *     APrimaryExpression returns AFunctionCall
	 *     AFunctionCall returns AFunctionCall
	 *     AParenthesizedExpression returns AFunctionCall
	 *
	 * Constraint:
	 *     (function=QualifiedName (arguments+=AExpression arguments+=AExpression*)?)
	 */
	protected void sequence_AFunctionCall(ISerializationContext context, AFunctionCall semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns AConditional
	 *     AOrExpression returns AConditional
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     AAndExpression returns AConditional
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     AEqualityExpression returns AConditional
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     ARelationalExpression returns AConditional
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     AAdditiveExpression returns AConditional
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     AMultiplicativeExpression returns AConditional
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AConditional
	 *     AUnaryOperation returns AConditional
	 *     AUnitExpression returns AConditional
	 *     AUnitExpression.AUnitExpression_1_0 returns AConditional
	 *     APrimaryExpression returns AConditional
	 *     AIfExpression returns AConditional
	 *     AParenthesizedExpression returns AConditional
	 *
	 * Constraint:
	 *     (if=AExpression then=AExpression else=AExpression?)
	 */
	protected void sequence_AIfExpression(ISerializationContext context, AConditional semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns IntegerLiteral
	 *     AOrExpression returns IntegerLiteral
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     AAndExpression returns IntegerLiteral
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     AEqualityExpression returns IntegerLiteral
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     ARelationalExpression returns IntegerLiteral
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     AAdditiveExpression returns IntegerLiteral
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     AMultiplicativeExpression returns IntegerLiteral
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns IntegerLiteral
	 *     AUnaryOperation returns IntegerLiteral
	 *     AUnitExpression returns IntegerLiteral
	 *     AUnitExpression.AUnitExpression_1_0 returns IntegerLiteral
	 *     APrimaryExpression returns IntegerLiteral
	 *     ALiteral returns IntegerLiteral
	 *     AIntegerTerm returns IntegerLiteral
	 *     AParenthesizedExpression returns IntegerLiteral
	 *
	 * Constraint:
	 *     value=AInt
	 */
	protected void sequence_AIntegerTerm(ISerializationContext context, IntegerLiteral semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient((EObject) semanticObject, Aadl2Package.eINSTANCE.getIntegerLiteral_Value()) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing((EObject) semanticObject, Aadl2Package.eINSTANCE.getIntegerLiteral_Value()));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, (EObject) semanticObject);
		feeder.accept(grammarAccess.getAIntegerTermAccess().getValueAIntParserRuleCall_0(), semanticObject.getValue());
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     AModelOrPropertyReference returns APropertyReference
	 *     AExpression returns APropertyReference
	 *     AOrExpression returns APropertyReference
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     AAndExpression returns APropertyReference
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     AEqualityExpression returns APropertyReference
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     ARelationalExpression returns APropertyReference
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     AAdditiveExpression returns APropertyReference
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     AMultiplicativeExpression returns APropertyReference
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns APropertyReference
	 *     AUnaryOperation returns APropertyReference
	 *     AUnitExpression returns APropertyReference
	 *     AUnitExpression.AUnitExpression_1_0 returns APropertyReference
	 *     APrimaryExpression returns APropertyReference
	 *     AParenthesizedExpression returns APropertyReference
	 *
	 * Constraint:
	 *     (
	 *         (modelElementReference=AModelOrPropertyReference_APropertyReference_0_1_0_0_0 property=[AbstractNamedValue|AADLPROPERTYREFERENCE]) | 
	 *         property=[AbstractNamedValue|AADLPROPERTYREFERENCE]
	 *     )
	 */
	protected void sequence_AModelOrPropertyReference_APropertyReference(ISerializationContext context, APropertyReference semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AModelOrPropertyReference returns AModelReference
	 *     AModelOrPropertyReference.APropertyReference_0_1_0_0_0 returns AModelReference
	 *     AModelReference returns AModelReference
	 *     AModelReference.AModelReference_1_0 returns AModelReference
	 *     AExpression returns AModelReference
	 *     AOrExpression returns AModelReference
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     AAndExpression returns AModelReference
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     AEqualityExpression returns AModelReference
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     ARelationalExpression returns AModelReference
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     AAdditiveExpression returns AModelReference
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     AMultiplicativeExpression returns AModelReference
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AModelReference
	 *     AUnaryOperation returns AModelReference
	 *     AUnitExpression returns AModelReference
	 *     AUnitExpression.AUnitExpression_1_0 returns AModelReference
	 *     APrimaryExpression returns AModelReference
	 *     AParenthesizedExpression returns AModelReference
	 *
	 * Constraint:
	 *     (modelElement=[NamedElement|ThisKeyword] | (prev=AModelReference_AModelReference_1_0 modelElement=[NamedElement|ID]))
	 */
	protected void sequence_AModelReference(ISerializationContext context, AModelReference semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     APropertyReference returns APropertyReference
	 *
	 * Constraint:
	 *     property=[AbstractNamedValue|AADLPROPERTYREFERENCE]
	 */
	protected void sequence_APropertyReference(ISerializationContext context, APropertyReference semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.APROPERTY_REFERENCE__PROPERTY) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.APROPERTY_REFERENCE__PROPERTY));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getAPropertyReferenceAccess().getPropertyAbstractNamedValueAADLPROPERTYREFERENCEParserRuleCall_2_0_1(), semanticObject.eGet(CommonPackage.Literals.APROPERTY_REFERENCE__PROPERTY, false));
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns ARange
	 *     AOrExpression returns ARange
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     AAndExpression returns ARange
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     AEqualityExpression returns ARange
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     ARelationalExpression returns ARange
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     AAdditiveExpression returns ARange
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     AMultiplicativeExpression returns ARange
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns ARange
	 *     AUnaryOperation returns ARange
	 *     AUnitExpression returns ARange
	 *     AUnitExpression.AUnitExpression_1_0 returns ARange
	 *     APrimaryExpression returns ARange
	 *     ARangeExpression returns ARange
	 *     AParenthesizedExpression returns ARange
	 *
	 * Constraint:
	 *     (minimum=AExpression maximum=AExpression delta=AExpression?)
	 */
	protected void sequence_ARangeExpression(ISerializationContext context, ARange semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns RealLiteral
	 *     AOrExpression returns RealLiteral
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     AAndExpression returns RealLiteral
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     AEqualityExpression returns RealLiteral
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     ARelationalExpression returns RealLiteral
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     AAdditiveExpression returns RealLiteral
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     AMultiplicativeExpression returns RealLiteral
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns RealLiteral
	 *     AUnaryOperation returns RealLiteral
	 *     AUnitExpression returns RealLiteral
	 *     AUnitExpression.AUnitExpression_1_0 returns RealLiteral
	 *     APrimaryExpression returns RealLiteral
	 *     ALiteral returns RealLiteral
	 *     ARealTerm returns RealLiteral
	 *     AParenthesizedExpression returns RealLiteral
	 *
	 * Constraint:
	 *     value=AReal
	 */
	protected void sequence_ARealTerm(ISerializationContext context, RealLiteral semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient((EObject) semanticObject, Aadl2Package.eINSTANCE.getRealLiteral_Value()) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing((EObject) semanticObject, Aadl2Package.eINSTANCE.getRealLiteral_Value()));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, (EObject) semanticObject);
		feeder.accept(grammarAccess.getARealTermAccess().getValueARealParserRuleCall_0(), semanticObject.getValue());
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns AUnaryOperation
	 *     AOrExpression returns AUnaryOperation
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     AAndExpression returns AUnaryOperation
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     AEqualityExpression returns AUnaryOperation
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     ARelationalExpression returns AUnaryOperation
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     AAdditiveExpression returns AUnaryOperation
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     AMultiplicativeExpression returns AUnaryOperation
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AUnaryOperation
	 *     AUnaryOperation returns AUnaryOperation
	 *     AUnitExpression returns AUnaryOperation
	 *     AUnitExpression.AUnitExpression_1_0 returns AUnaryOperation
	 *     APrimaryExpression returns AUnaryOperation
	 *     AParenthesizedExpression returns AUnaryOperation
	 *
	 * Constraint:
	 *     (operator=OpUnary operand=AUnaryOperation)
	 */
	protected void sequence_AUnaryOperation(ISerializationContext context, AUnaryOperation semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.AUNARY_OPERATION__OPERATOR) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.AUNARY_OPERATION__OPERATOR));
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.AUNARY_OPERATION__OPERAND) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.AUNARY_OPERATION__OPERAND));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getAUnaryOperationAccess().getOperatorOpUnaryParserRuleCall_0_1_0(), semanticObject.getOperator());
		feeder.accept(grammarAccess.getAUnaryOperationAccess().getOperandAUnaryOperationParserRuleCall_0_2_0(), semanticObject.getOperand());
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns AUnitExpression
	 *     AOrExpression returns AUnitExpression
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     AAndExpression returns AUnitExpression
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     AEqualityExpression returns AUnitExpression
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     ARelationalExpression returns AUnitExpression
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     AAdditiveExpression returns AUnitExpression
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     AMultiplicativeExpression returns AUnitExpression
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AUnitExpression
	 *     AUnaryOperation returns AUnitExpression
	 *     AUnitExpression returns AUnitExpression
	 *     AUnitExpression.AUnitExpression_1_0 returns AUnitExpression
	 *     APrimaryExpression returns AUnitExpression
	 *     AParenthesizedExpression returns AUnitExpression
	 *
	 * Constraint:
	 *     (expression=AUnitExpression_AUnitExpression_1_0 (convert?='%' | drop?='in')? unit=[UnitLiteral|ID])
	 */
	protected void sequence_AUnitExpression(ISerializationContext context, AUnitExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AVariableReference returns AVariableReference
	 *     AExpression returns AVariableReference
	 *     AOrExpression returns AVariableReference
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     AAndExpression returns AVariableReference
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     AEqualityExpression returns AVariableReference
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     ARelationalExpression returns AVariableReference
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     AAdditiveExpression returns AVariableReference
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     AMultiplicativeExpression returns AVariableReference
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns AVariableReference
	 *     AUnaryOperation returns AVariableReference
	 *     AUnitExpression returns AVariableReference
	 *     AUnitExpression.AUnitExpression_1_0 returns AVariableReference
	 *     APrimaryExpression returns AVariableReference
	 *     AParenthesizedExpression returns AVariableReference
	 *
	 * Constraint:
	 *     variable=[AVariableDeclaration|ID]
	 */
	protected void sequence_AVariableReference(ISerializationContext context, AVariableReference semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.AVARIABLE_REFERENCE__VARIABLE) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.AVARIABLE_REFERENCE__VARIABLE));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getAVariableReferenceAccess().getVariableAVariableDeclarationIDTerminalRuleCall_1_0_1(), semanticObject.eGet(CommonPackage.Literals.AVARIABLE_REFERENCE__VARIABLE, false));
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     ComputeDeclaration returns ComputeDeclaration
	 *
	 * Constraint:
	 *     (name=ID (type=TypeRef | type=PropertyRef | (range?='[' (type=TypeRef | type=PropertyRef))))
	 */
	protected void sequence_ComputeDeclaration(ISerializationContext context, ComputeDeclaration semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     DescriptionElement returns DescriptionElement
	 *
	 * Constraint:
	 *     (text=STRING | thisTarget?='this' | image=ImageReference | showValue=ShowValue)
	 */
	protected void sequence_DescriptionElement(ISerializationContext context, DescriptionElement semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     Description returns Description
	 *
	 * Constraint:
	 *     description+=DescriptionElement+
	 */
	protected void sequence_Description(ISerializationContext context, Description semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     ImageReference returns ImageReference
	 *
	 * Constraint:
	 *     imgfile=IMGREF
	 */
	protected void sequence_ImageReference(ISerializationContext context, ImageReference semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.IMAGE_REFERENCE__IMGFILE) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.IMAGE_REFERENCE__IMGFILE));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getImageReferenceAccess().getImgfileIMGREFParserRuleCall_1_0(), semanticObject.getImgfile());
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     PropertyRef returns PropertyRef
	 *
	 * Constraint:
	 *     ref=[Property|AADLPROPERTYREFERENCE]
	 */
	protected void sequence_PropertyRef(ISerializationContext context, PropertyRef semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.PROPERTY_REF__REF) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.PROPERTY_REF__REF));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getPropertyRefAccess().getRefPropertyAADLPROPERTYREFERENCEParserRuleCall_1_0_1(), semanticObject.eGet(CommonPackage.Literals.PROPERTY_REF__REF, false));
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     Rationale returns Rationale
	 *
	 * Constraint:
	 *     description+=DescriptionElement+
	 */
	protected void sequence_Rationale(ISerializationContext context, Rationale semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     ShowValue returns AUnitExpression
	 *
	 * Constraint:
	 *     (expression=AVariableReference ((convert?='%' | drop?='in') unit=[UnitLiteral|ID])?)
	 */
	protected void sequence_ShowValue(ISerializationContext context, AUnitExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     AExpression returns StringLiteral
	 *     AOrExpression returns StringLiteral
	 *     AOrExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     AAndExpression returns StringLiteral
	 *     AAndExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     AEqualityExpression returns StringLiteral
	 *     AEqualityExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     ARelationalExpression returns StringLiteral
	 *     ARelationalExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     AAdditiveExpression returns StringLiteral
	 *     AAdditiveExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     AMultiplicativeExpression returns StringLiteral
	 *     AMultiplicativeExpression.ABinaryOperation_1_0_0_0 returns StringLiteral
	 *     AUnaryOperation returns StringLiteral
	 *     AUnitExpression returns StringLiteral
	 *     AUnitExpression.AUnitExpression_1_0 returns StringLiteral
	 *     APrimaryExpression returns StringLiteral
	 *     ALiteral returns StringLiteral
	 *     StringTerm returns StringLiteral
	 *     AParenthesizedExpression returns StringLiteral
	 *
	 * Constraint:
	 *     value=NoQuoteString
	 */
	protected void sequence_StringTerm(ISerializationContext context, StringLiteral semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient((EObject) semanticObject, Aadl2Package.eINSTANCE.getStringLiteral_Value()) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing((EObject) semanticObject, Aadl2Package.eINSTANCE.getStringLiteral_Value()));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, (EObject) semanticObject);
		feeder.accept(grammarAccess.getStringTermAccess().getValueNoQuoteStringParserRuleCall_0(), semanticObject.getValue());
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns AadlBoolean
	 *
	 * Constraint:
	 *     {AadlBoolean}
	 */
	protected void sequence_TypeRef(ISerializationContext context, AadlBoolean semanticObject) {
		genericSequencer.createSequence(context, (EObject) semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns AadlInteger
	 *
	 * Constraint:
	 *     referencedUnitsType=[UnitsType|AADLPROPERTYREFERENCE]?
	 */
	protected void sequence_TypeRef(ISerializationContext context, AadlInteger semanticObject) {
		genericSequencer.createSequence(context, (EObject) semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns AadlReal
	 *
	 * Constraint:
	 *     referencedUnitsType=[UnitsType|AADLPROPERTYREFERENCE]?
	 */
	protected void sequence_TypeRef(ISerializationContext context, AadlReal semanticObject) {
		genericSequencer.createSequence(context, (EObject) semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns AadlString
	 *
	 * Constraint:
	 *     {AadlString}
	 */
	protected void sequence_TypeRef(ISerializationContext context, AadlString semanticObject) {
		genericSequencer.createSequence(context, (EObject) semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns ModelRef
	 *
	 * Constraint:
	 *     {ModelRef}
	 */
	protected void sequence_TypeRef(ISerializationContext context, ModelRef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     TypeRef returns TypeRef
	 *
	 * Constraint:
	 *     ref=[PropertyType|AADLPROPERTYREFERENCE]
	 */
	protected void sequence_TypeRef(ISerializationContext context, TypeRef semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, CommonPackage.Literals.TYPE_REF__REF) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CommonPackage.Literals.TYPE_REF__REF));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getTypeRefAccess().getRefPropertyTypeAADLPROPERTYREFERENCEParserRuleCall_5_1_0_1(), semanticObject.eGet(CommonPackage.Literals.TYPE_REF__REF, false));
		feeder.finish();
	}
	
	
	/**
	 * Contexts:
	 *     Uncertainty returns Uncertainty
	 *
	 * Constraint:
	 *     (volatility=INT | precedence=INT | impact=INT)*
	 */
	protected void sequence_Uncertainty(ISerializationContext context, Uncertainty semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Contexts:
	 *     ValDeclaration returns ValDeclaration
	 *
	 * Constraint:
	 *     (name=ID (type=TypeRef | type=PropertyRef | (range?='[' (type=TypeRef | type=PropertyRef)))? value=AExpression)
	 */
	protected void sequence_ValDeclaration(ISerializationContext context, ValDeclaration semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
}