Peter spots the redundant read edges are added to dynamic module when creating a proxy class. Proxy class does not access super interfaces of proxy interfaces. I have verified this simple patch with all core tests and JCK api tests.
diff --git a/src/java.base/share/classes/java/lang/reflect/Proxy.java b/src/java.base/share/classes/java/lang/reflect/Proxy.java --- a/src/java.base/share/classes/java/lang/reflect/Proxy.java +++ b/src/java.base/share/classes/java/lang/reflect/Proxy.java @@ -804,11 +804,6 @@ continue; } ensureAccess(target, c); - - // add all superinterfaces - for (Class<?> intf : c.getInterfaces()) { - deque.add(intf); - } } // set up proxy class access to types referenced in the method signature