diff --git a/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccess.java b/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccess.java
index f07d330..ecad27b 100644
--- a/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccess.java
+++ b/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccess.java
@@ -13,6 +13,24 @@
public interface ModuleAccess {
boolean isSupport();
+ /**
+ * special Module to mean "everyone"
+ *
+ * Only used for {@link #addExports(Object, String, Object)}, {@link #addOpens(Object, String, Object)}
+ *
+ * @since 1.6.0
+ */
+ Object getEVERYONE_MODULE();
+
+ /**
+ * special Module to mean "all unnamed modules"
+ *
+ * Only used for {@link #addExports(Object, String, Object)}, {@link #addOpens(Object, String, Object)}
+ *
+ * @since 1.6.0
+ */
+ Object getALL_UNNAMED_MODULE();
+
/**
* klass.getModule()
*/
diff --git a/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccessImpl.java b/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccessImpl.java
index be19850..38eecad 100644
--- a/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccessImpl.java
+++ b/api/src/main/java/io/github/karlatemp/unsafeaccessor/ModuleAccessImpl.java
@@ -16,6 +16,16 @@ public Object getModule(Class> klass) {
throw new UnsupportedOperationException();
}
+ @Override
+ public Object getEVERYONE_MODULE() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Object getALL_UNNAMED_MODULE() {
+ throw new UnsupportedOperationException();
+ }
+
@Override
public Package definePackage(ClassLoader cl, String name, Object module) {
throw new UnsupportedOperationException();
@@ -83,6 +93,16 @@ public boolean isSupport() {
return false;
}
+ @Override
+ public Object getEVERYONE_MODULE() {
+ return null;
+ }
+
+ @Override
+ public Object getALL_UNNAMED_MODULE() {
+ return null;
+ }
+
@Override
public Object getModule(Class> klass) {
return null;
diff --git a/api/src/main/java/io/github/karlatemp/unsafeaccessor/Root.java b/api/src/main/java/io/github/karlatemp/unsafeaccessor/Root.java
index f724f75..6721e7d 100644
--- a/api/src/main/java/io/github/karlatemp/unsafeaccessor/Root.java
+++ b/api/src/main/java/io/github/karlatemp/unsafeaccessor/Root.java
@@ -6,6 +6,7 @@
import java.lang.invoke.MethodHandles;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
+import java.util.function.Consumer;
/**
* JVM Root Access.
@@ -177,4 +178,28 @@ public static ModuleAccess getModuleAccess() {
getUnsafe();
return Secret.MACCESS;
}
+
+ static class ObjectInitializer {
+ static Consumer