/**
 */
package org.etsi.mts.tdl.impl;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.etsi.mts.tdl.Action;
import org.etsi.mts.tdl.ActionReference;
import org.etsi.mts.tdl.AlternativeBehaviour;
import org.etsi.mts.tdl.Annotation;
import org.etsi.mts.tdl.AnnotationType;
import org.etsi.mts.tdl.AnyValue;
import org.etsi.mts.tdl.AnyValueOrOmit;
import org.etsi.mts.tdl.Assertion;
import org.etsi.mts.tdl.Assignment;
import org.etsi.mts.tdl.BehaviourDescription;
import org.etsi.mts.tdl.Block;
import org.etsi.mts.tdl.BoundedLoopBehaviour;
import org.etsi.mts.tdl.Break;
import org.etsi.mts.tdl.CollectionDataInstance;
import org.etsi.mts.tdl.CollectionDataType;
import org.etsi.mts.tdl.Comment;
import org.etsi.mts.tdl.ComponentInstance;
import org.etsi.mts.tdl.ComponentInstanceBinding;
import org.etsi.mts.tdl.ComponentInstanceRole;
import org.etsi.mts.tdl.ComponentType;
import org.etsi.mts.tdl.CompoundBehaviour;
import org.etsi.mts.tdl.ConditionalBehaviour;
import org.etsi.mts.tdl.Connection;
import org.etsi.mts.tdl.Constraint;
import org.etsi.mts.tdl.ConstraintType;
import org.etsi.mts.tdl.DataElementMapping;
import org.etsi.mts.tdl.DataElementUse;
import org.etsi.mts.tdl.DataInstanceUse;
import org.etsi.mts.tdl.DataResourceMapping;
import org.etsi.mts.tdl.DefaultBehaviour;
import org.etsi.mts.tdl.ElementImport;
import org.etsi.mts.tdl.EnumDataType;
import org.etsi.mts.tdl.Extension;
import org.etsi.mts.tdl.FormalParameter;
import org.etsi.mts.tdl.FormalParameterUse;
import org.etsi.mts.tdl.Function;
import org.etsi.mts.tdl.FunctionCall;
import org.etsi.mts.tdl.GateInstance;
import org.etsi.mts.tdl.GateReference;
import org.etsi.mts.tdl.GateType;
import org.etsi.mts.tdl.GateTypeKind;
import org.etsi.mts.tdl.InlineAction;
import org.etsi.mts.tdl.Interaction;
import org.etsi.mts.tdl.InterruptBehaviour;
import org.etsi.mts.tdl.LiteralValueUse;
import org.etsi.mts.tdl.LocalExpression;
import org.etsi.mts.tdl.Member;
import org.etsi.mts.tdl.MemberAssignment;
import org.etsi.mts.tdl.MemberReference;
import org.etsi.mts.tdl.Message;
import org.etsi.mts.tdl.OmitValue;
import org.etsi.mts.tdl.OptionalBehaviour;
import org.etsi.mts.tdl.ParallelBehaviour;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.ParameterKind;
import org.etsi.mts.tdl.ParameterMapping;
import org.etsi.mts.tdl.PeriodicBehaviour;
import org.etsi.mts.tdl.PredefinedFunction;
import org.etsi.mts.tdl.PredefinedFunctionCall;
import org.etsi.mts.tdl.ProcedureCall;
import org.etsi.mts.tdl.ProcedureParameter;
import org.etsi.mts.tdl.ProcedureSignature;
import org.etsi.mts.tdl.Quiescence;
import org.etsi.mts.tdl.SimpleDataInstance;
import org.etsi.mts.tdl.SimpleDataType;
import org.etsi.mts.tdl.Stop;
import org.etsi.mts.tdl.StructuredDataInstance;
import org.etsi.mts.tdl.StructuredDataType;
import org.etsi.mts.tdl.Target;
import org.etsi.mts.tdl.TestConfiguration;
import org.etsi.mts.tdl.TestDescription;
import org.etsi.mts.tdl.TestDescriptionReference;
import org.etsi.mts.tdl.TestObjective;
import org.etsi.mts.tdl.Time;
import org.etsi.mts.tdl.TimeConstraint;
import org.etsi.mts.tdl.TimeLabel;
import org.etsi.mts.tdl.TimeLabelUse;
import org.etsi.mts.tdl.TimeLabelUseKind;
import org.etsi.mts.tdl.TimeOut;
import org.etsi.mts.tdl.Timer;
import org.etsi.mts.tdl.TimerStart;
import org.etsi.mts.tdl.TimerStop;
import org.etsi.mts.tdl.UnassignedMemberTreatment;
import org.etsi.mts.tdl.UnboundedLoopBehaviour;
import org.etsi.mts.tdl.ValueAssignment;
import org.etsi.mts.tdl.Variable;
import org.etsi.mts.tdl.VariableUse;
import org.etsi.mts.tdl.VerdictAssignment;
import org.etsi.mts.tdl.Wait;
import org.etsi.mts.tdl.tdlFactory;
import org.etsi.mts.tdl.tdlPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class tdlFactoryImpl extends EFactoryImpl implements tdlFactory
{
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static tdlFactory init()
	{
		try
		{
			tdlFactory thetdlFactory = (tdlFactory)EPackage.Registry.INSTANCE.getEFactory(tdlPackage.eNS_URI);
			if (thetdlFactory != null)
			{
				return thetdlFactory;
			}
		}
		catch (Exception exception)
		{
			EcorePlugin.INSTANCE.log(exception);
		}
		return new tdlFactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public tdlFactoryImpl()
	{
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass)
	{
		switch (eClass.getClassifierID())
		{
			case tdlPackage.COMMENT: return createComment();
			case tdlPackage.ANNOTATION: return createAnnotation();
			case tdlPackage.ANNOTATION_TYPE: return createAnnotationType();
			case tdlPackage.PACKAGE: return createPackage();
			case tdlPackage.ELEMENT_IMPORT: return createElementImport();
			case tdlPackage.TEST_OBJECTIVE: return createTestObjective();
			case tdlPackage.DATA_RESOURCE_MAPPING: return createDataResourceMapping();
			case tdlPackage.DATA_ELEMENT_MAPPING: return createDataElementMapping();
			case tdlPackage.PARAMETER_MAPPING: return createParameterMapping();
			case tdlPackage.SIMPLE_DATA_TYPE: return createSimpleDataType();
			case tdlPackage.SIMPLE_DATA_INSTANCE: return createSimpleDataInstance();
			case tdlPackage.STRUCTURED_DATA_TYPE: return createStructuredDataType();
			case tdlPackage.MEMBER: return createMember();
			case tdlPackage.STRUCTURED_DATA_INSTANCE: return createStructuredDataInstance();
			case tdlPackage.MEMBER_ASSIGNMENT: return createMemberAssignment();
			case tdlPackage.PARAMETER_BINDING: return createParameterBinding();
			case tdlPackage.ACTION: return createAction();
			case tdlPackage.FORMAL_PARAMETER: return createFormalParameter();
			case tdlPackage.FUNCTION: return createFunction();
			case tdlPackage.FORMAL_PARAMETER_USE: return createFormalParameterUse();
			case tdlPackage.VARIABLE: return createVariable();
			case tdlPackage.FUNCTION_CALL: return createFunctionCall();
			case tdlPackage.VARIABLE_USE: return createVariableUse();
			case tdlPackage.COMPONENT_INSTANCE: return createComponentInstance();
			case tdlPackage.COMPONENT_TYPE: return createComponentType();
			case tdlPackage.GATE_INSTANCE: return createGateInstance();
			case tdlPackage.GATE_TYPE: return createGateType();
			case tdlPackage.TIMER: return createTimer();
			case tdlPackage.OMIT_VALUE: return createOmitValue();
			case tdlPackage.ANY_VALUE: return createAnyValue();
			case tdlPackage.ANY_VALUE_OR_OMIT: return createAnyValueOrOmit();
			case tdlPackage.DATA_INSTANCE_USE: return createDataInstanceUse();
			case tdlPackage.TIME: return createTime();
			case tdlPackage.TIME_LABEL: return createTimeLabel();
			case tdlPackage.TIME_CONSTRAINT: return createTimeConstraint();
			case tdlPackage.TIMER_START: return createTimerStart();
			case tdlPackage.TIMER_STOP: return createTimerStop();
			case tdlPackage.TIME_OUT: return createTimeOut();
			case tdlPackage.WAIT: return createWait();
			case tdlPackage.QUIESCENCE: return createQuiescence();
			case tdlPackage.GATE_REFERENCE: return createGateReference();
			case tdlPackage.TIME_LABEL_USE: return createTimeLabelUse();
			case tdlPackage.TEST_CONFIGURATION: return createTestConfiguration();
			case tdlPackage.CONNECTION: return createConnection();
			case tdlPackage.TEST_DESCRIPTION: return createTestDescription();
			case tdlPackage.BEHAVIOUR_DESCRIPTION: return createBehaviourDescription();
			case tdlPackage.BLOCK: return createBlock();
			case tdlPackage.PERIODIC_BEHAVIOUR: return createPeriodicBehaviour();
			case tdlPackage.ALTERNATIVE_BEHAVIOUR: return createAlternativeBehaviour();
			case tdlPackage.PARALLEL_BEHAVIOUR: return createParallelBehaviour();
			case tdlPackage.BOUNDED_LOOP_BEHAVIOUR: return createBoundedLoopBehaviour();
			case tdlPackage.OPTIONAL_BEHAVIOUR: return createOptionalBehaviour();
			case tdlPackage.UNBOUNDED_LOOP_BEHAVIOUR: return createUnboundedLoopBehaviour();
			case tdlPackage.CONDITIONAL_BEHAVIOUR: return createConditionalBehaviour();
			case tdlPackage.COMPOUND_BEHAVIOUR: return createCompoundBehaviour();
			case tdlPackage.DEFAULT_BEHAVIOUR: return createDefaultBehaviour();
			case tdlPackage.INTERRUPT_BEHAVIOUR: return createInterruptBehaviour();
			case tdlPackage.TARGET: return createTarget();
			case tdlPackage.VERDICT_ASSIGNMENT: return createVerdictAssignment();
			case tdlPackage.ASSERTION: return createAssertion();
			case tdlPackage.STOP: return createStop();
			case tdlPackage.BREAK: return createBreak();
			case tdlPackage.ASSIGNMENT: return createAssignment();
			case tdlPackage.INLINE_ACTION: return createInlineAction();
			case tdlPackage.ACTION_REFERENCE: return createActionReference();
			case tdlPackage.TEST_DESCRIPTION_REFERENCE: return createTestDescriptionReference();
			case tdlPackage.COMPONENT_INSTANCE_BINDING: return createComponentInstanceBinding();
			case tdlPackage.INTERACTION: return createInteraction();
			case tdlPackage.MESSAGE: return createMessage();
			case tdlPackage.PREDEFINED_FUNCTION: return createPredefinedFunction();
			case tdlPackage.MEMBER_REFERENCE: return createMemberReference();
			case tdlPackage.PREDEFINED_FUNCTION_CALL: return createPredefinedFunctionCall();
			case tdlPackage.LOCAL_EXPRESSION: return createLocalExpression();
			case tdlPackage.VALUE_ASSIGNMENT: return createValueAssignment();
			case tdlPackage.PROCEDURE_CALL: return createProcedureCall();
			case tdlPackage.PROCEDURE_SIGNATURE: return createProcedureSignature();
			case tdlPackage.PROCEDURE_PARAMETER: return createProcedureParameter();
			case tdlPackage.COLLECTION_DATA_TYPE: return createCollectionDataType();
			case tdlPackage.COLLECTION_DATA_INSTANCE: return createCollectionDataInstance();
			case tdlPackage.EXTENSION: return createExtension();
			case tdlPackage.LITERAL_VALUE_USE: return createLiteralValueUse();
			case tdlPackage.CONSTRAINT_TYPE: return createConstraintType();
			case tdlPackage.CONSTRAINT: return createConstraint();
			case tdlPackage.ENUM_DATA_TYPE: return createEnumDataType();
			case tdlPackage.DATA_ELEMENT_USE: return createDataElementUse();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object createFromString(EDataType eDataType, String initialValue)
	{
		switch (eDataType.getClassifierID())
		{
			case tdlPackage.UNASSIGNED_MEMBER_TREATMENT:
				return createUnassignedMemberTreatmentFromString(eDataType, initialValue);
			case tdlPackage.COMPONENT_INSTANCE_ROLE:
				return createComponentInstanceRoleFromString(eDataType, initialValue);
			case tdlPackage.GATE_TYPE_KIND:
				return createGateTypeKindFromString(eDataType, initialValue);
			case tdlPackage.TIME_LABEL_USE_KIND:
				return createTimeLabelUseKindFromString(eDataType, initialValue);
			case tdlPackage.PARAMETER_KIND:
				return createParameterKindFromString(eDataType, initialValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String convertToString(EDataType eDataType, Object instanceValue)
	{
		switch (eDataType.getClassifierID())
		{
			case tdlPackage.UNASSIGNED_MEMBER_TREATMENT:
				return convertUnassignedMemberTreatmentToString(eDataType, instanceValue);
			case tdlPackage.COMPONENT_INSTANCE_ROLE:
				return convertComponentInstanceRoleToString(eDataType, instanceValue);
			case tdlPackage.GATE_TYPE_KIND:
				return convertGateTypeKindToString(eDataType, instanceValue);
			case tdlPackage.TIME_LABEL_USE_KIND:
				return convertTimeLabelUseKindToString(eDataType, instanceValue);
			case tdlPackage.PARAMETER_KIND:
				return convertParameterKindToString(eDataType, instanceValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Comment createComment()
	{
		CommentImpl comment = new CommentImpl();
		return comment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Annotation createAnnotation()
	{
		AnnotationImpl annotation = new AnnotationImpl();
		return annotation;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public AnnotationType createAnnotationType()
	{
		AnnotationTypeImpl annotationType = new AnnotationTypeImpl();
		return annotationType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public org.etsi.mts.tdl.Package createPackage()
	{
		PackageImpl package_ = new PackageImpl();
		return package_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ElementImport createElementImport()
	{
		ElementImportImpl elementImport = new ElementImportImpl();
		return elementImport;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TestObjective createTestObjective()
	{
		TestObjectiveImpl testObjective = new TestObjectiveImpl();
		return testObjective;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DataResourceMapping createDataResourceMapping()
	{
		DataResourceMappingImpl dataResourceMapping = new DataResourceMappingImpl();
		return dataResourceMapping;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DataElementMapping createDataElementMapping()
	{
		DataElementMappingImpl dataElementMapping = new DataElementMappingImpl();
		return dataElementMapping;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ParameterMapping createParameterMapping()
	{
		ParameterMappingImpl parameterMapping = new ParameterMappingImpl();
		return parameterMapping;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public SimpleDataType createSimpleDataType()
	{
		SimpleDataTypeImpl simpleDataType = new SimpleDataTypeImpl();
		return simpleDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public SimpleDataInstance createSimpleDataInstance()
	{
		SimpleDataInstanceImpl simpleDataInstance = new SimpleDataInstanceImpl();
		return simpleDataInstance;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public StructuredDataType createStructuredDataType()
	{
		StructuredDataTypeImpl structuredDataType = new StructuredDataTypeImpl();
		return structuredDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Member createMember()
	{
		MemberImpl member = new MemberImpl();
		return member;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public StructuredDataInstance createStructuredDataInstance()
	{
		StructuredDataInstanceImpl structuredDataInstance = new StructuredDataInstanceImpl();
		return structuredDataInstance;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public MemberAssignment createMemberAssignment()
	{
		MemberAssignmentImpl memberAssignment = new MemberAssignmentImpl();
		return memberAssignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ParameterBinding createParameterBinding()
	{
		ParameterBindingImpl parameterBinding = new ParameterBindingImpl();
		return parameterBinding;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Action createAction()
	{
		ActionImpl action = new ActionImpl();
		return action;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public FormalParameter createFormalParameter()
	{
		FormalParameterImpl formalParameter = new FormalParameterImpl();
		return formalParameter;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Function createFunction()
	{
		FunctionImpl function = new FunctionImpl();
		return function;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public FormalParameterUse createFormalParameterUse()
	{
		FormalParameterUseImpl formalParameterUse = new FormalParameterUseImpl();
		return formalParameterUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Variable createVariable()
	{
		VariableImpl variable = new VariableImpl();
		return variable;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public FunctionCall createFunctionCall()
	{
		FunctionCallImpl functionCall = new FunctionCallImpl();
		return functionCall;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public VariableUse createVariableUse()
	{
		VariableUseImpl variableUse = new VariableUseImpl();
		return variableUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ComponentInstance createComponentInstance()
	{
		ComponentInstanceImpl componentInstance = new ComponentInstanceImpl();
		return componentInstance;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ComponentType createComponentType()
	{
		ComponentTypeImpl componentType = new ComponentTypeImpl();
		return componentType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public GateInstance createGateInstance()
	{
		GateInstanceImpl gateInstance = new GateInstanceImpl();
		return gateInstance;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public GateType createGateType()
	{
		GateTypeImpl gateType = new GateTypeImpl();
		return gateType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Timer createTimer()
	{
		TimerImpl timer = new TimerImpl();
		return timer;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public OmitValue createOmitValue()
	{
		OmitValueImpl omitValue = new OmitValueImpl();
		return omitValue;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public AnyValue createAnyValue()
	{
		AnyValueImpl anyValue = new AnyValueImpl();
		return anyValue;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public AnyValueOrOmit createAnyValueOrOmit()
	{
		AnyValueOrOmitImpl anyValueOrOmit = new AnyValueOrOmitImpl();
		return anyValueOrOmit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DataInstanceUse createDataInstanceUse()
	{
		DataInstanceUseImpl dataInstanceUse = new DataInstanceUseImpl();
		return dataInstanceUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Time createTime()
	{
		TimeImpl time = new TimeImpl();
		return time;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimeLabel createTimeLabel()
	{
		TimeLabelImpl timeLabel = new TimeLabelImpl();
		return timeLabel;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimeConstraint createTimeConstraint()
	{
		TimeConstraintImpl timeConstraint = new TimeConstraintImpl();
		return timeConstraint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimerStart createTimerStart()
	{
		TimerStartImpl timerStart = new TimerStartImpl();
		return timerStart;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimerStop createTimerStop()
	{
		TimerStopImpl timerStop = new TimerStopImpl();
		return timerStop;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimeOut createTimeOut()
	{
		TimeOutImpl timeOut = new TimeOutImpl();
		return timeOut;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Wait createWait()
	{
		WaitImpl wait = new WaitImpl();
		return wait;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Quiescence createQuiescence()
	{
		QuiescenceImpl quiescence = new QuiescenceImpl();
		return quiescence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public GateReference createGateReference()
	{
		GateReferenceImpl gateReference = new GateReferenceImpl();
		return gateReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TimeLabelUse createTimeLabelUse()
	{
		TimeLabelUseImpl timeLabelUse = new TimeLabelUseImpl();
		return timeLabelUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TestConfiguration createTestConfiguration()
	{
		TestConfigurationImpl testConfiguration = new TestConfigurationImpl();
		return testConfiguration;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Connection createConnection()
	{
		ConnectionImpl connection = new ConnectionImpl();
		return connection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TestDescription createTestDescription()
	{
		TestDescriptionImpl testDescription = new TestDescriptionImpl();
		return testDescription;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public BehaviourDescription createBehaviourDescription()
	{
		BehaviourDescriptionImpl behaviourDescription = new BehaviourDescriptionImpl();
		return behaviourDescription;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Block createBlock()
	{
		BlockImpl block = new BlockImpl();
		return block;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public PeriodicBehaviour createPeriodicBehaviour()
	{
		PeriodicBehaviourImpl periodicBehaviour = new PeriodicBehaviourImpl();
		return periodicBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public AlternativeBehaviour createAlternativeBehaviour()
	{
		AlternativeBehaviourImpl alternativeBehaviour = new AlternativeBehaviourImpl();
		return alternativeBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ParallelBehaviour createParallelBehaviour()
	{
		ParallelBehaviourImpl parallelBehaviour = new ParallelBehaviourImpl();
		return parallelBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public BoundedLoopBehaviour createBoundedLoopBehaviour()
	{
		BoundedLoopBehaviourImpl boundedLoopBehaviour = new BoundedLoopBehaviourImpl();
		return boundedLoopBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public OptionalBehaviour createOptionalBehaviour()
	{
		OptionalBehaviourImpl optionalBehaviour = new OptionalBehaviourImpl();
		return optionalBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public UnboundedLoopBehaviour createUnboundedLoopBehaviour()
	{
		UnboundedLoopBehaviourImpl unboundedLoopBehaviour = new UnboundedLoopBehaviourImpl();
		return unboundedLoopBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ConditionalBehaviour createConditionalBehaviour()
	{
		ConditionalBehaviourImpl conditionalBehaviour = new ConditionalBehaviourImpl();
		return conditionalBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public CompoundBehaviour createCompoundBehaviour()
	{
		CompoundBehaviourImpl compoundBehaviour = new CompoundBehaviourImpl();
		return compoundBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DefaultBehaviour createDefaultBehaviour()
	{
		DefaultBehaviourImpl defaultBehaviour = new DefaultBehaviourImpl();
		return defaultBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public InterruptBehaviour createInterruptBehaviour()
	{
		InterruptBehaviourImpl interruptBehaviour = new InterruptBehaviourImpl();
		return interruptBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Target createTarget()
	{
		TargetImpl target = new TargetImpl();
		return target;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public VerdictAssignment createVerdictAssignment()
	{
		VerdictAssignmentImpl verdictAssignment = new VerdictAssignmentImpl();
		return verdictAssignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Assertion createAssertion()
	{
		AssertionImpl assertion = new AssertionImpl();
		return assertion;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Stop createStop()
	{
		StopImpl stop = new StopImpl();
		return stop;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Break createBreak()
	{
		BreakImpl break_ = new BreakImpl();
		return break_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Assignment createAssignment()
	{
		AssignmentImpl assignment = new AssignmentImpl();
		return assignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public InlineAction createInlineAction()
	{
		InlineActionImpl inlineAction = new InlineActionImpl();
		return inlineAction;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ActionReference createActionReference()
	{
		ActionReferenceImpl actionReference = new ActionReferenceImpl();
		return actionReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TestDescriptionReference createTestDescriptionReference()
	{
		TestDescriptionReferenceImpl testDescriptionReference = new TestDescriptionReferenceImpl();
		return testDescriptionReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ComponentInstanceBinding createComponentInstanceBinding()
	{
		ComponentInstanceBindingImpl componentInstanceBinding = new ComponentInstanceBindingImpl();
		return componentInstanceBinding;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Interaction createInteraction()
	{
		InteractionImpl interaction = new InteractionImpl();
		return interaction;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Message createMessage()
	{
		MessageImpl message = new MessageImpl();
		return message;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public PredefinedFunction createPredefinedFunction()
	{
		PredefinedFunctionImpl predefinedFunction = new PredefinedFunctionImpl();
		return predefinedFunction;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public MemberReference createMemberReference()
	{
		MemberReferenceImpl memberReference = new MemberReferenceImpl();
		return memberReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public PredefinedFunctionCall createPredefinedFunctionCall()
	{
		PredefinedFunctionCallImpl predefinedFunctionCall = new PredefinedFunctionCallImpl();
		return predefinedFunctionCall;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public LocalExpression createLocalExpression()
	{
		LocalExpressionImpl localExpression = new LocalExpressionImpl();
		return localExpression;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ValueAssignment createValueAssignment()
	{
		ValueAssignmentImpl valueAssignment = new ValueAssignmentImpl();
		return valueAssignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ProcedureCall createProcedureCall()
	{
		ProcedureCallImpl procedureCall = new ProcedureCallImpl();
		return procedureCall;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ProcedureSignature createProcedureSignature()
	{
		ProcedureSignatureImpl procedureSignature = new ProcedureSignatureImpl();
		return procedureSignature;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ProcedureParameter createProcedureParameter()
	{
		ProcedureParameterImpl procedureParameter = new ProcedureParameterImpl();
		return procedureParameter;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public CollectionDataType createCollectionDataType()
	{
		CollectionDataTypeImpl collectionDataType = new CollectionDataTypeImpl();
		return collectionDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public CollectionDataInstance createCollectionDataInstance()
	{
		CollectionDataInstanceImpl collectionDataInstance = new CollectionDataInstanceImpl();
		return collectionDataInstance;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Extension createExtension()
	{
		ExtensionImpl extension = new ExtensionImpl();
		return extension;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public LiteralValueUse createLiteralValueUse()
	{
		LiteralValueUseImpl literalValueUse = new LiteralValueUseImpl();
		return literalValueUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ConstraintType createConstraintType()
	{
		ConstraintTypeImpl constraintType = new ConstraintTypeImpl();
		return constraintType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Constraint createConstraint()
	{
		ConstraintImpl constraint = new ConstraintImpl();
		return constraint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EnumDataType createEnumDataType()
	{
		EnumDataTypeImpl enumDataType = new EnumDataTypeImpl();
		return enumDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DataElementUse createDataElementUse()
	{
		DataElementUseImpl dataElementUse = new DataElementUseImpl();
		return dataElementUse;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public UnassignedMemberTreatment createUnassignedMemberTreatmentFromString(EDataType eDataType, String initialValue)
	{
		UnassignedMemberTreatment result = UnassignedMemberTreatment.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertUnassignedMemberTreatmentToString(EDataType eDataType, Object instanceValue)
	{
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ComponentInstanceRole createComponentInstanceRoleFromString(EDataType eDataType, String initialValue)
	{
		ComponentInstanceRole result = ComponentInstanceRole.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertComponentInstanceRoleToString(EDataType eDataType, Object instanceValue)
	{
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GateTypeKind createGateTypeKindFromString(EDataType eDataType, String initialValue)
	{
		GateTypeKind result = GateTypeKind.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertGateTypeKindToString(EDataType eDataType, Object instanceValue)
	{
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TimeLabelUseKind createTimeLabelUseKindFromString(EDataType eDataType, String initialValue)
	{
		TimeLabelUseKind result = TimeLabelUseKind.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertTimeLabelUseKindToString(EDataType eDataType, Object instanceValue)
	{
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ParameterKind createParameterKindFromString(EDataType eDataType, String initialValue)
	{
		ParameterKind result = ParameterKind.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertParameterKindToString(EDataType eDataType, Object instanceValue)
	{
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public tdlPackage gettdlPackage()
	{
		return (tdlPackage)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static tdlPackage getPackage()
	{
		return tdlPackage.eINSTANCE;
	}

} //tdlFactoryImpl
