code: @Override
  	protected T doSwitch(int classifierID, EObject theEObject) {
  		switch (classifierID) {
  			case BasePackage.AFP: {
  				AFP afp = (AFP)theEObject;
  				T result = caseAFP(afp);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case BasePackage.SF: {
  				SF sf = (SF)theEObject;
  				T result = caseSF(sf);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case BasePackage.UNKNSF: {
  				UNKNSF unknsf = (UNKNSF)theEObject;
  				T result = caseUNKNSF(unknsf);
  				if (result == null) result = caseSF(unknsf);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case BasePackage.SF_GROUPER: {
  				SFGrouper sfGrouper = (SFGrouper)theEObject;
  				T result = caseSFGrouper(sfGrouper);
  				if (result == null) result = caseSF(sfGrouper);
  				if (result == null) result = defaultCase(theEObject);
  				return result;
  			}
  			case BasePackage.TRIPLET: {
  				Triplet triplet = (Triplet)theEObject;
  				T result = caseTriplet(triplet);
  				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