diff -r c2234816495f -r eaae5cf911be src/share/classes/com/sun/tools/javac/code/Symbol.java --- a/src/share/classes/com/sun/tools/javac/code/Symbol.java Tue Mar 06 16:48:29 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Symbol.java Tue Mar 06 16:50:32 2012 +0000 @@ -1235,7 +1235,7 @@ // if origin is derived from a raw type, we might have missed // an implementation because we do not know enough about instantiations. // in this case continue with the supertype as origin. - if (types.isDerivedRaw(origin.type)) + if (types.isDerivedRaw(origin.type) && !origin.isInterface()) return implementation(types.supertype(origin.type).tsym, types, checkResult); else return null;