diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/blackbox/java/Java2QVTTypeResolver.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/blackbox/java/Java2QVTTypeResolver.java
index de61556..2b73161 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/blackbox/java/Java2QVTTypeResolver.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/blackbox/java/Java2QVTTypeResolver.java
@@ -423,28 +423,12 @@
 				ModelContent genModelContent = EmfUtil.safeLoadModel(genModelUri, resourceSet);
 				
 				if (genModelContent != null) {
-					Iterator<EObject> iterator = EcoreUtil.getAllContents(genModelContent.getContent());
-									
-					while (iterator.hasNext()) {
-						EObject eObject = iterator.next();
-						
-						try {
-							if (eObject instanceof GenClassifier) {
-								GenClassifier genClassifier = (GenClassifier) eObject;
-								
-								EClassifier ecoreClassifier = genClassifier.getEcoreClassifier();
-																	
-								if (ecoreClassifier == eClassifier) {
-									String classifierInstanceName = genClassifier.getRawInstanceClassName();
-									
-									if (type.getName().equals(classifierInstanceName)) {
-										return true;
-									}
-								}
-							}
-						} catch(NoClassDefFoundError e) {
-							break;
+					try {
+						if (isMatchingInstanceGenClassifier(eClassifier, type, genModelContent)) {
+							return true;
 						}
+					} catch(NoClassDefFoundError e) {
+						// Ignore failure due to missing org.eclipse.emf.ecore.codegen support
 					}
 				}
 			}
@@ -453,4 +437,21 @@
 		return false;
 	}
 
+	private static boolean isMatchingInstanceGenClassifier(EClassifier eClassifier, Class<?> type, ModelContent genModelContent) {
+		Iterator<EObject> iterator = EcoreUtil.getAllContents(genModelContent.getContent());
+		while (iterator.hasNext()) {
+			EObject eObject = iterator.next();
+			if (eObject instanceof GenClassifier) {
+				GenClassifier genClassifier = (GenClassifier) eObject;
+				EClassifier ecoreClassifier = genClassifier.getEcoreClassifier();
+				if (ecoreClassifier == eClassifier) {
+					String classifierInstanceName = genClassifier.getRawInstanceClassName();
+					if (type.getName().equals(classifierInstanceName)) {
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
 }
