docs: @Override
  	protected T doSwitch(int classifierID, EObject theEObject)
  	{
  		switch (classifierID)
  		{
  			case SarlPackage.SARL_SCRIPT:
  			{
  				SarlScript sarlScript = (SarlScript)theEObject;
  				T result = caseSarlScript(sarlScript);
  				if (result == null) result = caseXtendFile(sarlScript);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_FIELD:
  			{
  				SarlField sarlField = (SarlField)theEObject;
  				T result = caseSarlField(sarlField);
  				if (result == null) result = caseXtendField(sarlField);
  				if (result == null) result = caseXtendMember(sarlField);
  				if (result == null) result = caseXtendAnnotationTarget(sarlField);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_BREAK_EXPRESSION:
  			{
  				SarlBreakExpression sarlBreakExpression = (SarlBreakExpression)theEObject;
  				T result = caseSarlBreakExpression(sarlBreakExpression);
  				if (result == null) result = caseXExpression(sarlBreakExpression);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CONTINUE_EXPRESSION:
  			{
  				SarlContinueExpression sarlContinueExpression = (SarlContinueExpression)theEObject;
  				T result = caseSarlContinueExpression(sarlContinueExpression);
  				if (result == null) result = caseXExpression(sarlContinueExpression);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ASSERT_EXPRESSION:
  			{
  				SarlAssertExpression sarlAssertExpression = (SarlAssertExpression)theEObject;
  				T result = caseSarlAssertExpression(sarlAssertExpression);
  				if (result == null) result = caseXExpression(sarlAssertExpression);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ACTION:
  			{
  				SarlAction sarlAction = (SarlAction)theEObject;
  				T result = caseSarlAction(sarlAction);
  				if (result == null) result = caseXtendFunction(sarlAction);
  				if (result == null) result = caseXtendExecutable(sarlAction);
  				if (result == null) result = caseXtendMember(sarlAction);
  				if (result == null) result = caseXtendAnnotationTarget(sarlAction);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CONSTRUCTOR:
  			{
  				SarlConstructor sarlConstructor = (SarlConstructor)theEObject;
  				T result = caseSarlConstructor(sarlConstructor);
  				if (result == null) result = caseXtendConstructor(sarlConstructor);
  				if (result == null) result = caseXtendExecutable(sarlConstructor);
  				if (result == null) result = caseXtendMember(sarlConstructor);
  				if (result == null) result = caseXtendAnnotationTarget(sarlConstructor);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_BEHAVIOR_UNIT:
  			{
  				SarlBehaviorUnit sarlBehaviorUnit = (SarlBehaviorUnit)theEObject;
  				T result = caseSarlBehaviorUnit(sarlBehaviorUnit);
  				if (result == null) result = caseXtendMember(sarlBehaviorUnit);
  				if (result == null) result = caseXtendAnnotationTarget(sarlBehaviorUnit);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CAPACITY_USES:
  			{
  				SarlCapacityUses sarlCapacityUses = (SarlCapacityUses)theEObject;
  				T result = caseSarlCapacityUses(sarlCapacityUses);
  				if (result == null) result = caseXtendMember(sarlCapacityUses);
  				if (result == null) result = caseXtendAnnotationTarget(sarlCapacityUses);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_REQUIRED_CAPACITY:
  			{
  				SarlRequiredCapacity sarlRequiredCapacity = (SarlRequiredCapacity)theEObject;
  				T result = caseSarlRequiredCapacity(sarlRequiredCapacity);
  				if (result == null) result = caseXtendMember(sarlRequiredCapacity);
  				if (result == null) result = caseXtendAnnotationTarget(sarlRequiredCapacity);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CLASS:
  			{
  				SarlClass sarlClass = (SarlClass)theEObject;
  				T result = caseSarlClass(sarlClass);
  				if (result == null) result = caseXtendClass(sarlClass);
  				if (result == null) result = caseXtendTypeDeclaration(sarlClass);
  				if (result == null) result = caseXtendMember(sarlClass);
  				if (result == null) result = caseXtendAnnotationTarget(sarlClass);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_INTERFACE:
  			{
  				SarlInterface sarlInterface = (SarlInterface)theEObject;
  				T result = caseSarlInterface(sarlInterface);
  				if (result == null) result = caseXtendInterface(sarlInterface);
  				if (result == null) result = caseXtendTypeDeclaration(sarlInterface);
  				if (result == null) result = caseXtendMember(sarlInterface);
  				if (result == null) result = caseXtendAnnotationTarget(sarlInterface);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ENUMERATION:
  			{
  				SarlEnumeration sarlEnumeration = (SarlEnumeration)theEObject;
  				T result = caseSarlEnumeration(sarlEnumeration);
  				if (result == null) result = caseXtendEnum(sarlEnumeration);
  				if (result == null) result = caseXtendTypeDeclaration(sarlEnumeration);
  				if (result == null) result = caseXtendMember(sarlEnumeration);
  				if (result == null) result = caseXtendAnnotationTarget(sarlEnumeration);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ANNOTATION_TYPE:
  			{
  				SarlAnnotationType sarlAnnotationType = (SarlAnnotationType)theEObject;
  				T result = caseSarlAnnotationType(sarlAnnotationType);
  				if (result == null) result = caseXtendAnnotationType(sarlAnnotationType);
  				if (result == null) result = caseXtendTypeDeclaration(sarlAnnotationType);
  				if (result == null) result = caseXtendMember(sarlAnnotationType);
  				if (result == null) result = caseXtendAnnotationTarget(sarlAnnotationType);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ENUM_LITERAL:
  			{
  				SarlEnumLiteral sarlEnumLiteral = (SarlEnumLiteral)theEObject;
  				T result = caseSarlEnumLiteral(sarlEnumLiteral);
  				if (result == null) result = caseXtendEnumLiteral(sarlEnumLiteral);
  				if (result == null) result = caseXtendMember(sarlEnumLiteral);
  				if (result == null) result = caseXtendAnnotationTarget(sarlEnumLiteral);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_EVENT:
  			{
  				SarlEvent sarlEvent = (SarlEvent)theEObject;
  				T result = caseSarlEvent(sarlEvent);
  				if (result == null) result = caseXtendTypeDeclaration(sarlEvent);
  				if (result == null) result = caseXtendMember(sarlEvent);
  				if (result == null) result = caseXtendAnnotationTarget(sarlEvent);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CASTED_EXPRESSION:
  			{
  				SarlCastedExpression sarlCastedExpression = (SarlCastedExpression)theEObject;
  				T result = caseSarlCastedExpression(sarlCastedExpression);
  				if (result == null) result = caseXCastedExpression(sarlCastedExpression);
  				if (result == null) result = caseXExpression(sarlCastedExpression);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_SPACE:
  			{
  				SarlSpace sarlSpace = (SarlSpace)theEObject;
  				T result = caseSarlSpace(sarlSpace);
  				if (result == null) result = caseXtendTypeDeclaration(sarlSpace);
  				if (result == null) result = caseXtendMember(sarlSpace);
  				if (result == null) result = caseXtendAnnotationTarget(sarlSpace);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_ARTIFACT:
  			{
  				SarlArtifact sarlArtifact = (SarlArtifact)theEObject;
  				T result = caseSarlArtifact(sarlArtifact);
  				if (result == null) result = caseXtendTypeDeclaration(sarlArtifact);
  				if (result == null) result = caseXtendMember(sarlArtifact);
  				if (result == null) result = caseXtendAnnotationTarget(sarlArtifact);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_AGENT:
  			{
  				SarlAgent sarlAgent = (SarlAgent)theEObject;
  				T result = caseSarlAgent(sarlAgent);
  				if (result == null) result = caseXtendTypeDeclaration(sarlAgent);
  				if (result == null) result = caseXtendMember(sarlAgent);
  				if (result == null) result = caseXtendAnnotationTarget(sarlAgent);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_CAPACITY:
  			{
  				SarlCapacity sarlCapacity = (SarlCapacity)theEObject;
  				T result = caseSarlCapacity(sarlCapacity);
  				if (result == null) result = caseXtendTypeDeclaration(sarlCapacity);
  				if (result == null) result = caseXtendMember(sarlCapacity);
  				if (result == null) result = caseXtendAnnotationTarget(sarlCapacity);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_BEHAVIOR:
  			{
  				SarlBehavior sarlBehavior = (SarlBehavior)theEObject;
  				T result = caseSarlBehavior(sarlBehavior);
  				if (result == null) result = caseXtendTypeDeclaration(sarlBehavior);
  				if (result == null) result = caseXtendMember(sarlBehavior);
  				if (result == null) result = caseXtendAnnotationTarget(sarlBehavior);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_SKILL:
  			{
  				SarlSkill sarlSkill = (SarlSkill)theEObject;
  				T result = caseSarlSkill(sarlSkill);
  				if (result == null) result = caseXtendTypeDeclaration(sarlSkill);
  				if (result == null) result = caseXtendMember(sarlSkill);
  				if (result == null) result = caseXtendAnnotationTarget(sarlSkill);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case SarlPackage.SARL_FORMAL_PARAMETER:
  			{
  				SarlFormalParameter sarlFormalParameter = (SarlFormalParameter)theEObject;
  				T result = caseSarlFormalParameter(sarlFormalParameter);
  				if (result == null) result = caseXtendParameter(sarlFormalParameter);
  				if (result == null) result = caseXtendAnnotationTarget(sarlFormalParameter);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			default: return defaultCase(theEObject);
  		}
  	}