diff -r 6db9a3b1a93f -r 5ddecb91d843 src/share/classes/com/sun/tools/javac/code/Type.java --- a/src/share/classes/com/sun/tools/javac/code/Type.java Tue Mar 12 16:02:13 2013 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Type.java Tue Mar 12 16:02:43 2013 +0000 @@ -1367,7 +1367,7 @@ for (Type b : prevBounds) { //check for redundancy - use strict version of isSameType on tvars //(as the standard version will lead to false positives w.r.t. clones ivars) - if (types.isSameType(b, bound2, true)) return; + if (types.isSameType(b, bound2, true) || bound == qtype) return; } bounds.put(ib, prevBounds.prepend(bound2)); notifyChange(EnumSet.of(ib));