1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Oct 15 22:15:35 2013 +0200 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Oct 15 15:57:13 2013 -0700 1.3 @@ -2834,20 +2834,9 @@ 1.4 tree.underlyingType = translate(tree.underlyingType); 1.5 // but maintain type annotations in the type. 1.6 if (tree.type.isAnnotated()) { 1.7 - if (tree.underlyingType.type.isAnnotated()) { 1.8 - // The erasure of a type variable might be annotated. 1.9 - // Merge all annotations. 1.10 - AnnotatedType newat = (AnnotatedType) tree.underlyingType.type; 1.11 - AnnotatedType at = (AnnotatedType) tree.type; 1.12 - at.underlyingType = newat.underlyingType; 1.13 - newat.typeAnnotations = at.typeAnnotations.appendList(newat.typeAnnotations); 1.14 - tree.type = newat; 1.15 - } else { 1.16 - // Create a new AnnotatedType to have the correct tag. 1.17 - AnnotatedType oldat = (AnnotatedType) tree.type; 1.18 - tree.type = new AnnotatedType(tree.underlyingType.type); 1.19 - ((AnnotatedType) tree.type).typeAnnotations = oldat.typeAnnotations; 1.20 - } 1.21 + tree.type = tree.underlyingType.type.unannotatedType().annotatedType(tree.type.getAnnotationMirrors()); 1.22 + } else if (tree.underlyingType.type.isAnnotated()) { 1.23 + tree.type = tree.underlyingType.type; 1.24 } 1.25 result = tree; 1.26 }