diff --git a/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java b/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java index 35dd38fd..08478dff 100644 --- a/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java +++ b/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.OutputStream; import java.lang.annotation.Annotation; +import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.ProtectionDomain; @@ -1231,14 +1232,10 @@ else if (!genericParameterBuilders.isEmpty()) { _hasBeenCreated = true; - _generatedClass = (Class) getUnsafeInstance().defineClass( - fullName, - classBytes, - 0, - classBytes.length, - Thread.currentThread().getContextClassLoader(), - _protectionDomain - ); + MethodHandles.Lookup lookup = MethodHandles.lookup(); + MethodHandles.Lookup privateLookup = MethodHandles.privateLookupIn(Class.forName(fullName), lookup); + _generatedClass = (Class)privateLookup.defineClass(classBytes); + RuntimeHelpers.ensureClassInitialized(_generatedClass);