code: @Override
  	protected T doSwitch(int classifierID, EObject theEObject)
  	{
  		switch (classifierID)
  		{
  			case XtypePackage.XFUNCTION_TYPE_REF:
  			{
  				XFunctionTypeRef xFunctionTypeRef = (XFunctionTypeRef)theEObject;
  				T result = caseXFunctionTypeRef(xFunctionTypeRef);
  				if (result == null) result = caseJvmSpecializedTypeReference(xFunctionTypeRef);
  				if (result == null) result = caseJvmTypeReference(xFunctionTypeRef);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case XtypePackage.XCOMPUTED_TYPE_REFERENCE:
  			{
  				XComputedTypeReference xComputedTypeReference = (XComputedTypeReference)theEObject;
  				T result = caseXComputedTypeReference(xComputedTypeReference);
  				if (result == null) result = caseJvmSpecializedTypeReference(xComputedTypeReference);
  				if (result == null) result = caseJvmTypeReference(xComputedTypeReference);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case XtypePackage.XIMPORT_SECTION:
  			{
  				XImportSection xImportSection = (XImportSection)theEObject;
  				T result = caseXImportSection(xImportSection);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case XtypePackage.XIMPORT_DECLARATION:
  			{
  				XImportDeclaration xImportDeclaration = (XImportDeclaration)theEObject;
  				T result = caseXImportDeclaration(xImportDeclaration);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			default: return defaultCase(theEObject);
  		}
  	}
docs: Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
  <!-- begin-user-doc -->
  <!-- end-user-doc -->
  @return the first non-null result returned by a <code>caseXXX</code> call.
  @generated