diff -r 4ff468de829d -r 3cd997b9fd84 src/share/classes/com/sun/tools/javac/code/Types.java --- a/src/share/classes/com/sun/tools/javac/code/Types.java Fri Feb 15 16:29:58 2013 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Fri Feb 15 16:30:31 2013 +0000 @@ -2606,16 +2606,17 @@ candidates = candidates.prepend((MethodSymbol)s); } } - return prune(candidates, ownerComparator); + return prune(candidates); } - public List prune(List methods, Comparator cmp) { + public List prune(List methods) { ListBuffer methodsMin = ListBuffer.lb(); for (MethodSymbol m1 : methods) { boolean isMin_m1 = true; for (MethodSymbol m2 : methods) { if (m1 == m2) continue; - if (cmp.compare(m2, m1) < 0) { + if (m2.owner != m1.owner && + asSuper(m2.owner.type, m1.owner) != null) { isMin_m1 = false; break; } @@ -2625,12 +2626,6 @@ } return methodsMin.toList(); } - - Comparator ownerComparator = new Comparator() { - public int compare(MethodSymbol s1, MethodSymbol s2) { - return s1.owner.isSubClass(s2.owner, Types.this) ? -1 : 1; - } - }; // where private class MethodFilter implements Filter {