This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fury.git


The following commit(s) were added to refs/heads/main by this push:
     new 1f1528fd feat(java): support graalvm 17/21/22 (#1845)
1f1528fd is described below

commit 1f1528fd832f9a346e3573c9cf7bed2fbd2be09a
Author: Shawn Yang <[email protected]>
AuthorDate: Sun Sep 22 23:21:03 2024 -0700

    feat(java): support graalvm 17/21/22 (#1845)
    
    ## What does this PR do?
    
    - Support  graalvm 17/21/22
    - Add ci for Fury graalvm 17/22 support
    
    ## Related issues
    
    https://github.com/apache/fury/pull/1813
    
    
    ## Does this PR introduce any user-facing change?
    
    <!--
    If any user-facing interface changes, please [open an
    issue](https://github.com/apache/fury/issues/new/choose) describing the
    need to do so and update the document if necessary.
    -->
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    ## Benchmark
    
    <!--
    When the PR has an impact on performance (if you don't know whether the
    PR will have an impact on performance, you can submit the PR first, and
    if it will have impact on performance, the code reviewer will explain
    it), be sure to attach a benchmark data here.
    -->
---
 .github/workflows/ci.yml                           |   5 +-
 .../org/apache/fury/graalvm/CollectionExample.java |   6 +-
 .../org/apache/fury/graalvm/CompatibleExample.java |  12 +-
 .../fury/graalvm/CompatibleThreadSafeExample.java  |   1 +
 .../main/java/org/apache/fury/graalvm/Example.java |   2 +-
 .../main/java/org/apache/fury/graalvm/Main.java    |   1 +
 .../java/org/apache/fury/graalvm/ProxyExample.java |  14 +-
 .../fury/graalvm/ScopedCompatibleExample.java      |  16 +-
 .../org/apache/fury/graalvm/ThreadSafeExample.java |   6 +-
 .../graalvm/record/CompatibleRecordExample.java    |  10 +-
 .../apache/fury/graalvm/record/RecordExample.java  |  15 +-
 .../apache/fury/graalvm/record/RecordExample2.java |  21 +-
 .../graalvm_tests/native-image.properties          |   4 +-
 .../main/java/org/apache/fury/ThreadLocalFury.java |   3 -
 .../main/java/org/apache/fury/config/Config.java   |  11 +-
 .../java/org/apache/fury/config/FuryBuilder.java   |   7 +
 .../org/apache/fury/resolver/ClassResolver.java    |  65 +-
 .../org/apache/fury/util/function/Functions.java   |  49 +-
 .../fury-core/native-image.properties              | 875 +++++++++++++++++----
 .../fury/serializer/CodegenSerializerTest.java     |   2 +-
 20 files changed, 939 insertions(+), 186 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index cec90a08..002b66e2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -89,11 +89,14 @@ jobs:
   graalvm:
     name: GraalVM CI
     runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java-version: ["17", "21", "22"]
     steps:
       - uses: actions/checkout@v4
       - uses: graalvm/setup-graalvm@v1
         with:
-          java-version: "21"
+          java-version: ${{ matrix.java-version }}
           distribution: "graalvm"
           github-token: ${{ secrets.GITHUB_TOKEN }}
           native-image-job-reports: "true"
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
index 3a53d5f5..222cc471 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
@@ -32,7 +32,11 @@ public class CollectionExample {
   static Fury fury;
 
   static {
-    fury = Fury.builder().requireClassRegistration(true).build();
+    fury =
+        Fury.builder()
+            .withName(CollectionExample.class.getName())
+            .requireClassRegistration(true)
+            .build();
   }
 
   static void test(Fury fury) {
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
index 060d82f1..37c92fe6 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
@@ -26,7 +26,11 @@ public class CompatibleExample {
   static Fury fury;
 
   static {
-    fury =
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
         Fury.builder()
             .requireClassRegistration(true)
             .withCompatibleMode(CompatibleMode.COMPATIBLE)
@@ -34,9 +38,15 @@ public class CompatibleExample {
             .build();
     // register and generate serializer code.
     fury.register(Foo.class, true);
+    return fury;
   }
 
   public static void main(String[] args) {
+    System.out.println("CompatibleExample started");
+    Example.test(fury);
+    System.out.println("CompatibleExample succeed 1/2");
+    // Test new created Fury at runtime
+    fury = createFury();
     Example.test(fury);
     System.out.println("CompatibleExample succeed");
   }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
index 9ddb4892..d7b8c484 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
@@ -33,6 +33,7 @@ public class CompatibleThreadSafeExample {
             classLoader -> {
               Fury f =
                   Fury.builder()
+                      .withName(CompatibleThreadSafeExample.class.getName())
                       .requireClassRegistration(true)
                       .withCompatibleMode(CompatibleMode.COMPATIBLE)
                       .build();
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
index 203c8c2e..bf215742 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
@@ -28,7 +28,7 @@ public class Example {
   static Fury fury;
 
   static {
-    fury = Fury.builder().requireClassRegistration(true).build();
+    fury = 
Fury.builder().withName(Example.class.getName()).requireClassRegistration(true).build();
     // register and generate serializer code.
     fury.register(Foo.class, true);
   }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
index 6b51256b..b8b60856 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
@@ -31,6 +31,7 @@ public class Main {
     RecordExample.main(args);
     CompatibleRecordExample.main(args);
     RecordExample2.main(args);
+
     ThreadSafeExample.main(args);
     CompatibleThreadSafeExample.main(args);
     ProxyExample.main(args);
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
index 43afc8bc..a3a48248 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
@@ -39,9 +39,18 @@ public class ProxyExample {
   static Fury fury;
 
   static {
-    fury = Fury.builder().requireClassRegistration(true).build();
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
+        Fury.builder()
+            .withName(ProxyExample.class.getName())
+            .requireClassRegistration(true)
+            .build();
     // register and generate serializer code.
     fury.register(TestInvocationHandler.class, true);
+    return fury;
   }
 
   public static void main(String[] args) {
@@ -51,6 +60,9 @@ public class ProxyExample {
                 fury.getClassLoader(), new Class[] {Function.class}, new 
TestInvocationHandler());
     Function deserializedFunction = (Function) 
fury.deserialize(fury.serialize(function));
     Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
+    fury = createFury();
+    deserializedFunction = (Function) 
fury.deserialize(fury.serialize(function));
+    Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
     System.out.println("Proxy tests pass");
   }
 }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
index 48883fbe..1085da0c 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
@@ -23,21 +23,31 @@ import org.apache.fury.Fury;
 import org.apache.fury.config.CompatibleMode;
 
 public class ScopedCompatibleExample {
-  static Fury fury;
+  private static Fury fury;
 
   static {
-    fury =
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
         Fury.builder()
+            .withName(ScopedCompatibleExample.class.getName())
             .requireClassRegistration(true)
             .withCompatibleMode(CompatibleMode.COMPATIBLE)
             .withScopedMetaShare(true)
             .build();
     // register and generate serializer code.
     fury.register(Foo.class, true);
+    return fury;
   }
 
   public static void main(String[] args) {
+    System.out.println("ScopedCompatibleExample started");
+    Example.test(fury);
+    System.out.println("ScopedCompatibleExample succeed 1/2");
+    fury = createFury();
     Example.test(fury);
-    System.out.println("CompatibleExample succeed");
+    System.out.println("ScopedCompatibleExample succeed");
   }
 }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
index 150dc16e..1a0b1125 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
@@ -37,7 +37,11 @@ public class ThreadSafeExample {
     fury =
         new ThreadLocalFury(
             classLoader -> {
-              Fury f = Fury.builder().requireClassRegistration(true).build();
+              Fury f =
+                  Fury.builder()
+                      .withName(ThreadSafeExample.class.getName())
+                      .requireClassRegistration(true)
+                      .build();
               // register and generate serializer code.
               f.register(Foo.class, true);
               return f;
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
index ef4bfc9f..94e3a7eb 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
@@ -26,16 +26,24 @@ public class CompatibleRecordExample {
   static Fury fury;
 
   static {
-    fury =
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
         Fury.builder()
+            .withName(CompatibleRecordExample.class.getName())
             .requireClassRegistration(true)
             .withCompatibleMode(CompatibleMode.COMPATIBLE)
             .build();
     // register and generate serializer code.
     fury.register(RecordExample.Record.class, true);
+    return fury;
   }
 
   public static void main(String[] args) {
+    RecordExample.test(fury);
+    fury = createFury();
     RecordExample.test(fury);
     System.out.println("CompatibleRecordExample succeed");
   }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
index 1202d226..90ece86b 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
@@ -30,9 +30,18 @@ public class RecordExample {
   static Fury fury;
 
   static {
-    fury = Fury.builder().requireClassRegistration(true).build();
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
+        Fury.builder()
+            .withName(RecordExample.class.getName())
+            .requireClassRegistration(true)
+            .build();
     // register and generate serializer code.
     fury.register(Record.class, true);
+    return fury;
   }
 
   static void test(Fury fury) {
@@ -45,6 +54,10 @@ public class RecordExample {
   }
 
   public static void main(String[] args) {
+    System.out.println("RecordExample started");
+    test(fury);
+    System.out.println("RecordExample succeed 1/2");
+    fury = createFury();
     test(fury);
     System.out.println("RecordExample succeed");
   }
diff --git 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
index 8fa9fa42..d6f5dd10 100644
--- 
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
+++ 
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
@@ -30,13 +30,22 @@ public class RecordExample2 {
   static Fury fury;
 
   static {
-    fury = Fury.builder().requireClassRegistration(true).build();
+    fury = createFury();
+  }
+
+  private static Fury createFury() {
+    Fury fury =
+        Fury.builder()
+            .withName(RecordExample2.class.getName())
+            .requireClassRegistration(true)
+            .build();
     // register and generate serializer code.
     fury.register(Record.class, true);
     fury.register(Foo.class, true);
+    return fury;
   }
 
-  public static void main(String[] args) {
+  public static void test(Fury fury) {
     Record record = new Record(10, "abc", List.of("str1", "str2"), 
Map.of("k1", 10L, "k2", 20L));
     byte[] bytes = fury.serialize(record);
     Object o = fury.deserialize(bytes);
@@ -44,6 +53,14 @@ public class RecordExample2 {
     Foo foo = new Foo(10, "abc", List.of("str1", "str2"), Map.of("k1", 10L, 
"k2", 20L));
     Object o2 = fury.deserialize(fury.serialize(foo));
     Preconditions.checkArgument(foo.equals(o2));
+  }
+
+  public static void main(String[] args) {
+    System.out.println("RecordExample started");
+    test(fury);
+    System.out.println("RecordExample succeed 1/2");
+    fury = createFury();
+    test(fury);
     System.out.println("RecordExample2 succeed");
   }
 }
diff --git 
a/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
 
b/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
index c0136079..5af8a7a6 100644
--- 
a/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
+++ 
b/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
@@ -17,13 +17,15 @@
 
 # 
https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/Reflection/#unsafe-accesses
 :
 # The unsafe offset get on build time may be different from runtime
-Args = -H:+ReportExceptionStackTraces \
+Args=-H:+ReportExceptionStackTraces \
   --initialize-at-build-time=org.apache.fury.graalvm.Example,\
   org.apache.fury.graalvm.CompatibleExample,\
+  org.apache.fury.graalvm.ScopedCompatibleExample,\
   org.apache.fury.graalvm.record.RecordExample,\
   org.apache.fury.graalvm.record.CompatibleRecordExample,\
   org.apache.fury.graalvm.record.RecordExample2,\
   org.apache.fury.graalvm.ThreadSafeExample,\
   org.apache.fury.graalvm.CompatibleThreadSafeExample,\
   org.apache.fury.graalvm.ProxyExample,\
+  org.apache.fury.graalvm.CollectionExample,\
   org.apache.fury.graalvm.Benchmark
diff --git a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java 
b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
index e4fae2ae..d742650d 100644
--- a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
+++ b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
@@ -29,7 +29,6 @@ import org.apache.fury.io.FuryInputStream;
 import org.apache.fury.io.FuryReadableChannel;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
-import org.apache.fury.resolver.ClassResolver;
 import org.apache.fury.serializer.BufferCallback;
 import org.apache.fury.util.LoaderBinding;
 import org.apache.fury.util.LoaderBinding.StagingType;
@@ -65,8 +64,6 @@ public class ThreadLocalFury extends AbstractThreadSafeFury {
     // in a process load some classes which is not cheap.
     // 2. Make fury generate code at graalvm build time.
     Fury fury = bindingThreadLocal.get().get();
-    ClassResolver._addGraalvmClassRegistry(
-        fury.getConfig().getConfigHash(), fury.getClassResolver());
   }
 
   @Override
diff --git a/java/fury-core/src/main/java/org/apache/fury/config/Config.java 
b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
index fad9d395..98422d73 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/Config.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
@@ -33,6 +33,7 @@ import org.apache.fury.util.Preconditions;
 /** Config for fury, all {@link Fury} related config can be found here. */
 @SuppressWarnings({"rawtypes"})
 public class Config implements Serializable {
+  private final String name;
   private final Language language;
   private final boolean trackingRef;
   private final boolean basicTypesRefIgnored;
@@ -61,6 +62,7 @@ public class Config implements Serializable {
   private final boolean deserializeNonexistentEnumValueAsNull;
 
   public Config(FuryBuilder builder) {
+    name = builder.name;
     language = builder.language;
     trackingRef = builder.trackingRef;
     basicTypesRefIgnored = !trackingRef || builder.basicTypesRefIgnored;
@@ -93,6 +95,11 @@ public class Config implements Serializable {
     deserializeNonexistentEnumValueAsNull = 
builder.deserializeNonexistentEnumValueAsNull;
   }
 
+  /** Returns the name for Fury serialization. */
+  public String getName() {
+    return name;
+  }
+
   public Language getLanguage() {
     return language;
   }
@@ -257,7 +264,8 @@ public class Config implements Serializable {
       return false;
     }
     Config config = (Config) o;
-    return trackingRef == config.trackingRef
+    return name == config.name
+        && trackingRef == config.trackingRef
         && basicTypesRefIgnored == config.basicTypesRefIgnored
         && stringRefIgnored == config.stringRefIgnored
         && timeRefIgnored == config.timeRefIgnored
@@ -286,6 +294,7 @@ public class Config implements Serializable {
   @Override
   public int hashCode() {
     return Objects.hash(
+        name,
         language,
         trackingRef,
         basicTypesRefIgnored,
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java 
b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
index ebd9fb8b..1210c751 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
@@ -56,6 +56,7 @@ public final class FuryBuilder {
     ENABLE_CLASS_REGISTRATION_FORCIBLY = "true".equals(flagValue) || 
"1".equals(flagValue);
   }
 
+  String name;
   boolean checkClassVersion = false;
   Language language = Language.JAVA;
   boolean trackingRef = false;
@@ -318,6 +319,12 @@ public final class FuryBuilder {
     return this;
   }
 
+  /** Set name for Fury serialization. */
+  public FuryBuilder withName(String name) {
+    this.name = name;
+    return this;
+  }
+
   private void finish() {
     if (classLoader == null) {
       classLoader = Thread.currentThread().getContextClassLoader();
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java 
b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
index 8ee93a38..1fba1680 100644
--- a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
+++ b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
@@ -266,6 +266,7 @@ public class ClassResolver {
     extRegistry = new ExtRegistry();
     extRegistry.objectGenericType = buildGenericType(OBJECT_TYPE);
     shimDispatcher = new ShimDispatcher(fury);
+    ClassResolver._addGraalvmClassRegistry(fury.getConfig().getConfigHash(), 
this);
   }
 
   public void initialize() {
@@ -418,12 +419,24 @@ public class ClassResolver {
     register(cls);
     if (createSerializer) {
       ClassInfo classInfo = getClassInfo(cls);
+      ClassInfo deserializationClassInfo;
       if (metaContextShareEnabled && 
needToWriteClassDef(classInfo.serializer)) {
         ClassDef classDef = classInfo.classDef;
         if (classDef == null) {
           classDef = buildClassDef(classInfo);
         }
-        buildMetaSharedClassInfo(Tuple2.of(classDef, null), classDef);
+        deserializationClassInfo = 
buildMetaSharedClassInfo(Tuple2.of(classDef, null), classDef);
+        if (deserializationClassInfo != null && 
GraalvmSupport.isGraalBuildtime()) {
+          getGraalvmClassRegistry()
+              .deserializerClassMap
+              .put(classDef.getId(), 
deserializationClassInfo.serializer.getClass());
+          deserializationClassInfo.serializer = null;
+        }
+      }
+      if (GraalvmSupport.isGraalBuildtime()) {
+        // Instance for generated class should be hold at graalvm runtime only.
+        getGraalvmClassRegistry().serializerClassMap.put(cls, 
classInfo.serializer.getClass());
+        classInfo.serializer = null;
       }
     }
   }
@@ -1356,7 +1369,9 @@ public class ClassResolver {
       ObjectArray<ClassDef> readClassDefs = metaContext.readClassDefs;
       ClassDef classDef = readClassDefs.get(id);
       Tuple2<ClassDef, ClassInfo> classDefTuple = 
extRegistry.classIdToDef.get(classDef.getId());
-      if (classDefTuple == null || classDefTuple.f1 == null) {
+      if (classDefTuple == null
+          || classDefTuple.f1 == null
+          || classDefTuple.f1.serializer == null) {
         classInfo = buildMetaSharedClassInfo(classDefTuple, classDef);
       } else {
         classInfo = classDefTuple.f1;
@@ -1915,33 +1930,54 @@ public class ClassResolver {
     return fury;
   }
 
-  private static final ConcurrentMap<Integer, List<ClassResolver>> 
GRAALVM_REGISTRY =
+  private static final ConcurrentMap<Integer, GraalvmClassRegistry> 
GRAALVM_REGISTRY =
       new ConcurrentHashMap<>();
 
   // CHECKSTYLE.OFF:MethodName
   public static void _addGraalvmClassRegistry(int furyConfigHash, 
ClassResolver classResolver) {
     // CHECKSTYLE.ON:MethodName
     if (GraalvmSupport.isGraalBuildtime()) {
-      List<ClassResolver> resolvers =
-          GRAALVM_REGISTRY.computeIfAbsent(
-              furyConfigHash, k -> Collections.synchronizedList(new 
ArrayList<>()));
-      resolvers.add(classResolver);
+      GraalvmClassRegistry registry =
+          GRAALVM_REGISTRY.computeIfAbsent(furyConfigHash, k -> new 
GraalvmClassRegistry());
+      registry.resolvers.add(classResolver);
+    }
+  }
+
+  private static class GraalvmClassRegistry {
+    private final List<ClassResolver> resolvers;
+    private final Map<Class<?>, Class<? extends Serializer>> 
serializerClassMap;
+    private final Map<Long, Class<? extends Serializer>> deserializerClassMap;
+
+    private GraalvmClassRegistry() {
+      resolvers = Collections.synchronizedList(new ArrayList<>());
+      serializerClassMap = new ConcurrentHashMap<>();
+      deserializerClassMap = new ConcurrentHashMap<>();
     }
   }
 
+  private GraalvmClassRegistry getGraalvmClassRegistry() {
+    return GRAALVM_REGISTRY.computeIfAbsent(
+        fury.getConfig().getConfigHash(), k -> new GraalvmClassRegistry());
+  }
+
   private Class<? extends Serializer> 
getSerializerClassFromGraalvmRegistry(Class<?> cls) {
-    List<ClassResolver> classResolvers = 
GRAALVM_REGISTRY.get(fury.getConfig().getConfigHash());
+    GraalvmClassRegistry registry = getGraalvmClassRegistry();
+    List<ClassResolver> classResolvers = registry.resolvers;
     if (classResolvers == null || classResolvers.isEmpty()) {
       return null;
     }
     for (ClassResolver classResolver : classResolvers) {
       if (classResolver != this) {
         ClassInfo classInfo = classResolver.classInfoMap.get(cls);
-        if (classInfo != null) {
+        if (classInfo != null && classInfo.serializer != null) {
           return classInfo.serializer.getClass();
         }
       }
     }
+    Class<? extends Serializer> serializerClass = 
registry.serializerClassMap.get(cls);
+    if (serializerClass != null) {
+      return serializerClass;
+    }
     if (GraalvmSupport.isGraalRuntime()) {
       if (Functions.isLambda(cls) || ReflectionUtils.isJdkProxy(cls)) {
         return null;
@@ -1953,7 +1989,8 @@ public class ClassResolver {
 
   private Class<? extends Serializer> 
getMetaSharedDeserializerClassFromGraalvmRegistry(
       Class<?> cls, ClassDef classDef) {
-    List<ClassResolver> classResolvers = 
GRAALVM_REGISTRY.get(fury.getConfig().getConfigHash());
+    GraalvmClassRegistry registry = getGraalvmClassRegistry();
+    List<ClassResolver> classResolvers = registry.resolvers;
     if (classResolvers == null || classResolvers.isEmpty()) {
       return null;
     }
@@ -1961,11 +1998,17 @@ public class ClassResolver {
       if (classResolver != this) {
         Tuple2<ClassDef, ClassInfo> tuple2 =
             classResolver.extRegistry.classIdToDef.get(classDef.getId());
-        if (tuple2 != null && tuple2.f1 != null) {
+        if (tuple2 != null && tuple2.f1 != null && tuple2.f1.serializer != 
null) {
           return tuple2.f1.serializer.getClass();
         }
       }
     }
+    Class<? extends Serializer> deserializerClass =
+        registry.deserializerClassMap.get(classDef.getId());
+    // noinspection Duplicates
+    if (deserializerClass != null) {
+      return deserializerClass;
+    }
     if (GraalvmSupport.isGraalRuntime()) {
       if (Functions.isLambda(cls) || ReflectionUtils.isJdkProxy(cls)) {
         return null;
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java 
b/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
index 3169fb51..55ca8395 100644
--- a/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
+++ b/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
@@ -26,9 +26,13 @@ import java.lang.invoke.SerializedLambda;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Predicate;
 import org.apache.fury.collection.Tuple2;
 import org.apache.fury.reflect.ReflectionUtils;
+import org.apache.fury.util.GraalvmSupport;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.unsafe._JDKAccess;
 
@@ -73,27 +77,38 @@ public class Functions {
     }
   }
 
+  private static final Map<Tuple2<Method, Class<?>>, Object> map =
+      GraalvmSupport.isGraalBuildtime() ? new ConcurrentHashMap<>() : new 
WeakHashMap<>();
+
   public static Object makeGetterFunction(Method method) {
-    MethodHandles.Lookup lookup = 
_JDKAccess._trustedLookup(method.getDeclaringClass());
-    try {
-      // Why `lookup.findGetter` doesn't work?
-      // MethodHandle handle = lookup.findGetter(field.getDeclaringClass(), 
field.getName(),
-      // field.getType());
-      MethodHandle handle = lookup.unreflect(method);
-      return _JDKAccess.makeGetterFunction(lookup, handle, 
method.getReturnType());
-    } catch (IllegalAccessException ex) {
-      throw new RuntimeException(ex);
-    }
+    return map.computeIfAbsent(
+        Tuple2.of(method, Object.class),
+        k -> {
+          MethodHandles.Lookup lookup = 
_JDKAccess._trustedLookup(method.getDeclaringClass());
+          try {
+            // Why `lookup.findGetter` doesn't work?
+            // MethodHandle handle = 
lookup.findGetter(field.getDeclaringClass(), field.getName(),
+            // field.getType());
+            MethodHandle handle = lookup.unreflect(method);
+            return _JDKAccess.makeGetterFunction(lookup, handle, 
method.getReturnType());
+          } catch (IllegalAccessException ex) {
+            throw new RuntimeException(ex);
+          }
+        });
   }
 
   public static Object makeGetterFunction(Method method, Class<?> returnType) {
-    MethodHandles.Lookup lookup = 
_JDKAccess._trustedLookup(method.getDeclaringClass());
-    try {
-      MethodHandle handle = lookup.unreflect(method);
-      return _JDKAccess.makeGetterFunction(lookup, handle, returnType);
-    } catch (IllegalAccessException ex) {
-      throw new RuntimeException(ex);
-    }
+    return map.computeIfAbsent(
+        Tuple2.of(method, returnType),
+        k -> {
+          MethodHandles.Lookup lookup = 
_JDKAccess._trustedLookup(method.getDeclaringClass());
+          try {
+            MethodHandle handle = lookup.unreflect(method);
+            return _JDKAccess.makeGetterFunction(lookup, handle, returnType);
+          } catch (IllegalAccessException ex) {
+            throw new RuntimeException(ex);
+          }
+        });
   }
 
   public static Tuple2<Class<?>, String> getterMethodInfo(Class<?> type) {
diff --git 
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
 
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
index e9d4a67b..5f3338f5 100644
--- 
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
+++ 
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
@@ -18,161 +18,758 @@
 # 
https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/Reflection/#unsafe-accesses
 :
 # The unsafe offset get on build time may be different from runtime
 Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
-    org.apache.fury.util.GraalvmSupport,\
-    org.apache.fury.serializer.collection.UnmodifiableSerializers$Offset,\
-    org.apache.fury.serializer.collection.SynchronizedSerializers$Offset,\
-    
org.apache.fury.serializer.collection.CollectionSerializers$ArraysAsListSerializer,\
-    
org.apache.fury.serializer.collection.CollectionSerializers$SetFromMapSerializer,\
-    org.apache.fury.serializer.collection.MapSerializers$EnumMapSerializer,\
+    com.google.common.base.Equivalence$Equals,\
+    com.google.common.base.Equivalence$Identity,\
+    com.google.common.base.Equivalence,\
+    com.google.common.base.FinalizableReferenceQueue,\
+    com.google.common.base.Ticker$1,\
+    com.google.common.base.internal.Finalizer,\
+    com.google.common.cache.CacheBuilder$1,\
+    com.google.common.cache.CacheBuilder$2,\
+    com.google.common.cache.CacheBuilder$3,\
+    com.google.common.cache.CacheBuilder$NullListener,\
+    com.google.common.cache.CacheBuilder$OneWeigher,\
+    com.google.common.cache.LocalCache$1,\
+    com.google.common.cache.LocalCache$2,\
+    com.google.common.cache.LocalCache$EntryFactory$1,\
+    com.google.common.cache.LocalCache$EntryFactory$2,\
+    com.google.common.cache.LocalCache$EntryFactory$3,\
+    com.google.common.cache.LocalCache$EntryFactory$4,\
+    com.google.common.cache.LocalCache$EntryFactory$5,\
+    com.google.common.cache.LocalCache$EntryFactory$6,\
+    com.google.common.cache.LocalCache$EntryFactory$7,\
+    com.google.common.cache.LocalCache$EntryFactory$8,\
+    com.google.common.cache.LocalCache$EntrySet,\
+    com.google.common.cache.LocalCache$LocalManualCache,\
+    com.google.common.cache.LocalCache$Segment,\
+    com.google.common.cache.LocalCache$SoftValueReference,\
+    com.google.common.cache.LocalCache$Strength$1,\
+    com.google.common.cache.LocalCache$Strength$2,\
+    com.google.common.cache.LocalCache$Strength$3,\
+    com.google.common.cache.LocalCache$StrongEntry,\
+    com.google.common.cache.LocalCache$StrongValueReference,\
+    com.google.common.cache.LocalCache$WeakEntry,\
+    com.google.common.cache.LocalCache$WeakValueReference,\
+    com.google.common.cache.LocalCache,\
+    com.google.common.collect.AbstractIterator$1,\
+    com.google.common.collect.ImmutableSortedMap,\
+    com.google.common.collect.NaturalOrdering,\
+    com.google.common.collect.Platform,\
+    com.google.common.collect.RegularImmutableBiMap,\
+    com.google.common.collect.RegularImmutableList,\
+    com.google.common.collect.RegularImmutableMap,\
+    com.google.common.collect.RegularImmutableSet,\
+    com.google.common.collect.RegularImmutableSortedSet,\
+    com.google.common.collect.SingletonImmutableBiMap,\
+    com.google.common.collect.SingletonImmutableList,\
+    com.google.common.collect.SingletonImmutableSet,\
+    com.google.common.math.IntMath$1,\
+    com.google.common.primitives.Primitives,\
+    com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper,\
+    com.google.common.util.concurrent.SettableFuture,\
+    java.io.IOException,\
+    java.lang.ArrayIndexOutOfBoundsException,\
+    java.lang.Boolean,\
+    java.lang.Byte,\
+    java.lang.Character,\
+    java.lang.Class,\
+    java.lang.Double,\
+    java.lang.Exception,\
+    java.lang.Float,\
+    java.lang.IllegalArgumentException,\
+    java.lang.IllegalStateException,\
+    java.lang.IndexOutOfBoundsException,\
+    java.lang.Integer,\
+    java.lang.Long,\
+    java.lang.NullPointerException,\
+    java.lang.Object,\
+    java.lang.RuntimeException,\
+    java.lang.Short,\
+    java.lang.StackTraceElement,\
+    java.lang.String,\
+    java.lang.StringBuffer,\
+    java.lang.StringBuilder,\
+    java.lang.Throwable,\
+    java.lang.Void,\
+    java.math.BigDecimal,\
+    java.math.BigInteger,\
+    java.net.URI,\
+    java.nio.DirectByteBuffer,\
+    java.nio.HeapByteBuffer,\
+    java.sql.Date,\
+    java.sql.Time,\
+    java.sql.Timestamp,\
+    java.time.Duration,\
+    java.time.Instant,\
+    java.time.LocalDate,\
+    java.time.LocalDateTime,\
+    java.time.LocalTime,\
+    java.time.MonthDay,\
+    java.time.OffsetDateTime,\
+    java.time.OffsetTime,\
+    java.time.Period,\
+    java.time.Year,\
+    java.time.YearMonth,\
+    java.time.ZoneOffset,\
+    java.time.ZonedDateTime,\
+    java.util.ArrayDeque,\
+    java.util.ArrayList,\
+    java.util.Arrays$ArrayList,\
+    java.util.BitSet,\
+    java.util.Collections$EmptyList,\
+    java.util.Collections$EmptyMap,\
+    java.util.Collections$EmptySet,\
+    java.util.Collections$ReverseComparator,\
+    java.util.Collections$SetFromMap,\
+    java.util.Collections$SingletonList,\
+    java.util.Collections$SingletonMap,\
+    java.util.Collections$SingletonSet,\
+    java.util.Collections$SynchronizedCollection,\
+    java.util.Collections$SynchronizedList,\
+    java.util.Collections$SynchronizedMap,\
+    java.util.Collections$SynchronizedRandomAccessList,\
+    java.util.Collections$SynchronizedSet,\
+    java.util.Collections$SynchronizedSortedMap,\
+    java.util.Collections$SynchronizedSortedSet,\
+    java.util.Collections$UnmodifiableCollection,\
+    java.util.Collections$UnmodifiableList,\
+    java.util.Collections$UnmodifiableMap,\
+    java.util.Collections$UnmodifiableNavigableMap$EmptyNavigableMap,\
+    java.util.Collections$UnmodifiableNavigableSet$EmptyNavigableSet,\
+    java.util.Collections$UnmodifiableRandomAccessList,\
+    java.util.Collections$UnmodifiableSet,\
+    java.util.Collections$UnmodifiableSortedMap,\
+    java.util.Collections$UnmodifiableSortedSet,\
+    java.util.Comparators$NaturalOrderComparator,\
+    java.util.Currency,\
+    java.util.Date,\
+    java.util.EnumMap,\
+    java.util.HashMap,\
+    java.util.HashSet,\
+    java.util.ImmutableCollections$List12,\
+    java.util.ImmutableCollections$ListN,\
+    java.util.ImmutableCollections$Map1,\
+    java.util.ImmutableCollections$MapN,\
+    java.util.ImmutableCollections$Set12,\
+    java.util.ImmutableCollections$SetN,\
+    java.util.ImmutableCollections$SubList,\
+    java.util.LinkedHashMap,\
+    java.util.LinkedHashSet,\
+    java.util.LinkedList,\
+    java.util.Locale,\
+    java.util.Optional,\
+    java.util.OptionalDouble,\
+    java.util.OptionalInt,\
+    java.util.OptionalLong,\
+    java.util.PriorityQueue,\
+    java.util.RegularEnumSet,\
+    java.util.TreeMap,\
+    java.util.TreeSet,\
+    java.util.UUID,\
+    java.util.Vector,\
+    java.util.concurrent.ArrayBlockingQueue,\
+    java.util.concurrent.ConcurrentHashMap$KeySetView,\
+    java.util.concurrent.ConcurrentHashMap,\
+    java.util.concurrent.ConcurrentSkipListMap,\
+    java.util.concurrent.ConcurrentSkipListSet,\
+    java.util.concurrent.CopyOnWriteArrayList,\
+    java.util.concurrent.LinkedBlockingQueue,\
+    java.util.concurrent.atomic.AtomicBoolean,\
+    java.util.concurrent.atomic.AtomicInteger,\
+    java.util.concurrent.atomic.AtomicLong,\
+    java.util.concurrent.atomic.AtomicReference,\
+    java.util.regex.Pattern,\
+    org.apache.fury.Fury,\
+    org.apache.fury.ThreadLocalFury,\
+    org.apache.fury.builder.AccessorHelper,\
+    org.apache.fury.builder.JITContext,\
+    org.apache.fury.builder.ObjectCodecBuilder,\
+    org.apache.fury.codegen.CodeGenerator$DefineState,\
+    org.apache.fury.codegen.CodeGenerator,\
+    org.apache.fury.codegen.CodegenContext,\
+    org.apache.fury.codegen.CompileState,\
+    org.apache.fury.codegen.CompileUnit,\
+    org.apache.fury.codegen.Expression$Literal,\
+    org.apache.fury.codegen.Expression$Reference,\
+    org.apache.fury.codegen.JaninoUtils,\
+    org.apache.fury.collection.FuryObjectMap,\
+    org.apache.fury.collection.IdentityMap,\
+    org.apache.fury.collection.IdentityObjectIntMap,\
+    org.apache.fury.collection.IntArray,\
+    org.apache.fury.collection.LazyMap,\
+    org.apache.fury.collection.LongMap,\
+    org.apache.fury.collection.MapStatistics,\
+    org.apache.fury.collection.MultiKeyWeakMap,\
+    org.apache.fury.collection.ObjectArray,\
+    org.apache.fury.collection.ObjectIntMap,\
+    org.apache.fury.collection.ObjectMap,\
+    org.apache.fury.collection.Tuple2,\
+    org.apache.fury.collection.Tuple3,\
+    org.apache.fury.config.CompatibleMode,\
+    org.apache.fury.config.Config,\
+    org.apache.fury.config.FuryBuilder,\
+    org.apache.fury.config.Language,\
+    org.apache.fury.config.LongEncoding,\
+    org.apache.fury.logging.FuryLogger,\
+    org.apache.fury.logging.LoggerFactory,\
+    org.apache.fury.memory.BoundsChecking,\
+    org.apache.fury.memory.MemoryBuffer,\
+    org.apache.fury.memory.MemoryUtils,\
+    org.apache.fury.memory.Platform,\
+    org.apache.fury.meta.ClassDef$ArrayFieldType,\
+    org.apache.fury.meta.ClassDef$CollectionFieldType,\
+    org.apache.fury.meta.ClassDef$EnumFieldType,\
+    org.apache.fury.meta.ClassDef$FieldInfo,\
+    org.apache.fury.meta.ClassDef$FieldType,\
+    org.apache.fury.meta.ClassDef$MapFieldType,\
+    org.apache.fury.meta.ClassDef$ObjectFieldType,\
+    org.apache.fury.meta.ClassDef$RegisteredFieldType,\
+    org.apache.fury.meta.ClassDef,\
+    org.apache.fury.meta.ClassDefDecoder,\
+    org.apache.fury.meta.ClassDefEncoder,\
+    org.apache.fury.meta.ClassSpec,\
+    org.apache.fury.meta.DeflaterMetaCompressor,\
+    org.apache.fury.meta.Encoders,\
+    org.apache.fury.meta.MetaCompressor,\
+    org.apache.fury.meta.MetaString$Encoding,\
+    org.apache.fury.meta.MetaString,\
+    org.apache.fury.meta.MetaStringDecoder$1,\
+    org.apache.fury.meta.MetaStringDecoder,\
+    org.apache.fury.meta.MetaStringEncoder$1,\
+    org.apache.fury.meta.MetaStringEncoder,\
+    org.apache.fury.meta.TypeEqualMetaCompressor,\
+    org.apache.fury.pool.ClassLoaderFuryPooled,\
+    org.apache.fury.pool.FuryPooledObjectFactory,\
+    org.apache.fury.pool.ThreadPoolFury,\
+    org.apache.fury.reflect.FieldAccessor$GeneratedAccessor,\
+    org.apache.fury.reflect.ReflectionUtils$1,\
+    org.apache.fury.reflect.ReflectionUtils$2,\
+    org.apache.fury.reflect.ReflectionUtils,\
+    org.apache.fury.reflect.TypeRef$ClassOwnership$1,\
+    org.apache.fury.reflect.TypeRef$ClassOwnership$2,\
+    org.apache.fury.reflect.TypeRef$ClassOwnership,\
+    org.apache.fury.reflect.TypeRef$TypeVariableKey,\
+    org.apache.fury.reflect.TypeRef,\
+    org.apache.fury.resolver.ClassChecker,\
+    org.apache.fury.resolver.ClassInfo,\
+    org.apache.fury.resolver.ClassInfoHolder,\
+    org.apache.fury.resolver.ClassResolver$2,\
+    org.apache.fury.resolver.ClassResolver$ExtRegistry,\
+    org.apache.fury.resolver.ClassResolver$GraalvmClassRegistry,\
+    org.apache.fury.resolver.ClassResolver,\
+    org.apache.fury.resolver.DisallowedList,\
+    org.apache.fury.resolver.FieldResolver$CollectionFieldInfo,\
+    org.apache.fury.resolver.FieldResolver$FieldInfo,\
+    org.apache.fury.resolver.FieldResolver$MapFieldInfo,\
+    org.apache.fury.resolver.FieldResolver,\
+    org.apache.fury.resolver.MetaContext,\
+    org.apache.fury.resolver.MetaStringBytes,\
+    org.apache.fury.resolver.MetaStringResolver,\
+    org.apache.fury.resolver.NoRefResolver,\
+    org.apache.fury.resolver.SerializationContext,\
+    org.apache.fury.serializer.ArraySerializers$BooleanArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$ByteArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$CharArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$DoubleArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$FloatArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$IntArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$LongArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$ObjectArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$ShortArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers$StringArraySerializer,\
+    org.apache.fury.serializer.ArraySerializers,\
+    org.apache.fury.serializer.JavaSerializer$1,\
+    org.apache.fury.serializer.JavaSerializer$2,\
+    org.apache.fury.serializer.JavaSerializer$3,\
+    org.apache.fury.serializer.JavaSerializer$4,\
+    org.apache.fury.serializer.JavaSerializer,\
+    org.apache.fury.serializer.JdkProxySerializer$ReplaceStub,\
     org.apache.fury.serializer.JdkProxySerializer,\
+    org.apache.fury.serializer.LambdaSerializer$ReplaceStub,\
+    org.apache.fury.serializer.LambdaSerializer,\
+    org.apache.fury.serializer.LocaleSerializer,\
+    org.apache.fury.serializer.NonexistentClassSerializers$ClassFieldsInfo,\
+    
org.apache.fury.serializer.NonexistentClassSerializers$NonexistentClassSerializer,\
+    
org.apache.fury.serializer.NonexistentClassSerializers$NonexistentEnumClassSerializer,\
+    org.apache.fury.serializer.OptionalSerializers$OptionalDoubleSerializer,\
+    org.apache.fury.serializer.OptionalSerializers$OptionalIntSerializer,\
+    org.apache.fury.serializer.OptionalSerializers$OptionalLongSerializer,\
+    org.apache.fury.serializer.OptionalSerializers$OptionalSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$1,\
+    org.apache.fury.serializer.PrimitiveSerializers$BooleanSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$ByteSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$CharSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$DoubleSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$FloatSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$IntSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$LongSerializer,\
+    org.apache.fury.serializer.PrimitiveSerializers$ShortSerializer,\
+    org.apache.fury.serializer.ReplaceResolveSerializer$1,\
+    org.apache.fury.serializer.ReplaceResolveSerializer$ReplaceStub,\
+    org.apache.fury.serializer.ReplaceResolveSerializer,\
+    org.apache.fury.serializer.Serializers$AtomicBooleanSerializer,\
+    org.apache.fury.serializer.Serializers$AtomicIntegerSerializer,\
+    org.apache.fury.serializer.Serializers$AtomicLongSerializer,\
+    org.apache.fury.serializer.Serializers$AtomicReferenceSerializer,\
+    org.apache.fury.serializer.Serializers$BigDecimalSerializer,\
+    org.apache.fury.serializer.Serializers$BigIntegerSerializer,\
+    org.apache.fury.serializer.Serializers$ClassSerializer,\
+    org.apache.fury.serializer.Serializers$CurrencySerializer,\
+    org.apache.fury.serializer.Serializers$EmptyObjectSerializer,\
+    org.apache.fury.serializer.Serializers$RegexSerializer,\
+    org.apache.fury.serializer.Serializers$StringBufferSerializer,\
+    org.apache.fury.serializer.Serializers$StringBuilderSerializer,\
+    org.apache.fury.serializer.Serializers$URISerializer,\
+    org.apache.fury.serializer.Serializers$UUIDSerializer,\
+    org.apache.fury.serializer.Serializers,\
     org.apache.fury.serializer.StringSerializer$Offset,\
     org.apache.fury.serializer.StringSerializer,\
-    org.apache.fury.serializer.Serializers,\
+    org.apache.fury.serializer.TimeSerializers$DateSerializer,\
+    org.apache.fury.serializer.TimeSerializers$DurationSerializer,\
+    org.apache.fury.serializer.TimeSerializers$InstantSerializer,\
+    org.apache.fury.serializer.TimeSerializers$LocalDateSerializer,\
+    org.apache.fury.serializer.TimeSerializers$LocalDateTimeSerializer,\
+    org.apache.fury.serializer.TimeSerializers$LocalTimeSerializer,\
+    org.apache.fury.serializer.TimeSerializers$MonthDaySerializer,\
+    org.apache.fury.serializer.TimeSerializers$OffsetDateTimeSerializer,\
+    org.apache.fury.serializer.TimeSerializers$OffsetTimeSerializer,\
+    org.apache.fury.serializer.TimeSerializers$PeriodSerializer,\
+    org.apache.fury.serializer.TimeSerializers$SqlDateSerializer,\
+    org.apache.fury.serializer.TimeSerializers$SqlTimeSerializer,\
+    org.apache.fury.serializer.TimeSerializers$TimestampSerializer,\
+    org.apache.fury.serializer.TimeSerializers$YearMonthSerializer,\
+    org.apache.fury.serializer.TimeSerializers$YearSerializer,\
+    org.apache.fury.serializer.TimeSerializers$ZoneOffsetSerializer,\
+    org.apache.fury.serializer.TimeSerializers$ZonedDateTimeSerializer,\
+    org.apache.fury.serializer.collection.CollectionSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$ArrayDequeSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$ArrayListSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$ArraysAsListSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$BitSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$CollectionsSingletonListSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$CollectionsSingletonSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$ConcurrentHashMapKeySetViewSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$ConcurrentSkipListSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$CopyOnWriteArrayListSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$EmptyListSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$EmptySetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$EmptySortedSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$HashSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$LinkedHashSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$PriorityQueueSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$SetFromMapSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$SortedSetSerializer,\
+    
org.apache.fury.serializer.collection.CollectionSerializers$VectorSerializer,\
+    
org.apache.fury.serializer.collection.FuryArrayAsListSerializer$ArrayAsList,\
+    org.apache.fury.serializer.collection.FuryArrayAsListSerializer,\
+    org.apache.fury.serializer.collection.GuavaCollectionSerializers$1,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptyBiMap,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySet,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySortedMap,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySortedSet,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$GuavaCollectionSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$GuavaMapSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableBiMapSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableListSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableMapSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSetSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSortedMapSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSortedSetSerializer,\
+    
org.apache.fury.serializer.collection.GuavaCollectionSerializers$RegularImmutableListSerializer,\
+    org.apache.fury.serializer.collection.GuavaCollectionSerializers,\
+    
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableListSerializer,\
+    
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableMapSerializer,\
+    
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableSetSerializer,\
+    org.apache.fury.serializer.collection.ImmutableCollectionSerializers,\
+    
org.apache.fury.serializer.collection.MapSerializers$ConcurrentHashMapSerializer,\
+    
org.apache.fury.serializer.collection.MapSerializers$ConcurrentSkipListMapSerializer,\
+    org.apache.fury.serializer.collection.MapSerializers$EmptyMapSerializer,\
+    
org.apache.fury.serializer.collection.MapSerializers$EmptySortedMapSerializer,\
+    org.apache.fury.serializer.collection.MapSerializers$EnumMapSerializer,\
+    org.apache.fury.serializer.collection.MapSerializers$HashMapSerializer,\
+    org.apache.fury.serializer.collection.MapSerializers$LazyMapSerializer,\
+    
org.apache.fury.serializer.collection.MapSerializers$LinkedHashMapSerializer,\
+    
org.apache.fury.serializer.collection.MapSerializers$SingletonMapSerializer,\
+    org.apache.fury.serializer.collection.MapSerializers$SortedMapSerializer,\
+    org.apache.fury.serializer.collection.SynchronizedSerializers$Offset,\
+    
org.apache.fury.serializer.collection.SynchronizedSerializers$SynchronizedCollectionSerializer,\
+    
org.apache.fury.serializer.collection.SynchronizedSerializers$SynchronizedMapSerializer,\
+    org.apache.fury.serializer.collection.SynchronizedSerializers,\
+    org.apache.fury.serializer.collection.UnmodifiableSerializers$Offset,\
+    
org.apache.fury.serializer.collection.UnmodifiableSerializers$UnmodifiableCollectionSerializer,\
+    
org.apache.fury.serializer.collection.UnmodifiableSerializers$UnmodifiableMapSerializer,\
+    org.apache.fury.serializer.collection.UnmodifiableSerializers,\
     org.apache.fury.serializer.shim.ShimDispatcher,\
-    org.apache.fury.memory.Platform,\
-    org.apache.fury.util.unsafe._Lookup,\
-    org.apache.fury.util.unsafe._JDKAccess,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$1,\
+    org.apache.fury.type.Descriptor$1,\
+    org.apache.fury.type.Descriptor,\
+    org.apache.fury.type.DescriptorGrouper,\
+    org.apache.fury.type.GenericType,\
+    org.apache.fury.type.Generics,\
     org.apache.fury.type.Type,\
     org.apache.fury.type.TypeUtils,\
-    org.apache.fury.Fury,\
-    org.apache.fury.type.Type,\
-    org.apache.fury.serializer.JavaSerializer,\
-    org.apache.fury.reflect.ReflectionUtils,\
-    org.apache.fury.builder.ObjectCodecBuilder,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayType,\
-    org.apache.fury.serializer.LocaleSerializer,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$TypeImportOnDemandDeclaration,\
-    org.apache.fury.shaded.org.codehaus.janino.Compiler,\
-    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler,\
-    com.google.common.util.concurrent.SettableFuture,\
-    org.apache.fury.config.FuryBuilder,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$MethodInvocation,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameter,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ExpressionStatement,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameters,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue,\
-    org.apache.fury.shaded.javassist.util.proxy.DefineClassHelper,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableAccess,\
-    org.apache.fury.shaded.org.codehaus.janino.ClassLoaderIClassLoader,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Located$1,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$EmptyStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ForStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Type,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Cast,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$BooleanRvalue,\
-    org.apache.fury.shaded.org.codehaus.janino.IClass$PrimitiveIClass,\
-    org.apache.fury.shaded.org.codehaus.janino.Compiler$CompilerIClassLoader,\
-    org.apache.fury.shaded.javassist.util.proxy.SecurityActions,\
+    org.apache.fury.util.ClassLoaderUtils$ByteArrayClassLoader,\
+    org.apache.fury.util.ClassLoaderUtils$ParentClassLoader,\
+    org.apache.fury.util.ClassLoaderUtils,\
+    org.apache.fury.util.DelayedRef,\
+    org.apache.fury.util.function.Functions,\
+    org.apache.fury.util.GraalvmSupport,\
+    org.apache.fury.util.LoaderBinding$1,\
+    org.apache.fury.util.LoaderBinding$StagingType,\
+    org.apache.fury.util.LoaderBinding,\
+    org.apache.fury.util.StringUtils,\
+    org.apache.fury.util.record.RecordComponent,\
+    org.apache.fury.util.record.RecordUtils$1,\
+    org.apache.fury.util.record.RecordUtils$2,\
+    org.apache.fury.util.record.RecordUtils$3,\
+    org.apache.fury.util.record.RecordUtils,\
+    org.apache.fury.util.unsafe._JDKAccess$1,\
+    org.apache.fury.util.unsafe._JDKAccess,\
     org.apache.fury.util.unsafe._Lookup,\
+    org.apache.fury.codegen.JaninoUtils$CodeStats,\
+    org.apache.fury.shaded.org.codehaus.commons.compiler.Location,\
+    
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables,\
+    
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$1,\
+    
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$2,\
+    
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$3,\
+    
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$4,\
     
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$5,\
-    com.google.common.base.internal.Finalizer,\
-    org.apache.fury.serializer.ReplaceResolveSerializer,\
-    com.google.common.primitives.Primitives,\
-    org.apache.fury.type.GenericType,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$BreakableStatement,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableDeclarationStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl$1,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ThisReference,\
+    org.apache.fury.shaded.org.codehaus.janino.IType,\
+    org.apache.fury.shaded.org.codehaus.janino.Access,\
+    org.apache.fury.shaded.org.codehaus.janino.ClassFileIClass,\
+    org.apache.fury.shaded.org.codehaus.janino.ClassLoaderIClassLoader,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$1,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$BasicBlock,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$Branch,\
+    
org.apache.fury.shaded.org.codehaus.janino.CodeContext$ExceptionTableEntry,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$FixUp,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$FourByteOffset,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$Inserter,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$LineNumberOffset,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$LocalScope,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$Offset,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$OffsetBranch,\
+    org.apache.fury.shaded.org.codehaus.janino.CodeContext$Relocatable,\
+    org.apache.fury.shaded.org.codehaus.janino.Compiler,\
+    org.apache.fury.shaded.org.codehaus.janino.Compiler$2,\
+    org.apache.fury.shaded.org.codehaus.janino.Compiler$CompilerIClassLoader,\
+    org.apache.fury.shaded.org.codehaus.janino.Descriptor,\
     org.apache.fury.shaded.org.codehaus.janino.IClass,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ClassLiteral,\
-    org.apache.fury.resolver.ClassResolver$2,\
-    org.apache.fury.meta.ClassDef,\
-    org.apache.fury.meta.Encoders,\
-    org.apache.fury.shaded.org.codehaus.janino.Parser$1,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$1,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$2,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IAnnotation,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IConstructor,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IField,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IInvocable,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IMember,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$IMethod,\
+    org.apache.fury.shaded.org.codehaus.janino.IClass$PrimitiveIClass,\
+    org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
+    org.apache.fury.shaded.org.codehaus.janino.IClassLoader$1,\
+    org.apache.fury.shaded.org.codehaus.janino.IParameterizedType,\
+    org.apache.fury.shaded.org.codehaus.janino.IType,\
+    org.apache.fury.shaded.org.codehaus.janino.ITypeVariable,\
+    org.apache.fury.shaded.org.codehaus.janino.ITypeVariableOrIClass,\
+    org.apache.fury.shaded.org.codehaus.janino.JaninoOption,\
+    org.apache.fury.shaded.org.codehaus.janino.Java,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AbstractAnnotation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AbstractClassDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$ImportDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleStaticImportDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleTypeImportDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$StaticImportOnDemandDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$TypeImportOnDemandDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeBodyDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AccessModifier,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$AlternateConstructorInvocation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AmbiguousName,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Annotatable,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Annotation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AnnotationTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AnonymousClassDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayAccessExpression,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayCreationReference,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayInitializerOrRvalue,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayLength,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ArrayType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$AssertStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Assignment,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Atom,\
     org.apache.fury.shaded.org.codehaus.janino.Java$BinaryOperation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Block,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$BlockStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$BooleanLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$BooleanRvalue,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$BreakStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$BreakableStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Cast,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$CatchClause,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$CatchParameter,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$CharacterLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ClassDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$ClassInstanceCreationReference,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ClassLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$CompilationUnit,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ConditionalExpression,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorDeclarator,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorInvocation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ContinuableStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ContinueStatement,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Crement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ReturnStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$WhileStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Atom,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$SimpleType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$DoStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$DocCommentable,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ElementValue,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$EmptyStatement,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$EnclosingScopeOfTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$EnumConstant,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$EnumDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ExpressionStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccess,\
     org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccessExpression,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeBodyDeclaration,\
-    org.apache.fury.shaded.org.codehaus.janino.Parser,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$QualifiedThisReference,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Assignment,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$NullLiteral,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ParenthesizedExpression,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Statement,\
-    org.apache.fury.shaded.org.codehaus.janino.IClassLoader$1,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$VariableDeclarator,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleTypeImportDeclaration,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$MethodDeclarator,\
-    com.google.common.base.FinalizableReferenceQueue,\
-    
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$ImportDeclaration,\
-    org.apache.fury.codegen.JaninoUtils,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclarationOrInitializer,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$FloatingPointLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ForEachStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ForStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameter,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameters,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$IfStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Initializer,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$InnerClassDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Instanceof,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$IntegerLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$InterfaceDeclaration,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Invocation,\
-    org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
-    org.apache.fury.util.record.RecordUtils,\
-    org.apache.fury.logging.FuryLogger,\
-    org.apache.fury.logging.LoggerFactory,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LabeledStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LambdaBody,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LambdaExpression,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LambdaParameters,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Literal,\
-    org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
-    org.apache.fury.shaded.org.codehaus.janino.CodeContext,\
-    org.apache.fury.serializer.collection.ImmutableCollectionSerializers,\
-    org.apache.fury.shaded.org.codehaus.janino.IClass$2,\
-    com.google.common.collect.RegularImmutableMap,\
-    org.apache.fury.shaded.org.codehaus.janino.Descriptor,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LocalClassDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$LocalClassDeclarationStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariable,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableAccess,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableDeclarationStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableSlot,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Locatable,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Located,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ReferenceType,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$UnaryOperation,\
-    org.apache.fury.util.ClassLoaderUtils,\
-    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$39,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$IntegerLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Located$1,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Lvalue,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MarkerAnnotation,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$MemberAnnotationTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MemberClassDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MemberEnumDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$MemberInterfaceDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MemberTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MethodDeclarator,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MethodInvocation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$MethodReference,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Modifier,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ModularCompilationUnit,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ModuleDirective,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NamedClassDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NamedTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NewAnonymousClassInstance,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NewArray,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NewClassInstance,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NewInitializedArray,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$NullLiteral,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Package,\
     org.apache.fury.shaded.org.codehaus.janino.Java$PackageDeclaration,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccess,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Block,\
-    org.apache.fury.builder.AccessorHelper,\
-    org.apache.fury.codegen.Expression$Literal,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ContinuableStatement,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$IfStatement,\
-    com.google.common.collect.RegularImmutableBiMap,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorDeclarator,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberAnnotationTypeDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberClassDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberEnumDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberInterfaceDeclaration,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberTypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ParameterAccess,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ParenthesizedExpression,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Primitive,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$QualifiedThisReference,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ReferenceType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ReturnStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue$1,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue$2,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$RvalueMemberType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Scope,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$SimpleConstant,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$SimpleType,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Statement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$StringLiteral,\
     
org.apache.fury.shaded.org.codehaus.janino.Java$SuperConstructorInvocation,\
-    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$44,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$AmbiguousName,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$SuperclassFieldAccessExpression,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$SuperclassMethodInvocation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$SwitchStatement,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$SwitchStatement$SwitchBlockStatementGroup,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$SynchronizedStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ThisReference,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$ThrowStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$LocalVariableDeclaratorResource,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$Resource,\
+    
org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$VariableAccessResource,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$Type,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$TypeArgument,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$TypeBodyDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$TypeDeclaration,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$UnaryOperation,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$VariableDeclarator,\
+    org.apache.fury.shaded.org.codehaus.janino.Java$WhileStatement,\
+    org.apache.fury.shaded.org.codehaus.janino.MethodDescriptor,\
+    org.apache.fury.shaded.org.codehaus.janino.Mod,\
+    org.apache.fury.shaded.org.codehaus.janino.Parser,\
+    org.apache.fury.shaded.org.codehaus.janino.Parser$1,\
+    org.apache.fury.shaded.org.codehaus.janino.Parser$ClassDeclarationContext,\
+    
org.apache.fury.shaded.org.codehaus.janino.Parser$MethodDeclarationContext,\
+    org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
+    org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$3,\
+    
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIConstructor,\
+    
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIField,\
+    
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIMethod,\
+    org.apache.fury.shaded.org.codehaus.janino.ResourceFinderIClassLoader,\
     org.apache.fury.shaded.org.codehaus.janino.Scanner,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclaration,\
-    org.apache.fury.memory.BoundsChecking,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$Package,\
-    org.apache.fury.serializer.ArraySerializers,\
-    org.apache.fury.serializer.ArraySerializers$ObjectArraySerializer,\
-    org.apache.fury.shaded.org.codehaus.janino.Java$AccessModifier,\
-    org.apache.fury.util.ClassLoaderUtils$ParentClassLoader,\
-    com.google.common.collect.RegularImmutableSortedSet,\
-    org.apache.fury.type.Descriptor,\
-    org.apache.fury.serializer.PrimitiveSerializers$1,\
-    org.apache.fury.collection.MultiKeyWeakMap,\
-    org.apache.fury.serializer.collection.UnmodifiableSerializers,\
-    org.apache.fury.codegen.CompileUnit,\
-    org.apache.fury.serializer.StringSerializer,\
-    com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper,\
-    org.apache.fury.memory.MemoryBuffer,\
-    com.google.common.math.IntMath$1,\
-    org.apache.fury.resolver.ClassResolver,\
-    org.apache.fury.codegen.CodegenContext,\
-    org.apache.fury.serializer.collection.GuavaCollectionSerializers,\
-    org.apache.fury.util.unsafe._JDKAccess,\
-    org.apache.fury.codegen.CodeGenerator,\
-    org.apache.fury.serializer.collection.SynchronizedSerializers,\
-    org.apache.fury.util.ClassLoaderUtils$ByteArrayClassLoader,\
-    com.google.common.collect.AbstractIterator$1,\
-    com.google.common.cache.LocalCache,\
-    org.apache.fury.serializer.LambdaSerializer,\
-    com.google.common.collect.ImmutableSortedMap,\
-    org.apache.fury.memory.MemoryUtils,\
-    org.apache.fury.type.DescriptorGrouper,\
-    sun.misc.Unsafe,\
-    com.google.common.collect.Platform,\
-    org.apache.fury.meta.MetaString,\
-    org.apache.fury.meta.MetaStringDecoder$1,\
-    org.apache.fury.meta.MetaStringEncoder$1,\
-    org.apache.fury.meta.MetaString$Encoding,\
-    org.apache.fury.meta.Encoders,\
-    org.apache.fury.reflect.TypeRef$ClassOwnership,\
-    org.apache.fury.reflect.TypeRef$ClassOwnership$1,\
-    org.apache.fury.reflect.TypeRef$ClassOwnership$2,\
-    org.apache.fury.resolver.DisallowedList,\
-    org.apache.fury.util.StringUtils
+    org.apache.fury.shaded.org.codehaus.janino.StackMap,\
+    org.apache.fury.shaded.org.codehaus.janino.Token,\
+    org.apache.fury.shaded.org.codehaus.janino.TokenStream,\
+    org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl,\
+    org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl$1,\
+    org.apache.fury.shaded.org.codehaus.janino.TokenType,\
+    org.apache.fury.shaded.org.codehaus.janino.UnicodeUnescapeException,\
+    org.apache.fury.shaded.org.codehaus.janino.UnicodeUnescapeReader,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$11,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$12,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$13,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$14,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$14$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$15,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$15$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$16,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$16$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17$2,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$19,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$19$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$2,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$20,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$22,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$23,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$24,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$25,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$26,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$2,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$2$1,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$29,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$3,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$30,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$32,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$33,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$34,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$35,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$36,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$37,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$38,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$39,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$40,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$41,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$42,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$43,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$44,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$6,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$7,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$8,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$ClassFileConsumer,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$Compilable2,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$SimpleIField,\
+    org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$SwitchKind,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$AbstractCompilationUnitVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$AnnotationVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$ArrayInitializerOrRvalueVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$AtomVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$BlockStatementVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$ConstructorInvocationVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$ElementValueVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$FieldDeclarationOrInitializerVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$FunctionDeclaratorVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$ImportVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$LvalueVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$RvalueVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$TryStatementResourceVisitor,\
+    
org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeBodyDeclarationVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeDeclarationVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeVisitor,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$1,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$10,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$11,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$2,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$3,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$4,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$4$1,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$5,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$6,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$7,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$7$1,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$8,\
+    org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$9,\
+    org.apache.fury.shaded.org.codehaus.janino.util.Annotatable,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$1,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$AnnotationDefaultAttribute,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$AttributeInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ClassFileException,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$CodeAttribute,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$CodeAttribute$ExceptionTableEntry,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantClassInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantDoubleInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantFieldrefInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantFloatInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantIntegerInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantInterfaceMethodrefInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantInvokeDynamicInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantLongInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodHandleInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodTypeInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodrefInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantNameAndTypeInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantPoolInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantStringInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantUtf8Info,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantValuePoolInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$DeprecatedAttribute,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ElementValue,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ExceptionsAttribute,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$FieldInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$LineNumberTableAttribute,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$LineNumberTableAttribute$Entry,\
+    org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$MethodInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$SourceFileAttribute,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$1,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$2,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$3,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$4,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$5,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$6,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$7,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$AppendFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$ChopFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$FullFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$ObjectVariableInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameFrameExtended,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameLocals1StackItemFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameLocals1StackItemFrameExtended,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$StackMapFrame,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$UninitializedVariableInfo,\
+    
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$VerificationTypeInfo,\
+    org.apache.fury.shaded.org.codehaus.janino.util.Traverser,\
+    sun.misc.Unsafe
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
 
b/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
index 862cb434..7da08486 100644
--- 
a/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
+++ 
b/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
@@ -66,7 +66,7 @@ public class CodegenSerializerTest extends FuryTestBase {
   }
 
   @Test(dataProvider = "furyCopyConfig")
-  public void testSimpleBean(Fury fury) {
+  public void testSimpleBeanCopy(Fury fury) {
     B b = new B();
     b.f1 = "str1";
     b.f2 = 1;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to