diff -r b060e7c2f5cc -r 4ee06c77b51b src/share/classes/com/sun/tools/javac/code/Types.java --- a/src/share/classes/com/sun/tools/javac/code/Types.java Mon Jun 16 11:19:22 2014 -0700 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Tue Jun 17 16:32:18 2014 -0600 @@ -135,7 +135,7 @@ else return wildUpperBound(w.type); } - else return t; + else return t.unannotatedType(); } /** @@ -147,7 +147,7 @@ TypeVar v = (TypeVar) t.unannotatedType(); return v.isCaptured() ? cvarUpperBound(v.bound) : v; } - else return t; + else return t.unannotatedType(); } /** @@ -156,10 +156,10 @@ */ public Type wildLowerBound(Type t) { if (t.hasTag(WILDCARD)) { - WildcardType w = (WildcardType) t; + WildcardType w = (WildcardType) t.unannotatedType(); return w.isExtendsBound() ? syms.botType : wildLowerBound(w.type); } - else return t; + else return t.unannotatedType(); } /** @@ -167,10 +167,11 @@ * @param t a type */ public Type cvarLowerBound(Type t) { - if (t.hasTag(TYPEVAR) && ((TypeVar) t).isCaptured()) { - return cvarLowerBound(t.getLowerBound()); + if (t.hasTag(TYPEVAR)) { + TypeVar v = (TypeVar) t.unannotatedType(); + return v.isCaptured() ? cvarLowerBound(v.getLowerBound()) : v; } - else return t; + else return t.unannotatedType(); } //