--- old/src/java.base/share/classes/jdk/internal/reflect/UnsafeFieldAccessorFactory.java 2020-03-26 16:00:51.000000000 -0700 +++ new/src/java.base/share/classes/jdk/internal/reflect/UnsafeFieldAccessorFactory.java 2020-03-26 16:00:50.000000000 -0700 @@ -35,7 +35,7 @@ boolean isFinal = Modifier.isFinal(field.getModifiers()); boolean isVolatile = Modifier.isVolatile(field.getModifiers()); boolean isQualified = isFinal || isVolatile; - boolean isReadOnly = isFinal && (isStatic || !override); + boolean isReadOnly = isFinal && (isStatic || !override || field.getDeclaringClass().isHiddenClass()); if (isStatic) { // This code path does not guarantee that the field's // declaring class has been initialized, but it must be