diff -r 073696f59241 -r 2154ed9ff6c8 src/share/classes/com/sun/tools/javac/comp/Attr.java --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Feb 12 13:36:56 2013 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Feb 12 19:25:09 2013 +0000 @@ -4152,7 +4152,9 @@ } private Type capture(Type type) { - return types.capture(type); + //do not capture free types + return resultInfo.checkContext.inferenceContext().free(type) ? + type : types.capture(type); } private void validateTypeAnnotations(JCTree tree) {