public abstract class com.oracle.svm.jvmtiagentbase.JvmtiAgentBase<T extends com.oracle.svm.jvmtiagentbase.JNIHandleSet>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.svm.jvmtiagentbase.JvmtiAgentBase
  super_class: java.lang.Object
{
  private static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<org.graalvm.nativeimage.c.function.CFunctionPointer> onVMInitLiteral;
    descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lorg/graalvm/nativeimage/c/function/CFunctionPointer;>;

  private static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<org.graalvm.nativeimage.c.function.CFunctionPointer> onVMStartLiteral;
    descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lorg/graalvm/nativeimage/c/function/CFunctionPointer;>;

  private static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<org.graalvm.nativeimage.c.function.CFunctionPointer> onVMDeathLiteral;
    descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lorg/graalvm/nativeimage/c/function/CFunctionPointer;>;

  private static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<org.graalvm.nativeimage.c.function.CFunctionPointer> onThreadEndLiteral;
    descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lorg/graalvm/nativeimage/c/function/CFunctionPointer;>;

  private static com.oracle.svm.jvmtiagentbase.JvmtiAgentBase singleton;
    descriptor: Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private boolean destroyed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private T handles;
    descriptor: Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
    flags: (0x0002) ACC_PRIVATE
    Signature: TT;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 92
            ldc Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ldc "onVMInit"
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            aastore
            dup
            iconst_2
         1: .line 93
            ldc Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
            aastore
         2: .line 92
            invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            putstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMInitLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
         3: .line 94
            ldc Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ldc "onVMStart"
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            aastore
            invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            putstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMStartLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
         4: .line 95
            ldc Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ldc "onVMDeath"
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            aastore
            invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            putstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMDeathLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
         5: .line 96
            ldc Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ldc "onThreadEnd"
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            aastore
            dup
            iconst_2
         6: .line 97
            ldc Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
            aastore
         7: .line 96
            invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            putstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onThreadEndLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
         8: .line 99
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
         0: .line 90
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 101
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.destroyed:Z
         2: .line 90
            return
        end local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;

  protected abstract com.oracle.svm.jvmtiagentbase.JNIHandleSet constructJavaHandles(com.oracle.svm.jni.nativeapi.JNIEnvironment);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      env   

  protected abstract int onLoadCallback(com.oracle.svm.jni.nativeapi.JNIJavaVM, com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks, java.lang.String);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;Ljava/lang/String;)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
           Name  Flags
      vm         
      jvmti      
      callbacks  
      options    

  protected abstract int onUnloadCallback(com.oracle.svm.jni.nativeapi.JNIJavaVM);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      vm    

  protected abstract void onVMStartCallback(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      jvmti  
      jni    

  protected abstract void onVMInitCallback(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment, com.oracle.svm.jni.nativeapi.JNIObjectHandle);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      jvmti   
      jni     
      thread  

  protected abstract void onVMDeathCallback(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      jvmti  
      jni    

  protected abstract int getRequiredJvmtiVersion();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public boolean isDestroyed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
         0: .line 168
            aload 0 /* this */
            getfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.destroyed:Z
            ireturn
        end local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;

  public T handles();
    descriptor: ()Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
         0: .line 180
            aload 0 /* this */
            getfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.handles:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
            areturn
        end local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;
    Signature: ()TT;

  public static <T extends com.oracle.svm.jvmtiagentbase.JNIHandleSet, U extends com.oracle.svm.jvmtiagentbase.JvmtiAgentBase<T>> U singleton();
    descriptor: ()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 185
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No agent has been registered but an instance was requested."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         3: .line 186
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;U:Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;>()TU;

  protected static <T extends com.oracle.svm.jvmtiagentbase.JNIHandleSet> void registerAgent(com.oracle.svm.jvmtiagentbase.JvmtiAgentBase<T>);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase agentSingleton
         0: .line 197
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The agent has been registered multiple times."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         3: .line 198
            aload 0 /* agentSingleton */
            putstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
         4: .line 199
            return
        end local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase agentSingleton
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  agentSingleton  Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;
    Signature: <T:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;>(Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;)V
    MethodParameters:
                Name  Flags
      agentSingleton  

  public static int onLoad(com.oracle.svm.jni.nativeapi.JNIJavaVM, org.graalvm.nativeimage.c.type.CCharPointer, org.graalvm.word.PointerBase);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lorg/graalvm/nativeimage/c/type/CCharPointer;Lorg/graalvm/word/PointerBase;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
        start local 1 // org.graalvm.nativeimage.c.type.CCharPointer options
        start local 2 // org.graalvm.word.PointerBase reserved
         0: .line 209
            invokestatic org.graalvm.nativeimage.CurrentIsolate.getIsolate:()Lorg/graalvm/nativeimage/Isolate;
            invokestatic com.oracle.svm.jvmtiagentbase.AgentIsolate.setGlobalIsolate:(Lorg/graalvm/nativeimage/Isolate;)V
         1: .line 210
            aload 1 /* options */
            invokeinterface org.graalvm.nativeimage.c.type.CCharPointer.isNonNull:()Z
            ifeq 2
            aload 1 /* options */
            invokestatic com.oracle.svm.jvmtiagentbase.Support.fromCString:(Lorg/graalvm/nativeimage/c/type/CCharPointer;)Ljava/lang/String;
            goto 3
      StackMap locals:
      StackMap stack:
         2: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         3: astore 3 /* optionsString */
        start local 3 // java.lang.String optionsString
         4: .line 212
            ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
            invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.nativeimage.c.type.WordPointer
            astore 4 /* jvmtiPtr */
        start local 4 // org.graalvm.nativeimage.c.type.WordPointer jvmtiPtr
         5: .line 213
            aload 0 /* vm */
            invokeinterface com.oracle.svm.jni.nativeapi.JNIJavaVM.getFunctions:()Lcom/oracle/svm/jni/nativeapi/JNIInvokeInterface;
            invokeinterface com.oracle.svm.jni.nativeapi.JNIInvokeInterface.getGetEnv:()Lcom/oracle/svm/jni/nativeapi/JNIFunctionPointerTypes$GetEnvFunctionPointer;
            aload 0 /* vm */
            aload 4 /* jvmtiPtr */
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.getRequiredJvmtiVersion:()I
            invokeinterface com.oracle.svm.jni.nativeapi.JNIFunctionPointerTypes$GetEnvFunctionPointer.invoke:(Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lorg/graalvm/word/PointerBase;I)I
            invokestatic com.oracle.svm.jvmtiagentbase.Support.checkJni:(I)V
         6: .line 214
            aload 4 /* jvmtiPtr */
            invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:()Lorg/graalvm/word/WordBase;
            checkcast com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv
            astore 5 /* jvmti */
        start local 5 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
         7: .line 216
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;
            invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
            invokestatic org.graalvm.nativeimage.UnmanagedMemory.calloc:(I)Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks
            astore 6 /* callbacks */
        start local 6 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks callbacks
         8: .line 217
            aload 6 /* callbacks */
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMStartLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            invokevirtual org.graalvm.nativeimage.c.function.CEntryPointLiteral.getFunctionPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks.setVMStart:(Lorg/graalvm/nativeimage/c/function/CFunctionPointer;)V
         9: .line 218
            aload 6 /* callbacks */
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMInitLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            invokevirtual org.graalvm.nativeimage.c.function.CEntryPointLiteral.getFunctionPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks.setVMInit:(Lorg/graalvm/nativeimage/c/function/CFunctionPointer;)V
        10: .line 219
            aload 6 /* callbacks */
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMDeathLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            invokevirtual org.graalvm.nativeimage.c.function.CEntryPointLiteral.getFunctionPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks.setVMDeath:(Lorg/graalvm/nativeimage/c/function/CFunctionPointer;)V
        11: .line 220
            aload 6 /* callbacks */
            getstatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onThreadEndLiteral:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
            invokevirtual org.graalvm.nativeimage.c.function.CEntryPointLiteral.getFunctionPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks.setThreadEnd:(Lorg/graalvm/nativeimage/c/function/CFunctionPointer;)V
        12: .line 222
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 0 /* vm */
            aload 5 /* jvmti */
            aload 6 /* callbacks */
            aload 3 /* optionsString */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onLoadCallback:(Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;Ljava/lang/String;)I
            istore 7 /* ret */
        start local 7 // int ret
        13: .line 223
            iload 7 /* ret */
            ifeq 15
        14: .line 224
            iload 7 /* ret */
            ireturn
        15: .line 227
      StackMap locals: com.oracle.svm.jni.nativeapi.JNIJavaVM org.graalvm.nativeimage.c.type.CCharPointer org.graalvm.word.PointerBase java.lang.String org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks int
      StackMap stack:
            aload 5 /* jvmti */
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv.getFunctions:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface.SetEventCallbacks:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface$SetEventCallbacksFunctionPointer;
            aload 5 /* jvmti */
            aload 6 /* callbacks */
            ldc Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;
            invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventCallbacksFunctionPointer.invoke:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;I)Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;
            invokestatic com.oracle.svm.jvmtiagentbase.Support.check:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;)V
        16: .line 228
            aload 6 /* callbacks */
            invokestatic org.graalvm.nativeimage.UnmanagedMemory.free:(Lorg/graalvm/word/PointerBase;)V
        17: .line 230
            aload 5 /* jvmti */
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv.getFunctions:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface.SetEventNotificationMode:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface$SetEventNotificationModeFunctionPointer;
            aload 5 /* jvmti */
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventMode.JVMTI_ENABLE:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEvent.JVMTI_EVENT_VM_START:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;
            invokestatic com.oracle.svm.jni.JNIObjectHandles.nullHandle:()Lorg/graalvm/word/SignedWord;
            checkcast com.oracle.svm.jni.nativeapi.JNIObjectHandle
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventNotificationModeFunctionPointer.invoke:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;
            invokestatic com.oracle.svm.jvmtiagentbase.Support.check:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;)V
        18: .line 231
            aload 5 /* jvmti */
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv.getFunctions:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface.SetEventNotificationMode:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface$SetEventNotificationModeFunctionPointer;
            aload 5 /* jvmti */
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventMode.JVMTI_ENABLE:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEvent.JVMTI_EVENT_VM_INIT:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;
            invokestatic com.oracle.svm.jni.JNIObjectHandles.nullHandle:()Lorg/graalvm/word/SignedWord;
            checkcast com.oracle.svm.jni.nativeapi.JNIObjectHandle
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventNotificationModeFunctionPointer.invoke:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;
            invokestatic com.oracle.svm.jvmtiagentbase.Support.check:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;)V
        19: .line 232
            aload 5 /* jvmti */
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv.getFunctions:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface.SetEventNotificationMode:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface$SetEventNotificationModeFunctionPointer;
            aload 5 /* jvmti */
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventMode.JVMTI_ENABLE:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEvent.JVMTI_EVENT_VM_DEATH:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;
            invokestatic com.oracle.svm.jni.JNIObjectHandles.nullHandle:()Lorg/graalvm/word/SignedWord;
            checkcast com.oracle.svm.jni.nativeapi.JNIObjectHandle
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventNotificationModeFunctionPointer.invoke:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;
            invokestatic com.oracle.svm.jvmtiagentbase.Support.check:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;)V
        20: .line 233
            aload 5 /* jvmti */
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv.getFunctions:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface;
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface.SetEventNotificationMode:()Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiInterface$SetEventNotificationModeFunctionPointer;
            aload 5 /* jvmti */
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventMode.JVMTI_ENABLE:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;
            getstatic com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEvent.JVMTI_EVENT_THREAD_END:Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;
            invokestatic com.oracle.svm.jni.JNIObjectHandles.nullHandle:()Lorg/graalvm/word/SignedWord;
            checkcast com.oracle.svm.jni.nativeapi.JNIObjectHandle
            invokeinterface com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventNotificationModeFunctionPointer.invoke:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventMode;Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEvent;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;
            invokestatic com.oracle.svm.jvmtiagentbase.Support.check:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiError;)V
        21: .line 234
            iconst_0
            ireturn
        end local 7 // int ret
        end local 6 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEventCallbacks callbacks
        end local 5 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
        end local 4 // org.graalvm.nativeimage.c.type.WordPointer jvmtiPtr
        end local 3 // java.lang.String optionsString
        end local 2 // org.graalvm.word.PointerBase reserved
        end local 1 // org.graalvm.nativeimage.c.type.CCharPointer options
        end local 0 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   22     0             vm  Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;
            0   22     1        options  Lorg/graalvm/nativeimage/c/type/CCharPointer;
            0   22     2       reserved  Lorg/graalvm/word/PointerBase;
            4   22     3  optionsString  Ljava/lang/String;
            5   22     4       jvmtiPtr  Lorg/graalvm/nativeimage/c/type/WordPointer;
            7   22     5          jvmti  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            8   22     6      callbacks  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEventCallbacks;
           13   22     7            ret  I
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint(name = "Agent_OnLoad")
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointSetup$EnterCreateIsolatePrologue;)
    MethodParameters:
          Name  Flags
      vm        
      options   
      reserved  

  protected void unload(com.oracle.svm.jni.nativeapi.JNIJavaVM);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
        start local 1 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
         0: .line 250
            aload 0 /* this */
            getfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.destroyed:Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ldc "The unload function from the JvmtiAgentBase must only be called once."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         3: .line 251
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            iconst_1
            putfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.destroyed:Z
         4: .line 253
            ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
            invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.nativeimage.c.type.WordPointer
            astore 2 /* jniPtr */
        start local 2 // org.graalvm.nativeimage.c.type.WordPointer jniPtr
         5: .line 254
            aload 1 /* vm */
            invokeinterface com.oracle.svm.jni.nativeapi.JNIJavaVM.getFunctions:()Lcom/oracle/svm/jni/nativeapi/JNIInvokeInterface;
            invokeinterface com.oracle.svm.jni.nativeapi.JNIInvokeInterface.getGetEnv:()Lcom/oracle/svm/jni/nativeapi/JNIFunctionPointerTypes$GetEnvFunctionPointer;
            aload 1 /* vm */
            aload 2 /* jniPtr */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_6:()I
            invokeinterface com.oracle.svm.jni.nativeapi.JNIFunctionPointerTypes$GetEnvFunctionPointer.invoke:(Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lorg/graalvm/word/PointerBase;I)I
            invokestatic com.oracle.svm.jni.nativeapi.JNIErrors.JNI_OK:()I
            if_icmpeq 7
         6: .line 255
            aload 2 /* jniPtr */
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            invokeinterface org.graalvm.nativeimage.c.type.WordPointer.write:(Lorg/graalvm/word/WordBase;)V
         7: .line 257
      StackMap locals: org.graalvm.nativeimage.c.type.WordPointer
      StackMap stack:
            aload 2 /* jniPtr */
            invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:()Lorg/graalvm/word/WordBase;
            checkcast com.oracle.svm.jni.nativeapi.JNIEnvironment
            astore 3 /* env */
        start local 3 // com.oracle.svm.jni.nativeapi.JNIEnvironment env
         8: .line 258
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            getfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.handles:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
            aload 3 /* env */
            invokevirtual com.oracle.svm.jvmtiagentbase.JNIHandleSet.destroy:(Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
         9: .line 259
            invokestatic com.oracle.svm.jvmtiagentbase.Support.destroy:()V
        10: .line 260
            invokestatic com.oracle.svm.jvmtiagentbase.AgentIsolate.resetGlobalIsolate:()V
        11: .line 261
            return
        end local 3 // com.oracle.svm.jni.nativeapi.JNIEnvironment env
        end local 2 // org.graalvm.nativeimage.c.type.WordPointer jniPtr
        end local 1 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
        end local 0 // com.oracle.svm.jvmtiagentbase.JvmtiAgentBase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase<TT;>;
            0   12     1      vm  Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;
            5   12     2  jniPtr  Lorg/graalvm/nativeimage/c/type/WordPointer;
            8   12     3     env  Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
    MethodParameters:
      Name  Flags
      vm    

  public static int onUnload(com.oracle.svm.jni.nativeapi.JNIJavaVM);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
         0: .line 267
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 0 /* vm */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onUnloadCallback:(Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;)I
            ireturn
        end local 0 // com.oracle.svm.jni.nativeapi.JNIJavaVM vm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    vm  Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint(name = "Agent_OnUnload")
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/jvmtiagentbase/AgentIsolate$Prologue;)
    MethodParameters:
      Name  Flags
      vm    

  public static void onVMStart(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
        start local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
         0: .line 274
            aload 0 /* jvmti */
            invokestatic com.oracle.svm.jvmtiagentbase.Support.initialize:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;)V
         1: .line 275
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 1 /* jni */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.constructJavaHandles:(Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
            putfield com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.handles:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;
         2: .line 276
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 0 /* jvmti */
            aload 1 /* jni */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMStartCallback:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
         3: .line 277
            return
        end local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        end local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  jvmti  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            0    4     1    jni  Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint()
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/jvmtiagentbase/AgentIsolate$Prologue;)
    MethodParameters:
       Name  Flags
      jvmti  
      jni    

  public static void onVMInit(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment, com.oracle.svm.jni.nativeapi.JNIObjectHandle);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
        start local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        start local 2 // com.oracle.svm.jni.nativeapi.JNIObjectHandle thread
         0: .line 283
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 0 /* jvmti */
            aload 1 /* jni */
            aload 2 /* thread */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMInitCallback:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)V
         1: .line 284
            return
        end local 2 // com.oracle.svm.jni.nativeapi.JNIObjectHandle thread
        end local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        end local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0   jvmti  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            0    2     1     jni  Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            0    2     2  thread  Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint()
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/jvmtiagentbase/AgentIsolate$Prologue;)
    MethodParameters:
        Name  Flags
      jvmti   
      jni     
      thread  

  public static void onVMDeath(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
        start local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
         0: .line 290
            invokestatic com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.singleton:()Lcom/oracle/svm/jvmtiagentbase/JvmtiAgentBase;
            aload 0 /* jvmti */
            aload 1 /* jni */
            invokevirtual com.oracle.svm.jvmtiagentbase.JvmtiAgentBase.onVMDeathCallback:(Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;)V
         1: .line 291
            return
        end local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        end local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  jvmti  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            0    2     1    jni  Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint()
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/jvmtiagentbase/AgentIsolate$Prologue;)
    MethodParameters:
       Name  Flags
      jvmti  
      jni    

  public static void onThreadEnd(com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv, com.oracle.svm.jni.nativeapi.JNIEnvironment, com.oracle.svm.jni.nativeapi.JNIObjectHandle);
    descriptor: (Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
        start local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        start local 2 // com.oracle.svm.jni.nativeapi.JNIObjectHandle thread
         0: .line 301
            return
        end local 2 // com.oracle.svm.jni.nativeapi.JNIObjectHandle thread
        end local 1 // com.oracle.svm.jni.nativeapi.JNIEnvironment jni
        end local 0 // com.oracle.svm.jvmtiagentbase.jvmti.JvmtiEnv jvmti
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0   jvmti  Lcom/oracle/svm/jvmtiagentbase/jvmti/JvmtiEnv;
            0    1     1     jni  Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            0    1     2  thread  Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.c.function.CEntryPoint()
      com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/jvmtiagentbase/AgentIsolate$EnterOrBailoutPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointSetup$LeaveDetachThreadEpilogue;)
    MethodParameters:
        Name  Flags
      jvmti   
      jni     
      thread  
}
Signature: <T:Lcom/oracle/svm/jvmtiagentbase/JNIHandleSet;>Ljava/lang/Object;
SourceFile: "JvmtiAgentBase.java"
InnerClasses:
  public abstract GetEnvFunctionPointer = com.oracle.svm.jni.nativeapi.JNIFunctionPointerTypes$GetEnvFunctionPointer of com.oracle.svm.jni.nativeapi.JNIFunctionPointerTypes
  public abstract SetEventCallbacksFunctionPointer = com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventCallbacksFunctionPointer of com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface
  public abstract SetEventNotificationModeFunctionPointer = com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface$SetEventNotificationModeFunctionPointer of com.oracle.svm.jvmtiagentbase.jvmti.JvmtiInterface