Private nested record cannot be serialized (original) (raw)

Describe the bug
I am getting this exception:

com.esotericsoftware.kryo.KryoException: java.lang.IllegalAccessException: class com.esotericsoftware.kryo.serializers.RecordSerializer cannot access a member of class mypkg.A$B with modifiers "public"
    at com.esotericsoftware.kryo.serializers.RecordSerializer.componentValue(RecordSerializer.java:208)
    at com.esotericsoftware.kryo.serializers.RecordSerializer.write(RecordSerializer.java:92)
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642)
    at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:70)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642)
    at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:70)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:711)
    ...
Caused by: java.lang.IllegalAccessException: class com.esotericsoftware.kryo.serializers.RecordSerializer cannot access a member of class mypkg.A$B with modifiers "public"
    at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
    at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
    at java.base/java.lang.reflect.Method.invoke(Method.java:560)
    at com.esotericsoftware.kryo.serializers.RecordSerializer.componentValue(RecordSerializer.java:206)
    ... 19 more

To Reproduce

public class A { private static record B(String y) {} private B x; }

// serialized with: kryo.writeClassAndObject(output, someA);

Environment:

Additional context
There's no exception when the record is public.