changeset 52958:465f6d70456a intrinsics-project

Automatic merge with jep-334
author mcimadamore
date Thu, 01 Nov 2018 20:25:34 +0100
parents cb71f66e8e19 38c60cb85e19
children 3f350339151b
files src/java.base/share/classes/java/lang/String.java
diffstat 34 files changed, 139 insertions(+), 165 deletions(-) [+]
line wrap: on
line diff
--- a/src/java.base/share/classes/java/lang/Class.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Class.java	Thu Nov 01 20:25:34 2018 +0100
@@ -159,7 +159,7 @@
                               Type,
                               AnnotatedElement,
                                        TypeDescriptor.OfField<Class<?>>,
-                              Constable<Class<?>> {
+                              Constable {
     private static final int ANNOTATION= 0x00002000;
     private static final int ENUM      = 0x00004000;
     private static final int SYNTHETIC = 0x00001000;
--- a/src/java.base/share/classes/java/lang/Double.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Double.java	Thu Nov 01 20:25:34 2018 +0100
@@ -52,7 +52,7 @@
  * @since 1.0
  */
 public final class Double extends Number
-        implements Comparable<Double>, ConstantDesc<Double>, Constable<Double> {
+        implements Comparable<Double>, ConstantDesc, Constable {
     /**
      * A constant holding the positive infinity of type
      * {@code double}. It is equal to the value returned by
--- a/src/java.base/share/classes/java/lang/Enum.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Enum.java	Thu Nov 01 20:25:34 2018 +0100
@@ -64,7 +64,7 @@
 @SuppressWarnings("serial") // No serialVersionUID needed due to
                             // special-casing of enum types.
 public abstract class Enum<E extends Enum<E>>
-        implements Constable<E>, Comparable<E>, Serializable {
+        implements Constable, Comparable<E>, Serializable {
     /**
      * The name of this enum constant, as declared in the enum declaration.
      * Most programmers should use the {@link #toString} method rather than
--- a/src/java.base/share/classes/java/lang/Float.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Float.java	Thu Nov 01 20:25:34 2018 +0100
@@ -51,7 +51,7 @@
  * @since 1.0
  */
 public final class Float extends Number
-        implements Comparable<Float>, ConstantDesc<Float>, Constable<Float> {
+        implements Comparable<Float>, ConstantDesc, Constable {
     /**
      * A constant holding the positive infinity of type
      * {@code float}. It is equal to the value returned by
--- a/src/java.base/share/classes/java/lang/Integer.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Integer.java	Thu Nov 01 20:25:34 2018 +0100
@@ -62,7 +62,7 @@
  * @since 1.0
  */
 public final class Integer extends Number
-        implements Comparable<Integer>, ConstantDesc<Integer>, Constable<Integer> {
+        implements Comparable<Integer>, ConstantDesc, Constable {
     /**
      * A constant holding the minimum value an {@code int} can
      * have, -2<sup>31</sup>.
--- a/src/java.base/share/classes/java/lang/Long.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/Long.java	Thu Nov 01 20:25:34 2018 +0100
@@ -62,7 +62,7 @@
  * @since   1.0
  */
 public final class Long extends Number
-        implements Comparable<Long>, ConstantDesc<Long>, Constable<Long> {
+        implements Comparable<Long>, ConstantDesc, Constable {
     /**
      * A constant holding the minimum value a {@code long} can
      * have, -2<sup>63</sup>.
--- a/src/java.base/share/classes/java/lang/String.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/String.java	Thu Nov 01 20:25:34 2018 +0100
@@ -131,7 +131,7 @@
 
 public final class String
     implements java.io.Serializable, Comparable<String>, CharSequence,
-               ConstantDesc<String>, Constable<String> {
+               ConstantDesc, Constable {
 
     /**
      * The value is used for character storage.
--- a/src/java.base/share/classes/java/lang/constant/AsTypeMethodHandleDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/AsTypeMethodHandleDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -58,8 +58,8 @@
     @Override
     public MethodHandle resolveConstantDesc(MethodHandles.Lookup lookup)
             throws ReflectiveOperationException {
-        MethodHandle handle = underlying.resolveConstantDesc(lookup);
-        MethodType methodType = type.resolveConstantDesc(lookup);
+        MethodHandle handle = (MethodHandle) underlying.resolveConstantDesc(lookup);
+        MethodType methodType = (MethodType) type.resolveConstantDesc(lookup);
         return handle.asType(methodType);
     }
 
--- a/src/java.base/share/classes/java/lang/constant/ClassDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/ClassDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -58,7 +58,7 @@
  * @since 12
  */
 public interface ClassDesc
-        extends ConstantDesc<Class<?>>,
+        extends ConstantDesc,
                 TypeDescriptor.OfField<ClassDesc> {
 
     /**
--- a/src/java.base/share/classes/java/lang/constant/Constable.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/Constable.java	Thu Nov 01 20:25:34 2018 +0100
@@ -61,11 +61,9 @@
  * @jvms 4.4 The Constant Pool
  * @jvms 4.4.10 The CONSTANT_InvokeDynamic_info Structure
  *
- * @param <T> the type of the constant value
- *
  * @since 12
  */
-public interface Constable<T> {
+public interface Constable {
     /**
      * Return a nominal descriptor for this instance, if one can be
      * constructed, or an empty {@link Optional} if one cannot be.
@@ -73,5 +71,5 @@
      * @return An {@link Optional} containing the resulting nominal descriptor,
      * or an empty {@link Optional} if one cannot be constructed.
      */
-    Optional<? extends ConstantDesc<T>> describeConstable();
+    Optional<? extends ConstantDesc> describeConstable();
 }
--- a/src/java.base/share/classes/java/lang/constant/ConstantDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/ConstantDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -84,7 +84,7 @@
  *
  * @since 12
  */
-public interface ConstantDesc<T> {
+public interface ConstantDesc {
     /**
      * Resolve this descriptor reflectively, emulating the resolution behavior
      * of JVMS 5.4.3 and the access control behavior of JVMS 5.4.4.  The resolution
@@ -100,5 +100,5 @@
      * @jvms 5.4.3 Resolution
      * @jvms 5.4.4 Access Control
      */
-    T resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException;
+    Object resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException;
 }
--- a/src/java.base/share/classes/java/lang/constant/ConstantDescs.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/ConstantDescs.java	Thu Nov 01 20:25:34 2018 +0100
@@ -246,7 +246,7 @@
     public static final ClassDesc CD_void = ClassDesc.ofDescriptor("V");
 
     /** Nominal descriptor representing the constant {@code null} */
-    public static final ConstantDesc<?> NULL
+    public static final ConstantDesc NULL
             = DynamicConstantDesc.ofNamed(ConstantDescs.BSM_NULL_CONSTANT,
                                           DEFAULT_NAME, ConstantDescs.CD_Object);
 
--- a/src/java.base/share/classes/java/lang/constant/ConstantUtils.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/ConstantUtils.java	Thu Nov 01 20:25:34 2018 +0100
@@ -35,8 +35,8 @@
  */
 class ConstantUtils {
     /** an empty constant descriptor */
-    public static final ConstantDesc<?>[] EMPTY_CONSTANTDESC = new ConstantDesc<?>[0];
-    static final Constable<?>[] EMPTY_CONSTABLE = new Constable<?>[0];
+    public static final ConstantDesc[] EMPTY_CONSTANTDESC = new ConstantDesc[0];
+    static final Constable[] EMPTY_CONSTABLE = new Constable[0];
 
     private static final Set<String> pointyNames = Set.of("<init>", "<clinit>");
 
--- a/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java	Thu Nov 01 20:25:34 2018 +0100
@@ -129,8 +129,8 @@
 
     public MethodHandle resolveConstantDesc(MethodHandles.Lookup lookup)
             throws ReflectiveOperationException {
-        Class<?> resolvedOwner = owner.resolveConstantDesc(lookup);
-        MethodType resolvedType = this.type.resolveConstantDesc(lookup);
+        Class<?> resolvedOwner = (Class<?>) owner.resolveConstantDesc(lookup);
+        MethodType resolvedType = (MethodType) this.type.resolveConstantDesc(lookup);
         switch (kind) {
             case STATIC:
             case INTERFACE_STATIC:
--- a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -49,7 +49,7 @@
 public class DynamicCallSiteDesc {
 
     private final DirectMethodHandleDesc bootstrapMethod;
-    private final ConstantDesc<?>[] bootstrapArgs;
+    private final ConstantDesc[] bootstrapArgs;
     private final String invocationName;
     private final MethodTypeDesc invocationType;
 
@@ -75,7 +75,7 @@
     private DynamicCallSiteDesc(DirectMethodHandleDesc bootstrapMethod,
                                 String invocationName,
                                 MethodTypeDesc invocationType,
-                                ConstantDesc<?>[] bootstrapArgs) {
+                                ConstantDesc[] bootstrapArgs) {
         this.invocationName = validateMemberName(requireNonNull(invocationName));
         this.invocationType = requireNonNull(invocationType);
         this.bootstrapMethod = requireNonNull(bootstrapMethod);
@@ -107,7 +107,7 @@
     public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod,
                                          String invocationName,
                                          MethodTypeDesc invocationType,
-                                         ConstantDesc<?>... bootstrapArgs) {
+                                         ConstantDesc... bootstrapArgs) {
         return new DynamicCallSiteDesc(bootstrapMethod, invocationName, invocationType, bootstrapArgs);
     }
 
@@ -160,7 +160,7 @@
      * @return the nominal descriptor
      * @throws NullPointerException if any parameter is null
      */
-    public DynamicCallSiteDesc withArgs(ConstantDesc<?>... bootstrapArgs) {
+    public DynamicCallSiteDesc withArgs(ConstantDesc... bootstrapArgs) {
         return new DynamicCallSiteDesc(bootstrapMethod, invocationName, invocationType, bootstrapArgs);
     }
 
@@ -220,7 +220,7 @@
      *
      * @return the bootstrap arguments for the {@code invokedynamic}
      */
-    public ConstantDesc<?>[] bootstrapArgs() { return bootstrapArgs.clone(); }
+    public ConstantDesc[] bootstrapArgs() { return bootstrapArgs.clone(); }
 
     /**
      * Reflectively invokes the bootstrap method with the specified arguments,
@@ -232,7 +232,7 @@
      */
     public CallSite resolveCallSiteDesc(MethodHandles.Lookup lookup) throws Throwable {
         assert bootstrapMethod.methodType().parameterType(1).equals(CD_String);
-        MethodHandle bsm = bootstrapMethod.resolveConstantDesc(lookup);
+        MethodHandle bsm = (MethodHandle) bootstrapMethod.resolveConstantDesc(lookup);
         Object[] args = new Object[bootstrapArgs.length + 3];
         args[0] = lookup;
         args[1] = invocationName;
--- a/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -57,14 +57,14 @@
  * @since 12
  */
 public abstract class DynamicConstantDesc<T>
-        implements ConstantDesc<T> {
+        implements ConstantDesc {
 
     private final DirectMethodHandleDesc bootstrapMethod;
-    private final ConstantDesc<?>[] bootstrapArgs;
+    private final ConstantDesc[] bootstrapArgs;
     private final String constantName;
     private final ClassDesc constantType;
 
-    private static final Map<MethodHandleDesc, Function<DynamicConstantDesc<?>, ConstantDesc<?>>> canonicalMap
+    private static final Map<MethodHandleDesc, Function<DynamicConstantDesc<?>, ConstantDesc>> canonicalMap
             = Map.ofEntries(Map.entry(ConstantDescs.BSM_PRIMITIVE_CLASS, DynamicConstantDesc::canonicalizePrimitiveClass),
                             Map.entry(ConstantDescs.BSM_ENUM_CONSTANT, DynamicConstantDesc::canonicalizeEnum),
                             Map.entry(ConstantDescs.BSM_NULL_CONSTANT, DynamicConstantDesc::canonicalizeNull),
@@ -95,7 +95,7 @@
     protected DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod,
                                   String constantName,
                                   ClassDesc constantType,
-                                  ConstantDesc<?>... bootstrapArgs) {
+                                  ConstantDesc... bootstrapArgs) {
         this.bootstrapMethod = requireNonNull(bootstrapMethod);
         this.constantName = validateMemberName(requireNonNull(constantName));
         this.constantType = requireNonNull(constantType);
@@ -139,10 +139,10 @@
      * format
      * @jvms 4.2.2 Unqualified Names
      */
-    public static<T> ConstantDesc<T> ofCanonical(DirectMethodHandleDesc bootstrapMethod,
+    public static<T> ConstantDesc ofCanonical(DirectMethodHandleDesc bootstrapMethod,
                                                  String constantName,
                                                  ClassDesc constantType,
-                                                 ConstantDesc<?>[] bootstrapArgs) {
+                                              ConstantDesc[] bootstrapArgs) {
         return DynamicConstantDesc.<T>ofNamed(bootstrapMethod, constantName, constantType, bootstrapArgs)
                 .tryCanonicalize();
     }
@@ -172,7 +172,7 @@
     public static<T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod,
                                                     String constantName,
                                                     ClassDesc constantType,
-                                                    ConstantDesc<?>... bootstrapArgs) {
+                                                    ConstantDesc... bootstrapArgs) {
         return new AnonymousDynamicConstantDesc<>(bootstrapMethod, constantName, constantType, bootstrapArgs);
     }
 
@@ -194,7 +194,7 @@
      * @jvms 4.2.2 Unqualified Names
      */
     public static<T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod,
-                                               ConstantDesc<?>... bootstrapArgs) {
+                                               ConstantDesc... bootstrapArgs) {
         return ofNamed(bootstrapMethod, DEFAULT_NAME, bootstrapMethod.methodType().returnType(), bootstrapArgs);
     }
 
@@ -249,7 +249,7 @@
      * Returns the bootstrap arguments for this constant
      * @return the bootstrap arguments
      */
-    public ConstantDesc<?>[] bootstrapArgs() {
+    public ConstantDesc[] bootstrapArgs() {
         return bootstrapArgs.clone();
     }
 
@@ -258,7 +258,7 @@
      *
      * @return a {@link List} of the bootstrap arguments, described as {@link ConstantDesc}
      */
-    public List<ConstantDesc<?>> bootstrapArgsList() {
+    public List<ConstantDesc> bootstrapArgsList() {
         return List.of(bootstrapArgs);
     }
 
@@ -266,7 +266,7 @@
     public T resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException {
         // TODO replace with public supported method
         try {
-            MethodHandle bsm = bootstrapMethod.resolveConstantDesc(lookup);
+            MethodHandle bsm = (MethodHandle) bootstrapMethod.resolveConstantDesc(lookup);
             if (bsm.type().parameterCount() < 2 ||
                 !MethodHandles.Lookup.class.isAssignableFrom(bsm.type().parameterType(0))) {
                 throw new BootstrapMethodError(
@@ -287,13 +287,11 @@
         }
     }
 
-    private ConstantDesc<T> tryCanonicalize() {
-        Function<DynamicConstantDesc<?>, ConstantDesc<?>> f = canonicalMap.get(bootstrapMethod);
+    private ConstantDesc tryCanonicalize() {
+        Function<DynamicConstantDesc<?>, ConstantDesc> f = canonicalMap.get(bootstrapMethod);
         if (f != null) {
             try {
-                @SuppressWarnings("unchecked")
-                ConstantDesc<T> converted = (ConstantDesc<T>) f.apply(this);
-                return converted;
+                return f.apply(this);
             }
             catch (Throwable t) {
                 return this;
@@ -302,20 +300,20 @@
         return this;
     }
 
-    private static ConstantDesc<?> canonicalizeNull(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizeNull(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 0)
             return desc;
         return ConstantDescs.NULL;
     }
 
-    private static ConstantDesc<?> canonicalizeEnum(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizeEnum(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 0
             || desc.constantName == null)
             return desc;
         return EnumDesc.of(desc.constantType, desc.constantName);
     }
 
-    private static ConstantDesc<?> canonicalizePrimitiveClass(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizePrimitiveClass(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 0
             || !desc.constantType().equals(CD_Class)
             || desc.constantName == null)
@@ -323,7 +321,7 @@
         return ClassDesc.ofDescriptor(desc.constantName);
     }
 
-    private static ConstantDesc<?> canonicalizeStaticFieldVarHandle(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizeStaticFieldVarHandle(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 3
             || !desc.constantType().equals(CD_VarHandle))
             return desc;
@@ -332,7 +330,7 @@
                                            (ClassDesc) desc.bootstrapArgs[2]);
     }
 
-    private static ConstantDesc<?> canonicalizeFieldVarHandle(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizeFieldVarHandle(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 3
             || !desc.constantType().equals(CD_VarHandle))
             return desc;
@@ -341,7 +339,7 @@
                                      (ClassDesc) desc.bootstrapArgs[2]);
     }
 
-    private static ConstantDesc<?> canonicalizeArrayVarHandle(DynamicConstantDesc<?> desc) {
+    private static ConstantDesc canonicalizeArrayVarHandle(DynamicConstantDesc<?> desc) {
         if (desc.bootstrapArgs.length != 1
             || !desc.constantType().equals(CD_VarHandle))
             return desc;
@@ -379,7 +377,7 @@
     }
 
     private static class AnonymousDynamicConstantDesc<T> extends DynamicConstantDesc<T> {
-        AnonymousDynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc<?>... bootstrapArgs) {
+        AnonymousDynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) {
             super(bootstrapMethod, constantName, constantType, bootstrapArgs);
         }
     }
--- a/src/java.base/share/classes/java/lang/constant/MethodHandleDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/MethodHandleDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -42,7 +42,7 @@
  * @since 12
  */
 public interface MethodHandleDesc
-        extends ConstantDesc<MethodHandle> {
+        extends ConstantDesc {
 
     /**
      * Create a {@linkplain MethodHandleDesc} corresponding to an invocation of a
--- a/src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java	Thu Nov 01 20:25:34 2018 +0100
@@ -42,7 +42,7 @@
  * @since 12
  */
 public interface MethodTypeDesc
-        extends ConstantDesc<MethodType>,
+        extends ConstantDesc,
                 TypeDescriptor.OfMethod<ClassDesc, MethodTypeDesc> {
     /**
      * Create a {@linkplain MethodTypeDesc} given a method descriptor string
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandle.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandle.java	Thu Nov 01 20:25:34 2018 +0100
@@ -437,7 +437,7 @@
  * @author John Rose, JSR 292 EG
  * @since 1.7
  */
-public abstract class MethodHandle implements Constable<MethodHandle> {
+public abstract class MethodHandle implements Constable {
 
     /**
      * Internal marker interface which distinguishes (to the Java compiler)
@@ -1521,7 +1521,7 @@
     }
 
     @Override
-    public Optional<? extends ConstantDesc<MethodHandle>> describeConstable() {
+    public Optional<? extends ConstantDesc> describeConstable() {
         MethodHandleInfo info;
         ClassDesc owner;
         String name;
--- a/src/java.base/share/classes/java/lang/invoke/MethodType.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/invoke/MethodType.java	Thu Nov 01 20:25:34 2018 +0100
@@ -101,7 +101,7 @@
  */
 public final
 class MethodType
-        implements Constable<MethodType>,
+        implements Constable,
                    TypeDescriptor.OfMethod<Class<?>, MethodType>,
                    java.io.Serializable {
     private static final long serialVersionUID = 292L;  // {rtype, {ptype...}}
--- a/src/java.base/share/classes/java/lang/invoke/VarHandle.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/java.base/share/classes/java/lang/invoke/VarHandle.java	Thu Nov 01 20:25:34 2018 +0100
@@ -444,7 +444,7 @@
  * @see MethodType
  * @since 9
  */
-public abstract class VarHandle implements Constable<VarHandle> {
+public abstract class VarHandle implements Constable {
     final VarForm vform;
 
     VarHandle(VarForm vform) {
@@ -2144,13 +2144,13 @@
                 this.bootstrapMethod = bootstrapMethod;
             }
 
-            ConstantDesc<?>[] toBSMArgs(ClassDesc declaringClass, String name, ClassDesc varType) {
+            ConstantDesc[] toBSMArgs(ClassDesc declaringClass, String name, ClassDesc varType) {
                 switch (this) {
                     case FIELD:
                     case STATIC_FIELD:
-                        return new ConstantDesc<?>[] { declaringClass, name, varType };
+                        return new ConstantDesc[] {declaringClass, name, varType };
                     case ARRAY:
-                        return new ConstantDesc<?>[] { declaringClass };
+                        return new ConstantDesc[] {declaringClass };
                     default:
                         throw new InternalError("Cannot reach here");
                 }
@@ -2251,15 +2251,15 @@
                 throws ReflectiveOperationException {
             switch (kind) {
                 case FIELD:
-                    return lookup.findVarHandle(declaringClass.resolveConstantDesc(lookup),
+                    return lookup.findVarHandle((Class<?>) declaringClass.resolveConstantDesc(lookup),
                                                 constantName(),
-                                                varType.resolveConstantDesc(lookup));
+                                                (Class<?>) varType.resolveConstantDesc(lookup));
                 case STATIC_FIELD:
-                    return lookup.findStaticVarHandle(declaringClass.resolveConstantDesc(lookup),
+                    return lookup.findStaticVarHandle((Class<?>) declaringClass.resolveConstantDesc(lookup),
                                                       constantName(),
-                                                      varType.resolveConstantDesc(lookup));
+                                                      (Class<?>) varType.resolveConstantDesc(lookup));
                 case ARRAY:
-                    return MethodHandles.arrayElementVarHandle(declaringClass.resolveConstantDesc(lookup));
+                    return MethodHandles.arrayElementVarHandle((Class<?>) declaringClass.resolveConstantDesc(lookup));
                 default:
                     throw new InternalError("Cannot reach here");
             }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java	Thu Nov 01 20:25:34 2018 +0100
@@ -29,11 +29,9 @@
 import java.util.EnumMap;
 import java.util.EnumSet;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
 
 import com.sun.tools.javac.code.Printer;
 import com.sun.tools.javac.code.Symbol;
@@ -42,9 +40,7 @@
 import com.sun.tools.javac.code.Type;
 import com.sun.tools.javac.code.Type.*;
 import com.sun.tools.javac.code.Types;
-import com.sun.tools.javac.main.Option;
 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
 
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.TypeTag.*;
@@ -109,16 +105,8 @@
         configuration = new RichConfiguration(Options.instance(context), formatter);
         for (WhereClauseKind kind : WhereClauseKind.values())
             whereClauses.put(kind, new LinkedHashMap<Type, JCDiagnostic>());
-        symbolsToRemove.add(syms.constableType.tsym);
-        symbolsToRemove.add(syms.constantDescType.tsym);
-        Options options = Options.instance(context);
-        compactMethodDiags = options.isSet(Option.XDIAGS, "compact") ||
-                options.isUnset(Option.XDIAGS) && options.isUnset("rawDiagnostics");
     }
 
-    Set<TypeSymbol> symbolsToRemove = new HashSet<>();
-    final boolean compactMethodDiags;
-
     @Override
     public String format(JCDiagnostic diag, Locale l) {
         StringBuilder sb = new StringBuilder();
@@ -533,22 +521,7 @@
                 if (indexOf(t, WhereClauseKind.INTERSECTION) == -1) {
                     Type supertype = types.supertype(t);
                     List<Type> interfaces = types.interfaces(t);
-                    ListBuffer<Type> interfaceBuffer = new ListBuffer<>();
-                    boolean removed = false;
-                    if (compactMethodDiags) {
-                        for (Type interf : interfaces) {
-                            if (!symbolsToRemove.contains(interf.tsym)) {
-                                interfaceBuffer.add(interf);
-                            } else {
-                                removed = true;
-                            }
-                        }
-                        interfaces = interfaceBuffer.toList();
-                    }
                     JCDiagnostic d = diags.fragment(Fragments.WhereIntersection(t, interfaces.prepend(supertype)));
-                    if (removed) {
-                        d.setFlag(DiagnosticFlag.COMPRESSED);
-                    }
                     whereClauses.get(WhereClauseKind.INTERSECTION).put(t, d);
                     visit(supertype);
                     visit(interfaces);
--- a/test/jdk/java/lang/constant/ClassDescTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/jdk/java/lang/constant/ClassDescTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -58,15 +58,15 @@
         if (!r.descriptorString().equals("V")) {
             assertEquals(r, r.arrayType().componentType());
             // Commutativity: array -> resolve -> componentType -> toSymbolic
-            assertEquals(r, r.arrayType().resolveConstantDesc(LOOKUP).getComponentType().describeConstable().orElseThrow());
+            assertEquals(r, ((Class<?>) r.arrayType().resolveConstantDesc(LOOKUP)).getComponentType().describeConstable().orElseThrow());
             // Commutativity: resolve -> array -> toSymbolic -> component type
-            assertEquals(r, Array.newInstance(r.resolveConstantDesc(LOOKUP), 0).getClass().describeConstable().orElseThrow().componentType());
+            assertEquals(r, Array.newInstance(((Class<?>) r.resolveConstantDesc(LOOKUP)), 0).getClass().describeConstable().orElseThrow().componentType());
         }
 
         if (r.isArray()) {
             assertEquals(r, r.componentType().arrayType());
-            assertEquals(r, r.resolveConstantDesc(LOOKUP).getComponentType().describeConstable().orElseThrow().arrayType());
-            assertEquals(r, Array.newInstance(r.componentType().resolveConstantDesc(LOOKUP), 0).getClass().describeConstable().orElseThrow());
+            assertEquals(r, ((Class<?>) r.resolveConstantDesc(LOOKUP)).getComponentType().describeConstable().orElseThrow().arrayType());
+            assertEquals(r, Array.newInstance(((Class<?>) r.componentType().resolveConstantDesc(LOOKUP)), 0).getClass().describeConstable().orElseThrow());
         }
     }
 
@@ -87,7 +87,7 @@
                     && ((f.getModifiers() & Modifier.STATIC) != 0)
                     && ((f.getModifiers() & Modifier.PUBLIC) != 0)) {
                     ClassDesc cr = (ClassDesc) f.get(null);
-                    Class c = cr.resolveConstantDesc(MethodHandles.lookup());
+                    Class c = (Class)cr.resolveConstantDesc(MethodHandles.lookup());
                     testClassDesc(cr, c);
                     ++tested;
                 }
@@ -212,9 +212,9 @@
 
             assertEquals(a1, ClassDesc.ofDescriptor("[" + d));
             assertEquals(a2, ClassDesc.ofDescriptor("[[" + d));
-            assertEquals(classToDescriptor(a0.resolveConstantDesc(LOOKUP)), a0.descriptorString());
-            assertEquals(classToDescriptor(a1.resolveConstantDesc(LOOKUP)), a1.descriptorString());
-            assertEquals(classToDescriptor(a2.resolveConstantDesc(LOOKUP)), a2.descriptorString());
+            assertEquals(classToDescriptor((Class<?>) a0.resolveConstantDesc(LOOKUP)), a0.descriptorString());
+            assertEquals(classToDescriptor((Class<?>) a1.resolveConstantDesc(LOOKUP)), a1.descriptorString());
+            assertEquals(classToDescriptor((Class<?>) a2.resolveConstantDesc(LOOKUP)), a2.descriptorString());
 
             testBadArrayRank(ConstantDescs.CD_int);
             testBadArrayRank(ConstantDescs.CD_String);
--- a/test/jdk/java/lang/constant/CondyDescTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/jdk/java/lang/constant/CondyDescTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -22,6 +22,7 @@
  */
 
 import java.lang.Enum.EnumDesc;
+import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.VarHandle;
 import java.lang.invoke.VarHandle.VarHandleDesc;
@@ -55,7 +56,7 @@
  */
 @Test
 public class CondyDescTest extends SymbolicDescTest {
-    private final static ConstantDesc<?>[] EMPTY_ARGS = new ConstantDesc<?>[0];
+    private final static ConstantDesc[] EMPTY_ARGS = new ConstantDesc[0];
     private final static ClassDesc CD_ConstantBootstraps = ClassDesc.of("java.lang.invoke.ConstantBootstraps");
 
     private static<T> void testDCR(DynamicConstantDesc<T> r, T c) throws ReflectiveOperationException {
@@ -97,7 +98,7 @@
         DirectMethodHandleDesc invoker = ConstantDescs.ofConstantBootstrap(CD_ConstantBootstraps, "invoke", CD_Object, CD_MethodHandle, CD_Object.arrayType());
         DirectMethodHandleDesc format = MethodHandleDesc.of(DirectMethodHandleDesc.Kind.STATIC, CD_String, "format", CD_String, CD_String, CD_Object.arrayType());
 
-        String s = (String) invoker.resolveConstantDesc(LOOKUP)
+        String s = (String) ((MethodHandle) invoker.resolveConstantDesc(LOOKUP))
                                    .invoke(LOOKUP, "", String.class,
                                            format.resolveConstantDesc(LOOKUP), "%s%s", "moo", "cow");
         assertEquals(s, "moocow");
@@ -165,9 +166,9 @@
         assertEquals(3, ints[2]);
     }
 
-    private<T> void assertLifted(ConstantDesc<T> prototype,
+    private<T> void assertLifted(ConstantDesc prototype,
                                  DynamicConstantDesc<T> nonCanonical,
-                                 ConstantDesc<T> canonical) {
+                                 ConstantDesc canonical) {
         Class<?> clazz = prototype.getClass();
 
         assertNotSame(canonical, nonCanonical);
@@ -202,14 +203,14 @@
 
         ClassDesc testClass = ClassDesc.of("CondyDescTest").inner("MyClass");
         assertLifted(VarHandleDesc.ofStaticField(testClass, "sf", CD_int),
-                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_STATIC_FIELD, "sf", CD_VarHandle, new ConstantDesc<?>[] {testClass, "sf", CD_int }),
-                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_STATIC_FIELD, "sf", CD_VarHandle, new ConstantDesc<?>[] {testClass, "sf", CD_int }));
+                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_STATIC_FIELD, "sf", CD_VarHandle, new ConstantDesc[] {testClass, "sf", CD_int }),
+                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_STATIC_FIELD, "sf", CD_VarHandle, new ConstantDesc[] {testClass, "sf", CD_int }));
         assertLifted(VarHandleDesc.ofField(testClass, "f", CD_int),
-                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_FIELD, "f", CD_VarHandle, new ConstantDesc<?>[] {testClass, "f", CD_int }),
-                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_FIELD, "f", CD_VarHandle, new ConstantDesc<?>[] {testClass, "f", CD_int }));
+                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_FIELD, "f", CD_VarHandle, new ConstantDesc[] {testClass, "f", CD_int }),
+                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_FIELD, "f", CD_VarHandle, new ConstantDesc[] {testClass, "f", CD_int }));
         assertLifted(VarHandleDesc.ofArray(CD_int.arrayType()),
-                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_ARRAY, "_", CD_VarHandle, new ConstantDesc<?>[] {CD_int.arrayType() }),
-                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_ARRAY, "_", CD_VarHandle, new ConstantDesc<?>[] {CD_int.arrayType() }));
+                     DynamicConstantDesc.ofNamed(ConstantDescs.BSM_VARHANDLE_ARRAY, "_", CD_VarHandle, new ConstantDesc[] {CD_int.arrayType() }),
+                     DynamicConstantDesc.ofCanonical(ConstantDescs.BSM_VARHANDLE_ARRAY, "_", CD_VarHandle, new ConstantDesc[] {CD_int.arrayType() }));
     }
 
 }
--- a/test/jdk/java/lang/constant/MethodHandleDescTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/jdk/java/lang/constant/MethodHandleDescTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -94,7 +94,7 @@
     private void testMethodHandleDesc(MethodHandleDesc r, MethodHandle mh) throws ReflectiveOperationException {
         testMethodHandleDesc(r);
 
-        assertMHEquals(r.resolveConstantDesc(LOOKUP), mh);
+        assertMHEquals(((MethodHandle) r.resolveConstantDesc(LOOKUP)), mh);
         assertEquals(mh.describeConstable().orElseThrow(), r);
 
         // compare extractable properties: refKind, owner, name, type
@@ -131,7 +131,7 @@
                                                    MethodTypeDesc.of(CD_Integer, CD_int));
         MethodHandleDesc takesInteger = mhr.asType(MethodTypeDesc.of(CD_Integer, CD_Integer));
         testMethodHandleDesc(takesInteger);
-        MethodHandle mh1 = takesInteger.resolveConstantDesc(LOOKUP);
+        MethodHandle mh1 = (MethodHandle) takesInteger.resolveConstantDesc(LOOKUP);
         assertEquals((Integer) 3, (Integer) mh1.invokeExact((Integer) 3));
         assertEquals(takesInteger.toString(), "MethodHandleDesc[STATIC/Integer::valueOf(int)Integer].asType(Integer)Integer");
 
@@ -143,7 +143,7 @@
 
         MethodHandleDesc takesInt = takesInteger.asType(MethodTypeDesc.of(CD_Integer, CD_int));
         testMethodHandleDesc(takesInt);
-        MethodHandle mh2 = takesInt.resolveConstantDesc(LOOKUP);
+        MethodHandle mh2 = (MethodHandle) takesInt.resolveConstantDesc(LOOKUP);
         assertEquals((Integer) 3, (Integer) mh2.invokeExact(3));
 
         try {
@@ -174,47 +174,47 @@
         for (MethodHandleDesc r : List.of(ctorDesc, staticMethodDesc, staticIMethodDesc, instanceMethodDesc, instanceIMethodDesc))
             testMethodHandleDesc(r);
 
-        TestHelpers.TestClass instance = (TestHelpers.TestClass) ctorDesc.resolveConstantDesc(LOOKUP).invokeExact();
-        TestHelpers.TestClass instance2 = (TestHelpers.TestClass) ctorDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact();
+        TestHelpers.TestClass instance = (TestHelpers.TestClass) ((MethodHandle)ctorDesc.resolveConstantDesc(LOOKUP)).invokeExact();
+        TestHelpers.TestClass instance2 = (TestHelpers.TestClass) ((MethodHandle)ctorDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact();
         TestHelpers.TestInterface instanceI = instance;
 
         assertNotSame(instance, instance2);
 
-        assertEquals(5, (int) staticMethodDesc.resolveConstantDesc(LOOKUP).invokeExact(5));
-        assertEquals(5, (int) staticMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(5));
-        assertEquals(0, (int) staticIMethodDesc.resolveConstantDesc(LOOKUP).invokeExact(5));
-        assertEquals(0, (int) staticIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(5));
+        assertEquals(5, (int) ((MethodHandle)staticMethodDesc.resolveConstantDesc(LOOKUP)).invokeExact(5));
+        assertEquals(5, (int) ((MethodHandle)staticMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(5));
+        assertEquals(0, (int) ((MethodHandle)staticIMethodDesc.resolveConstantDesc(LOOKUP)).invokeExact(5));
+        assertEquals(0, (int) ((MethodHandle)staticIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(5));
 
-        assertEquals(5, (int) instanceMethodDesc.resolveConstantDesc(LOOKUP).invokeExact(instance, 5));
-        assertEquals(5, (int) instanceMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance, 5));
-        assertEquals(5, (int) instanceIMethodDesc.resolveConstantDesc(LOOKUP).invokeExact(instanceI, 5));
-        assertEquals(5, (int) instanceIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instanceI, 5));
+        assertEquals(5, (int) ((MethodHandle)instanceMethodDesc.resolveConstantDesc(LOOKUP)).invokeExact(instance, 5));
+        assertEquals(5, (int) ((MethodHandle)instanceMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance, 5));
+        assertEquals(5, (int) ((MethodHandle)instanceIMethodDesc.resolveConstantDesc(LOOKUP)).invokeExact(instanceI, 5));
+        assertEquals(5, (int) ((MethodHandle)instanceIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instanceI, 5));
 
         try { superMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(-1, (int) superMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance, 5));
+        assertEquals(-1, (int) ((MethodHandle)superMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance, 5));
 
         try { superIMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(0, (int) superIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance, 5));
+        assertEquals(0, (int) ((MethodHandle)superIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance, 5));
 
         try { privateMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(5, (int) privateMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance, 5));
+        assertEquals(5, (int) ((MethodHandle)privateMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance, 5));
 
         try { privateIMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(0, (int) privateIMethodDesc.resolveConstantDesc(TestHelpers.TestInterface.LOOKUP).invokeExact(instanceI, 5));
-        assertEquals(0, (int) privateIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invoke(instanceI, 5));
+        assertEquals(0, (int) ((MethodHandle)privateIMethodDesc.resolveConstantDesc(TestHelpers.TestInterface.LOOKUP)).invokeExact(instanceI, 5));
+        assertEquals(0, (int) ((MethodHandle)privateIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invoke(instanceI, 5));
 
         try { privateStaticMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(5, (int) privateStaticMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(5));
+        assertEquals(5, (int) ((MethodHandle)privateStaticMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(5));
 
         try { privateStaticIMethodDesc.resolveConstantDesc(LOOKUP); fail(); }
         catch (IllegalAccessException e) { /* expected */ }
-        assertEquals(0, (int) privateStaticIMethodDesc.resolveConstantDesc(TestHelpers.TestInterface.LOOKUP).invokeExact(5));
-        assertEquals(0, (int) privateStaticIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(5));
+        assertEquals(0, (int) ((MethodHandle)privateStaticIMethodDesc.resolveConstantDesc(TestHelpers.TestInterface.LOOKUP)).invokeExact(5));
+        assertEquals(0, (int) ((MethodHandle)privateStaticIMethodDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(5));
 
         MethodHandleDesc staticSetterDesc = MethodHandleDesc.ofField(STATIC_SETTER, testClass, "sf", CD_int);
         MethodHandleDesc staticGetterDesc = MethodHandleDesc.ofField(STATIC_GETTER, testClass, "sf", CD_int);
@@ -225,22 +225,22 @@
         for (MethodHandleDesc r : List.of(staticSetterDesc, staticGetterDesc, staticGetterIDesc, setterDesc, getterDesc))
             testMethodHandleDesc(r);
 
-        staticSetterDesc.resolveConstantDesc(LOOKUP).invokeExact(6); assertEquals(TestHelpers.TestClass.sf, 6);
-        assertEquals(6, (int) staticGetterDesc.resolveConstantDesc(LOOKUP).invokeExact());
-        assertEquals(6, (int) staticGetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact());
-        staticSetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(7); assertEquals(TestHelpers.TestClass.sf, 7);
-        assertEquals(7, (int) staticGetterDesc.resolveConstantDesc(LOOKUP).invokeExact());
-        assertEquals(7, (int) staticGetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact());
+        ((MethodHandle)staticSetterDesc.resolveConstantDesc(LOOKUP)).invokeExact(6); assertEquals(TestHelpers.TestClass.sf, 6);
+        assertEquals(6, (int) ((MethodHandle)staticGetterDesc.resolveConstantDesc(LOOKUP)).invokeExact());
+        assertEquals(6, (int) ((MethodHandle)staticGetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact());
+        ((MethodHandle)staticSetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(7); assertEquals(TestHelpers.TestClass.sf, 7);
+        assertEquals(7, (int) ((MethodHandle)staticGetterDesc.resolveConstantDesc(LOOKUP)).invokeExact());
+        assertEquals(7, (int) ((MethodHandle)staticGetterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact());
 
-        assertEquals(3, (int) staticGetterIDesc.resolveConstantDesc(LOOKUP).invokeExact());
-        assertEquals(3, (int) staticGetterIDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact());
+        assertEquals(3, (int) ((MethodHandle)staticGetterIDesc.resolveConstantDesc(LOOKUP)).invokeExact());
+        assertEquals(3, (int) ((MethodHandle)staticGetterIDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact());
 
-        setterDesc.resolveConstantDesc(LOOKUP).invokeExact(instance, 6); assertEquals(instance.f, 6);
-        assertEquals(6, (int) getterDesc.resolveConstantDesc(LOOKUP).invokeExact(instance));
-        assertEquals(6, (int) getterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance));
-        setterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance, 7); assertEquals(instance.f, 7);
-        assertEquals(7, (int) getterDesc.resolveConstantDesc(LOOKUP).invokeExact(instance));
-        assertEquals(7, (int) getterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP).invokeExact(instance));
+        ((MethodHandle)setterDesc.resolveConstantDesc(LOOKUP)).invokeExact(instance, 6); assertEquals(instance.f, 6);
+        assertEquals(6, (int) ((MethodHandle)getterDesc.resolveConstantDesc(LOOKUP)).invokeExact(instance));
+        assertEquals(6, (int) ((MethodHandle)getterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance));
+        ((MethodHandle)setterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance, 7); assertEquals(instance.f, 7);
+        assertEquals(7, (int) ((MethodHandle)getterDesc.resolveConstantDesc(LOOKUP)).invokeExact(instance));
+        assertEquals(7, (int) ((MethodHandle)getterDesc.resolveConstantDesc(TestHelpers.TestClass.LOOKUP)).invokeExact(instance));
     }
 
     private void assertBadArgs(Supplier<MethodHandleDesc> supplier, String s) {
@@ -279,7 +279,7 @@
                     && ((f.getModifiers() & Modifier.STATIC) != 0)
                     && ((f.getModifiers() & Modifier.PUBLIC) != 0)) {
                     MethodHandleDesc r = (MethodHandleDesc) f.get(null);
-                    MethodHandle m = r.resolveConstantDesc(MethodHandles.lookup());
+                    MethodHandle m = (MethodHandle)r.resolveConstantDesc(MethodHandles.lookup());
                     testMethodHandleDesc(r, m);
                     ++tested;
                 }
--- a/test/jdk/java/lang/constant/MethodTypeDescTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/jdk/java/lang/constant/MethodTypeDescTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -100,7 +100,7 @@
             ClassDesc rc = ClassDesc.ofDescriptor(r);
             MethodTypeDesc newDesc = mtDesc.changeReturnType(rc);
             assertEquals(newDesc, MethodTypeDesc.of(rc, paramTypes));
-            testMethodTypeDesc(newDesc, mt.changeReturnType(rc.resolveConstantDesc(LOOKUP)));
+            testMethodTypeDesc(newDesc, mt.changeReturnType((Class<?>)rc.resolveConstantDesc(LOOKUP)));
         }
 
         // changeParamType
@@ -111,7 +111,7 @@
                 ps[i] = pc;
                 MethodTypeDesc newDesc = mtDesc.changeParameterType(i, pc);
                 assertEquals(newDesc, MethodTypeDesc.of(returnType, ps));
-                testMethodTypeDesc(newDesc, mt.changeParameterType(i, pc.resolveConstantDesc(LOOKUP)));
+                testMethodTypeDesc(newDesc, mt.changeParameterType(i, (Class<?>)pc.resolveConstantDesc(LOOKUP)));
             }
         }
 
@@ -138,7 +138,7 @@
                                           .toArray(ClassDesc[]::new);
                 MethodTypeDesc newDesc = mtDesc.insertParameterTypes(i, p);
                 assertEquals(newDesc, MethodTypeDesc.of(returnType, ps));
-                testMethodTypeDesc(newDesc, mt.insertParameterTypes(i, p.resolveConstantDesc(LOOKUP)));
+                testMethodTypeDesc(newDesc, mt.insertParameterTypes(i, (Class<?>)p.resolveConstantDesc(LOOKUP)));
             }
         }
 
--- a/test/jdk/java/lang/constant/SymbolicDescTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/jdk/java/lang/constant/SymbolicDescTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -86,26 +86,26 @@
         return ClassDesc.ofDescriptor(c.descriptorString());
     }
 
-    static<T> void testSymbolicDesc(ConstantDesc<T> desc) throws ReflectiveOperationException {
+    static<T> void testSymbolicDesc(ConstantDesc desc) throws ReflectiveOperationException {
         testSymbolicDesc(desc, false);
     }
 
-    static<T> void testSymbolicDescForwardOnly(ConstantDesc<T> desc) throws ReflectiveOperationException {
+    static<T> void testSymbolicDescForwardOnly(ConstantDesc desc) throws ReflectiveOperationException {
         testSymbolicDesc(desc, true);
     }
 
-    private static<T> void testSymbolicDesc(ConstantDesc<T> desc, boolean forwardOnly) throws ReflectiveOperationException {
+    private static<T> void testSymbolicDesc(ConstantDesc desc, boolean forwardOnly) throws ReflectiveOperationException {
         // Round trip sym -> resolve -> toSymbolicDesc
-        Constable<ConstantDesc<T>> constable = (Constable<ConstantDesc<T>>) desc.resolveConstantDesc(LOOKUP);
-        Optional<? extends ConstantDesc<ConstantDesc<T>>> described = constable.describeConstable();
+        Constable constable = (Constable) desc.resolveConstantDesc(LOOKUP);
+        Optional<? extends ConstantDesc> described = constable.describeConstable();
         if (!forwardOnly) {
             assertEquals(desc, described.orElseThrow());
         }
 
         // Round trip sym -> quoted sym -> resolve
         if (desc instanceof Constable) {
-            Optional<ConstantDesc<ConstantDesc<T>>> opt = (Optional<ConstantDesc<ConstantDesc<T>>>) ((Constable) desc).describeConstable();
-            ConstantDesc<T> sr = opt.orElseThrow().resolveConstantDesc(LOOKUP);
+            Optional<ConstantDesc> opt = (Optional<ConstantDesc>) ((Constable) desc).describeConstable();
+            ConstantDesc sr = (ConstantDesc) opt.orElseThrow().resolveConstantDesc(LOOKUP);
             assertEquals(sr, desc);
         }
     }
--- a/test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java	Thu Nov 01 20:25:34 2018 +0100
@@ -63,7 +63,7 @@
                 + "<ul>\n"
                 + "<li class=\"circle\">java.lang.Object\n"
                 + "<ul>\n"
-                + "<li class=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang.Comparable&lt;T&gt;, java.lang.constant.Constable&lt;T&gt;, java.io.Serializable)\n"
+                + "<li class=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang.Comparable&lt;T&gt;, java.lang.constant.Constable, java.io.Serializable)\n"
                 + "<ul>\n"
                 + "<li class=\"circle\">pkg.<a href=\"Coin.html\" "
                 + "title=\"enum in pkg\"><span class=\"typeNameLink\">Coin</span></a></li>\n"
--- a/test/langtools/jdk/jshell/TypeNameTest.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/jdk/jshell/TypeNameTest.java	Thu Nov 01 20:25:34 2018 +0100
@@ -193,7 +193,7 @@
 
         assertEval("<Z> Z choose(Z z1, Z z2) { return z1; }");
         assertType("choose(1, 1L);",
-                "Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends Number&Comparable<?>&java.lang.constant.Constable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>",
+                  "Number&Comparable<? extends Number&Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc",
                 "Object");
     }
 
--- a/test/langtools/tools/javac/T8187978/FilterOutCandidatesForDiagnosticsTest.out	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/tools/javac/T8187978/FilterOutCandidatesForDiagnosticsTest.out	Thu Nov 01 20:25:34 2018 +0100
@@ -1,2 +1,2 @@
-FilterOutCandidatesForDiagnosticsTest.java:12:64: compiler.err.cant.apply.symbols: kindname.method, add, java.lang.String,{(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>,java.lang.Object[],int), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inconvertible.types: java.lang.String, compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>))),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(int,compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>), (compiler.misc.arg.length.mismatch))}
+FilterOutCandidatesForDiagnosticsTest.java:12:64: compiler.err.cant.apply.symbols: kindname.method, add, java.lang.String,{(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc,java.lang.Object[],int), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inconvertible.types: java.lang.String, compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc))),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(int,compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.arg.length.mismatch))}
 1 error
--- a/test/langtools/tools/javac/diags/examples/EnumNoSubclassing.java	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/tools/javac/diags/examples/EnumNoSubclassing.java	Thu Nov 01 20:25:34 2018 +0100
@@ -22,5 +22,7 @@
  */
 
 // key: compiler.err.enum.no.subclassing
+// key: compiler.note.unchecked.filename
+// key: compiler.note.unchecked.recompile
 
 class EnumNoSubclassing extends Enum { }
--- a/test/langtools/tools/javac/enum/FauxEnum1.out	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/tools/javac/enum/FauxEnum1.out	Thu Nov 01 20:25:34 2018 +0100
@@ -1,2 +1,4 @@
 FauxEnum1.java:10:8: compiler.err.enum.no.subclassing
+- compiler.note.unchecked.filename: FauxEnum1.java
+- compiler.note.unchecked.recompile
 1 error
--- a/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.out	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.out	Thu Nov 01 20:25:34 2018 +0100
@@ -4,10 +4,10 @@
 EagerReturnTypeResolutionTestb.java:45:26: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<?>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:74:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:75:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:77:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:77:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:78:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:79:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:81:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:81:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:82:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:83:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:85:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<?>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<?>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
@@ -17,10 +17,10 @@
 EagerReturnTypeResolutionTestb.java:90:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<?>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<?>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:91:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:92:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:94:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.J<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:94:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.J<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:95:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:96:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:98:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:98:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:99:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:100:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:102:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.String>)
@@ -28,10 +28,10 @@
 EagerReturnTypeResolutionTestb.java:104:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:105:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:106:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:108:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:108:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:109:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:110:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:112:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.Constable<?>&java.lang.constant.ConstantDesc<?>>&java.lang.constant.ConstantDesc<?>>>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:112:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:113:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:114:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:174:9: compiler.err.cant.apply.symbol: kindname.method, takeLong, long, java.lang.Double, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.lang.Double, java.lang.Long,java.lang.Object))
--- a/test/langtools/tools/javac/varargs/6806876/T6806876.out	Wed Oct 31 11:08:50 2018 -0300
+++ b/test/langtools/tools/javac/varargs/6806876/T6806876.out	Thu Nov 01 20:25:34 2018 +0100
@@ -1,4 +1,4 @@
-T6806876.java:11:32: compiler.warn.unchecked.generic.array.creation: java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>>&java.lang.constant.Constable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>&java.lang.constant.Constable<?>>>&java.lang.constant.ConstantDesc<? extends java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<? extends java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>>&java.lang.constant.Constable<? extends java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>&java.lang.constant.Constable<?>>&java.lang.constant.ConstantDesc<? extends java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>&java.lang.constant.ConstantDesc<?>&java.lang.constant.Constable<?>>&java.lang.constant.Constable<?>>[]
+T6806876.java:11:32: compiler.warn.unchecked.generic.array.creation: java.lang.Number&java.lang.Comparable<? extends java.lang.Number&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc[]
 T6806876.java:14:19: compiler.warn.unchecked.varargs.non.reifiable.type: T
 - compiler.err.warnings.and.werror
 1 error