public class jdk.internal.foreign.abi.ProgrammableUpcallHandler implements jdk.internal.foreign.abi.UpcallHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.foreign.abi.ProgrammableUpcallHandler
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.invoke.VarHandle VH_LONG;
    descriptor: Ljava/lang/invoke/VarHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.invoke.MethodHandle mh;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      jdk.internal.vm.annotation.Stable()

  private final java.lang.invoke.MethodType type;
    descriptor: Ljava/lang/invoke/MethodType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.foreign.abi.CallingSequence callingSequence;
    descriptor: Ljdk/internal/foreign/abi/CallingSequence;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long entryPoint;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.foreign.abi.ABIDescriptor abi;
    descriptor: Ljdk/internal/foreign/abi/ABIDescriptor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.foreign.abi.BufferLayout layout;
    descriptor: Ljdk/internal/foreign/abi/BufferLayout;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 55
            ldc "jdk.internal.foreign.ProgrammableUpcallHandler.DEBUG"
            invokestatic sun.security.action.GetBooleanAction.privilegedGetProperty:(Ljava/lang/String;)Z
         1: .line 54
            putstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.DEBUG:Z
         2: .line 57
            getstatic jdk.incubator.foreign.MemoryLayouts.JAVA_LONG:Ljdk/incubator/foreign/ValueLayout;
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            iconst_0
            anewarray jdk.incubator.foreign.MemoryLayout$PathElement
            invokevirtual jdk.incubator.foreign.ValueLayout.varHandle:(Ljava/lang/Class;[Ljdk/incubator/foreign/MemoryLayout$PathElement;)Ljava/lang/invoke/VarHandle;
            putstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.VH_LONG:Ljava/lang/invoke/VarHandle;
         3: .line 140
            invokestatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.registerNatives:()V
         4: .line 141
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.internal.foreign.abi.ABIDescriptor, java.lang.invoke.MethodHandle, jdk.internal.foreign.abi.CallingSequence);
    descriptor: (Ljdk/internal/foreign/abi/ABIDescriptor;Ljava/lang/invoke/MethodHandle;Ljdk/internal/foreign/abi/CallingSequence;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
        start local 1 // jdk.internal.foreign.abi.ABIDescriptor abi
        start local 2 // java.lang.invoke.MethodHandle target
        start local 3 // jdk.internal.foreign.abi.CallingSequence callingSequence
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 1 /* abi */
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
         2: .line 70
            aload 0 /* this */
            aload 1 /* abi */
            invokestatic jdk.internal.foreign.abi.BufferLayout.of:(Ljdk/internal/foreign/abi/ABIDescriptor;)Ljdk/internal/foreign/abi/BufferLayout;
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
         3: .line 71
            aload 0 /* this */
            aload 3 /* callingSequence */
            invokevirtual jdk.internal.foreign.abi.CallingSequence.methodType:()Ljava/lang/invoke/MethodType;
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.type:Ljava/lang/invoke/MethodType;
         4: .line 72
            aload 0 /* this */
            aload 3 /* callingSequence */
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.callingSequence:Ljdk/internal/foreign/abi/CallingSequence;
         5: .line 73
            aload 0 /* this */
            aload 2 /* target */
            ldc [Ljava/lang/Object;
            aload 3 /* callingSequence */
            invokevirtual jdk.internal.foreign.abi.CallingSequence.methodType:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            invokevirtual java.lang.invoke.MethodHandle.asSpreader:(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.mh:Ljava/lang/invoke/MethodHandle;
         6: .line 74
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* abi */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            invokevirtual jdk.internal.foreign.abi.ProgrammableUpcallHandler.allocateUpcallStub:(Ljdk/internal/foreign/abi/ABIDescriptor;Ljdk/internal/foreign/abi/BufferLayout;)J
            putfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.entryPoint:J
         7: .line 75
            return
        end local 3 // jdk.internal.foreign.abi.CallingSequence callingSequence
        end local 2 // java.lang.invoke.MethodHandle target
        end local 1 // jdk.internal.foreign.abi.ABIDescriptor abi
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;
            0    8     1              abi  Ljdk/internal/foreign/abi/ABIDescriptor;
            0    8     2           target  Ljava/lang/invoke/MethodHandle;
            0    8     3  callingSequence  Ljdk/internal/foreign/abi/CallingSequence;
    MethodParameters:
                 Name  Flags
      abi              
      target           
      callingSequence  

  public long entryPoint();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
         0: .line 79
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.entryPoint:J
            lreturn
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;

  public static void invoke(jdk.internal.foreign.abi.ProgrammableUpcallHandler, long);
    descriptor: (Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;J)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler handler
        start local 1 // long address
         0: .line 83
            aload 0 /* handler */
            lload 1 /* address */
            invokestatic jdk.incubator.foreign.MemoryAddress.ofLong:(J)Ljdk/incubator/foreign/MemoryAddress;
            invokevirtual jdk.internal.foreign.abi.ProgrammableUpcallHandler.invoke:(Ljdk/incubator/foreign/MemoryAddress;)V
         1: .line 84
            return
        end local 1 // long address
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler handler
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  handler  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;
            0    2     1  address  J
    MethodParameters:
         Name  Flags
      handler  
      address  

  private void invoke(jdk.incubator.foreign.MemoryAddress);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
        start local 1 // jdk.incubator.foreign.MemoryAddress buffer
         0: .line 88
            aload 1 /* buffer */
            invokeinterface jdk.incubator.foreign.MemoryAddress.toRawLongValue:()J
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            getfield jdk.internal.foreign.abi.BufferLayout.size:J
            invokestatic jdk.internal.foreign.MemoryAddressImpl.ofLongUnchecked:(JJ)Ljdk/incubator/foreign/MemorySegment;
            astore 2 /* bufferBase */
        start local 2 // jdk.incubator.foreign.MemorySegment bufferBase
         1: .line 90
            getstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.DEBUG:Z
            ifeq 4
         2: .line 91
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Buffer state before:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 92
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.arch:Ljdk/internal/foreign/abi/Architecture;
            aload 2 /* bufferBase */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokevirtual jdk.internal.foreign.abi.BufferLayout.dump:(Ljdk/internal/foreign/abi/Architecture;Ljdk/incubator/foreign/MemorySegment;Ljava/io/PrintStream;)V
         4: .line 95
      StackMap locals: jdk.incubator.foreign.MemorySegment
      StackMap stack:
            getstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.VH_LONG:Ljava/lang/invoke/VarHandle;
            aload 2 /* bufferBase */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            getfield jdk.internal.foreign.abi.BufferLayout.stack_args:J
            invokeinterface jdk.incubator.foreign.MemorySegment.asSlice:(J)Ljdk/incubator/foreign/MemorySegment;
            invokevirtual java.lang.invoke.VarHandle.get:(Ljdk/incubator/foreign/MemorySegment;)J
            invokestatic jdk.internal.foreign.MemoryAddressImpl.ofLongUnchecked:(J)Ljdk/incubator/foreign/MemorySegment;
            astore 3 /* stackArgsBase */
        start local 3 // jdk.incubator.foreign.MemorySegment stackArgsBase
         5: .line 96
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.type:Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            anewarray java.lang.Object
            astore 4 /* args */
        start local 4 // java.lang.Object[] args
         6: .line 97
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         7: goto 13
         8: .line 98
      StackMap locals: jdk.incubator.foreign.MemorySegment java.lang.Object[] int
      StackMap stack:
            aload 4 /* args */
            iload 5 /* i */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.callingSequence:Ljdk/internal/foreign/abi/CallingSequence;
            iload 5 /* i */
            invokevirtual jdk.internal.foreign.abi.CallingSequence.argumentBindings:(I)Ljava/util/List;
         9: .line 99
            aload 0 /* this */
            aload 3 /* stackArgsBase */
            aload 2 /* bufferBase */
            invokedynamic load(Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;Ljdk/incubator/foreign/MemorySegment;Ljdk/incubator/foreign/MemorySegment;)Ljdk/internal/foreign/abi/BindingInterpreter$LoadFunc;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljava/lang/Object;
                  jdk/internal/foreign/abi/ProgrammableUpcallHandler.lambda$0(Ljdk/incubator/foreign/MemorySegment;Ljdk/incubator/foreign/MemorySegment;Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljava/lang/Object; (7)
                  (Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljava/lang/Object;
        10: .line 104
            getstatic jdk.internal.foreign.abi.SharedUtils.DEFAULT_ALLOCATOR:Ljdk/internal/foreign/abi/SharedUtils$Allocator;
        11: .line 98
            invokestatic jdk.internal.foreign.abi.BindingInterpreter.box:(Ljava/util/List;Ljdk/internal/foreign/abi/BindingInterpreter$LoadFunc;Ljdk/internal/foreign/abi/SharedUtils$Allocator;)Ljava/lang/Object;
            aastore
        12: .line 97
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 5 /* i */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.type:Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmplt 8
        end local 5 // int i
        14: .line 107
            getstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.DEBUG:Z
            ifeq 17
        15: .line 108
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Java arguments:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        16: .line 109
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 4 /* args */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            iconst_2
            invokevirtual java.lang.String.indent:(I)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.mh:Ljava/lang/invoke/MethodHandle;
            aload 4 /* args */
            invokevirtual java.lang.invoke.MethodHandle.invoke:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* o */
        start local 5 // java.lang.Object o
        18: .line 114
            getstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.DEBUG:Z
            ifeq 21
        19: .line 115
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Java return:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 116
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 5 /* o */
            invokestatic java.util.Objects.toString:(Ljava/lang/Object;)Ljava/lang/String;
            iconst_2
            invokevirtual java.lang.String.indent:(I)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 119
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.mh:Ljava/lang/invoke/MethodHandle;
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 26
        22: .line 120
            aload 5 /* o */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.callingSequence:Ljdk/internal/foreign/abi/CallingSequence;
            invokevirtual jdk.internal.foreign.abi.CallingSequence.returnBindings:()Ljava/util/List;
        23: .line 121
            aload 0 /* this */
            aload 2 /* bufferBase */
            invokedynamic store(Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;Ljdk/incubator/foreign/MemorySegment;)Ljdk/internal/foreign/abi/BindingInterpreter$StoreFunc;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;Ljava/lang/Object;)V
                  jdk/internal/foreign/abi/ProgrammableUpcallHandler.lambda$1(Ljdk/incubator/foreign/MemorySegment;Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;Ljava/lang/Object;)V (7)
                  (Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;Ljava/lang/Object;)V
        24: .line 124
            aconst_null
        25: .line 120
            invokestatic jdk.internal.foreign.abi.BindingInterpreter.unbox:(Ljava/lang/Object;Ljava/util/List;Ljdk/internal/foreign/abi/BindingInterpreter$StoreFunc;Ljdk/internal/foreign/abi/SharedUtils$Allocator;)V
        26: .line 127
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.foreign.abi.ProgrammableUpcallHandler.DEBUG:Z
            ifeq 32
        27: .line 128
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Buffer state after:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        28: .line 129
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.arch:Ljdk/internal/foreign/abi/Architecture;
            aload 2 /* bufferBase */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokevirtual jdk.internal.foreign.abi.BufferLayout.dump:(Ljdk/internal/foreign/abi/Architecture;Ljdk/incubator/foreign/MemorySegment;Ljava/io/PrintStream;)V
        end local 5 // java.lang.Object o
        end local 4 // java.lang.Object[] args
        end local 3 // jdk.incubator.foreign.MemorySegment stackArgsBase
        end local 2 // jdk.incubator.foreign.MemorySegment bufferBase
        29: .line 131
            goto 32
      StackMap locals: jdk.internal.foreign.abi.ProgrammableUpcallHandler jdk.incubator.foreign.MemoryAddress
      StackMap stack: java.lang.Throwable
        30: astore 2 /* t */
        start local 2 // java.lang.Throwable t
        31: .line 132
            new java.lang.IllegalStateException
            dup
            aload 2 /* t */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Throwable t
        32: .line 134
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.incubator.foreign.MemoryAddress buffer
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   33     0           this  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;
            0   33     1         buffer  Ljdk/incubator/foreign/MemoryAddress;
            1   29     2     bufferBase  Ljdk/incubator/foreign/MemorySegment;
            5   29     3  stackArgsBase  Ljdk/incubator/foreign/MemorySegment;
            6   29     4           args  [Ljava/lang/Object;
            7   14     5              i  I
           18   29     5              o  Ljava/lang/Object;
           31   32     2              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0    29      30  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      buffer  

  public native long allocateUpcallStub(jdk.internal.foreign.abi.ABIDescriptor, jdk.internal.foreign.abi.BufferLayout);
    descriptor: (Ljdk/internal/foreign/abi/ABIDescriptor;Ljdk/internal/foreign/abi/BufferLayout;)J
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
        Name  Flags
      abi     
      layout  

  private static native void registerNatives();
    descriptor: ()V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE

  private java.lang.Object lambda$0(jdk.incubator.foreign.MemorySegment, jdk.incubator.foreign.MemorySegment, jdk.internal.foreign.abi.VMStorage, java.lang.Class);
    descriptor: (Ljdk/incubator/foreign/MemorySegment;Ljdk/incubator/foreign/MemorySegment;Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
        start local 3 // jdk.internal.foreign.abi.VMStorage storage
        start local 4 // java.lang.Class type
         0: .line 100
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.arch:Ljdk/internal/foreign/abi/Architecture;
            aload 3 /* storage */
            invokevirtual jdk.internal.foreign.abi.VMStorage.type:()I
            invokeinterface jdk.internal.foreign.abi.Architecture.isStackType:(I)Z
            ifeq 2
         1: .line 101
            aload 1
            aload 3 /* storage */
            invokevirtual jdk.internal.foreign.abi.VMStorage.index:()I
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.arch:Ljdk/internal/foreign/abi/Architecture;
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.abi:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.arch:Ljdk/internal/foreign/abi/Architecture;
            invokeinterface jdk.internal.foreign.abi.Architecture.stackType:()I
            invokeinterface jdk.internal.foreign.abi.Architecture.typeSize:(I)I
            imul
            i2l
            invokeinterface jdk.incubator.foreign.MemorySegment.asSlice:(J)Ljdk/incubator/foreign/MemorySegment;
            goto 3
         2: .line 102
      StackMap locals:
      StackMap stack:
            aload 2
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            aload 3 /* storage */
            invokevirtual jdk.internal.foreign.abi.BufferLayout.argOffset:(Ljdk/internal/foreign/abi/VMStorage;)J
            invokeinterface jdk.incubator.foreign.MemorySegment.asSlice:(J)Ljdk/incubator/foreign/MemorySegment;
         3: .line 100
      StackMap locals:
      StackMap stack: jdk.incubator.foreign.MemorySegment
            astore 5 /* ptr */
        start local 5 // jdk.incubator.foreign.MemorySegment ptr
         4: .line 103
            aload 5 /* ptr */
            aload 4 /* type */
            invokestatic jdk.internal.foreign.abi.SharedUtils.read:(Ljdk/incubator/foreign/MemorySegment;Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 5 // jdk.incubator.foreign.MemorySegment ptr
        end local 4 // java.lang.Class type
        end local 3 // jdk.internal.foreign.abi.VMStorage storage
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;
            0    5     3  storage  Ljdk/internal/foreign/abi/VMStorage;
            0    5     4     type  Ljava/lang/Class<*>;
            4    5     5      ptr  Ljdk/incubator/foreign/MemorySegment;

  private void lambda$1(jdk.incubator.foreign.MemorySegment, jdk.internal.foreign.abi.VMStorage, java.lang.Class, java.lang.Object);
    descriptor: (Ljdk/incubator/foreign/MemorySegment;Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;Ljava/lang/Object;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=6, args_size=5
        start local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
        start local 2 // jdk.internal.foreign.abi.VMStorage storage
        start local 3 // java.lang.Class type
        start local 4 // java.lang.Object value
         0: .line 122
            aload 1
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.ProgrammableUpcallHandler.layout:Ljdk/internal/foreign/abi/BufferLayout;
            aload 2 /* storage */
            invokevirtual jdk.internal.foreign.abi.BufferLayout.retOffset:(Ljdk/internal/foreign/abi/VMStorage;)J
            invokeinterface jdk.incubator.foreign.MemorySegment.asSlice:(J)Ljdk/incubator/foreign/MemorySegment;
            astore 5 /* ptr */
        start local 5 // jdk.incubator.foreign.MemorySegment ptr
         1: .line 123
            aload 5 /* ptr */
            aload 3 /* type */
            aload 4 /* value */
            invokestatic jdk.internal.foreign.abi.SharedUtils.writeOverSized:(Ljdk/incubator/foreign/MemorySegment;Ljava/lang/Class;Ljava/lang/Object;)V
        end local 5 // jdk.incubator.foreign.MemorySegment ptr
         2: .line 124
            return
        end local 4 // java.lang.Object value
        end local 3 // java.lang.Class type
        end local 2 // jdk.internal.foreign.abi.VMStorage storage
        end local 0 // jdk.internal.foreign.abi.ProgrammableUpcallHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Ljdk/internal/foreign/abi/ProgrammableUpcallHandler;
            0    3     2  storage  Ljdk/internal/foreign/abi/VMStorage;
            0    3     3     type  Ljava/lang/Class<*>;
            0    3     4    value  Ljava/lang/Object;
            1    2     5      ptr  Ljdk/incubator/foreign/MemorySegment;
}
SourceFile: "ProgrammableUpcallHandler.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract PathElement = jdk.incubator.foreign.MemoryLayout$PathElement of jdk.incubator.foreign.MemoryLayout
  abstract LoadFunc = jdk.internal.foreign.abi.BindingInterpreter$LoadFunc of jdk.internal.foreign.abi.BindingInterpreter
  abstract StoreFunc = jdk.internal.foreign.abi.BindingInterpreter$StoreFunc of jdk.internal.foreign.abi.BindingInterpreter
  public abstract Allocator = jdk.internal.foreign.abi.SharedUtils$Allocator of jdk.internal.foreign.abi.SharedUtils