diff -r 8d0b2c7d60a1 -r b3b5eadd2bca langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Wed Apr 09 14:05:24 2008 +0100 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Wed Apr 09 14:45:50 2008 +0100 @@ -1878,8 +1878,10 @@ boolean varArgs = env.info.varArgs; tree.sym = sym; - if (site.tag == TYPEVAR && !isType(sym) && sym.kind != ERR) - site = capture(site.getUpperBound()); + if (site.tag == TYPEVAR && !isType(sym) && sym.kind != ERR) { + while (site.tag == TYPEVAR) site = site.getUpperBound(); + site = capture(site); + } // If that symbol is a variable, ... if (sym.kind == VAR) {