--- old/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java 2016-11-01 11:28:36.000000000 +0000 +++ new/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java 2016-11-01 11:28:36.000000000 +0000 @@ -364,6 +364,16 @@ } } + public final Constructor newConstructorForSerialization(Class cl, + Constructor constructorToCall) + { + if (constructorToCall.getDeclaringClass() == cl) { + constructorToCall.setAccessible(true); + return constructorToCall; + } + return generateConstructor(cl, constructorToCall); + } + public final Constructor newConstructorForSerialization(Class cl) { Class initCl = cl; while (Serializable.class.isAssignableFrom(initCl)) { @@ -383,6 +393,12 @@ } catch (NoSuchMethodException ex) { return null; } + return generateConstructor(cl, constructorToCall); + } + + private final Constructor generateConstructor(Class cl, + Constructor constructorToCall) { + ConstructorAccessor acc = new MethodAccessorGenerator(). generateSerializationConstructor(cl,