public class jdk.internal.foreign.abi.aarch64.CallArranger
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.foreign.abi.aarch64.CallArranger
  super_class: java.lang.Object
{
  private static final int STACK_SLOT_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  public static final int MAX_REGISTER_ARGUMENTS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private static final jdk.internal.foreign.abi.VMStorage INDIRECT_RESULT;
    descriptor: Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=0, args_size=0
         0: .line 64
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r8:Ljdk/internal/foreign/abi/VMStorage;
            putstatic jdk.internal.foreign.abi.aarch64.CallArranger.INDIRECT_RESULT:Ljdk/internal/foreign/abi/VMStorage;
         1: .line 78
            bipush 9
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r0:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r1:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r2:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_3
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r3:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_4
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r4:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_5
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r5:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 6
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r6:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 7
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r7:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 8
            getstatic jdk.internal.foreign.abi.aarch64.CallArranger.INDIRECT_RESULT:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         2: .line 79
            bipush 8
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v0:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v1:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v2:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_3
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v3:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_4
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v4:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_5
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v5:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 6
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v6:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 7
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v7:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         3: .line 80
            iconst_2
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r0:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r1:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         4: .line 81
            iconst_4
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v0:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v1:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v2:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_3
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v3:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         5: .line 82
            bipush 7
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r9:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r10:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r11:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_3
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r12:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_4
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r13:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_5
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r14:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 6
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.r15:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         6: .line 83
            bipush 15
            anewarray jdk.internal.foreign.abi.VMStorage
            dup
            iconst_0
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v16:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_1
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v17:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v18:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_3
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v19:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_4
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v20:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            iconst_5
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v21:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 6
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v22:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 7
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v23:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 8
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v25:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 9
         7: .line 84
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v26:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 10
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v27:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 11
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v28:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 12
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v29:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 13
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v30:Ljdk/internal/foreign/abi/VMStorage;
            aastore
            dup
            bipush 14
            getstatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.v31:Ljdk/internal/foreign/abi/VMStorage;
            aastore
         8: .line 85
            bipush 16
         9: .line 86
            iconst_0
        10: .line 77
            invokestatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.abiFor:([Ljdk/internal/foreign/abi/VMStorage;[Ljdk/internal/foreign/abi/VMStorage;[Ljdk/internal/foreign/abi/VMStorage;[Ljdk/internal/foreign/abi/VMStorage;[Ljdk/internal/foreign/abi/VMStorage;[Ljdk/internal/foreign/abi/VMStorage;II)Ljdk/internal/foreign/abi/ABIDescriptor;
            putstatic jdk.internal.foreign.abi.aarch64.CallArranger.C:Ljdk/internal/foreign/abi/ABIDescriptor;
        11: .line 87
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger this
         0: .line 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/abi/aarch64/CallArranger;

  public static jdk.internal.foreign.abi.aarch64.CallArranger$Bindings getBindings(java.lang.invoke.MethodType, jdk.incubator.foreign.FunctionDescriptor, boolean);
    descriptor: (Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;Z)Ljdk/internal/foreign/abi/aarch64/CallArranger$Bindings;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=3
        start local 0 // java.lang.invoke.MethodType mt
        start local 1 // jdk.incubator.foreign.FunctionDescriptor cDesc
        start local 2 // boolean forUpcall
         0: .line 101
            aload 0 /* mt */
            aload 1 /* cDesc */
            ldc 64
            invokestatic jdk.internal.foreign.abi.SharedUtils.checkFunctionTypes:(Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;J)V
         1: .line 103
            new jdk.internal.foreign.abi.CallingSequenceBuilder
            dup
            iload 2 /* forUpcall */
            invokespecial jdk.internal.foreign.abi.CallingSequenceBuilder.<init>:(Z)V
            astore 3 /* csb */
        start local 3 // jdk.internal.foreign.abi.CallingSequenceBuilder csb
         2: .line 105
            iload 2 /* forUpcall */
            ifeq 3
            new jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator
            dup
            iconst_1
            invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator.<init>:(Z)V
            goto 4
      StackMap locals: jdk.internal.foreign.abi.CallingSequenceBuilder
      StackMap stack:
         3: new jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator
            dup
            iconst_1
            invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.<init>:(Z)V
      StackMap locals:
      StackMap stack: jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator
         4: astore 4 /* argCalc */
        start local 4 // jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator argCalc
         5: .line 106
            iload 2 /* forUpcall */
            ifeq 6
            new jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator
            dup
            iconst_0
            invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.<init>:(Z)V
            goto 7
      StackMap locals: jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator
      StackMap stack:
         6: new jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator
            dup
            iconst_0
            invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator.<init>:(Z)V
      StackMap locals:
      StackMap stack: jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator
         7: astore 5 /* retCalc */
        start local 5 // jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator retCalc
         8: .line 108
            aload 1 /* cDesc */
            invokevirtual jdk.incubator.foreign.FunctionDescriptor.returnLayout:()Ljava/util/Optional;
            invokestatic jdk.internal.foreign.abi.aarch64.CallArranger.isInMemoryReturn:(Ljava/util/Optional;)Z
            istore 6 /* returnInMemory */
        start local 6 // boolean returnInMemory
         9: .line 109
            iload 6 /* returnInMemory */
            ifeq 14
        10: .line 110
            aload 3 /* csb */
            ldc Ljdk/incubator/foreign/MemoryAddress;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
        11: .line 111
            aload 4 /* argCalc */
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator.getIndirectBindings:()Ljava/util/List;
        12: .line 110
            invokevirtual jdk.internal.foreign.abi.CallingSequenceBuilder.addArgumentBindings:(Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;Ljava/util/List;)Ljdk/internal/foreign/abi/CallingSequenceBuilder;
            pop
        13: .line 112
            goto 18
      StackMap locals: jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator int
      StackMap stack:
        14: aload 1 /* cDesc */
            invokevirtual jdk.incubator.foreign.FunctionDescriptor.returnLayout:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 18
        15: .line 113
            aload 0 /* mt */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 7 /* carrier */
        start local 7 // java.lang.Class carrier
        16: .line 114
            aload 1 /* cDesc */
            invokevirtual jdk.incubator.foreign.FunctionDescriptor.returnLayout:()Ljava/util/Optional;
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast jdk.incubator.foreign.MemoryLayout
            astore 8 /* layout */
        start local 8 // jdk.incubator.foreign.MemoryLayout layout
        17: .line 115
            aload 3 /* csb */
            aload 7 /* carrier */
            aload 8 /* layout */
            aload 5 /* retCalc */
            aload 7 /* carrier */
            aload 8 /* layout */
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator.getBindings:(Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;)Ljava/util/List;
            invokevirtual jdk.internal.foreign.abi.CallingSequenceBuilder.setReturnBindings:(Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;Ljava/util/List;)Ljdk/internal/foreign/abi/CallingSequenceBuilder;
            pop
        end local 8 // jdk.incubator.foreign.MemoryLayout layout
        end local 7 // java.lang.Class carrier
        18: .line 118
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        19: goto 24
        20: .line 119
      StackMap locals: int
      StackMap stack:
            aload 0 /* mt */
            iload 7 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 8 /* carrier */
        start local 8 // java.lang.Class carrier
        21: .line 120
            aload 1 /* cDesc */
            invokevirtual jdk.incubator.foreign.FunctionDescriptor.argumentLayouts:()Ljava/util/List;
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast jdk.incubator.foreign.MemoryLayout
            astore 9 /* layout */
        start local 9 // jdk.incubator.foreign.MemoryLayout layout
        22: .line 121
            aload 3 /* csb */
            aload 8 /* carrier */
            aload 9 /* layout */
            aload 4 /* argCalc */
            aload 8 /* carrier */
            aload 9 /* layout */
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator.getBindings:(Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;)Ljava/util/List;
            invokevirtual jdk.internal.foreign.abi.CallingSequenceBuilder.addArgumentBindings:(Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;Ljava/util/List;)Ljdk/internal/foreign/abi/CallingSequenceBuilder;
            pop
        end local 9 // jdk.incubator.foreign.MemoryLayout layout
        end local 8 // java.lang.Class carrier
        23: .line 118
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 7 /* i */
            aload 0 /* mt */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmplt 20
        end local 7 // int i
        25: .line 124
            aload 3 /* csb */
            aload 1 /* cDesc */
            invokestatic jdk.internal.foreign.abi.SharedUtils.isTrivial:(Ljdk/incubator/foreign/FunctionDescriptor;)Z
            invokevirtual jdk.internal.foreign.abi.CallingSequenceBuilder.setTrivial:(Z)Ljdk/internal/foreign/abi/CallingSequenceBuilder;
            pop
        26: .line 126
            new jdk.internal.foreign.abi.aarch64.CallArranger$Bindings
            dup
            aload 3 /* csb */
            invokevirtual jdk.internal.foreign.abi.CallingSequenceBuilder.build:()Ljdk/internal/foreign/abi/CallingSequence;
            iload 6 /* returnInMemory */
            invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$Bindings.<init>:(Ljdk/internal/foreign/abi/CallingSequence;Z)V
            areturn
        end local 6 // boolean returnInMemory
        end local 5 // jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator retCalc
        end local 4 // jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator argCalc
        end local 3 // jdk.internal.foreign.abi.CallingSequenceBuilder csb
        end local 2 // boolean forUpcall
        end local 1 // jdk.incubator.foreign.FunctionDescriptor cDesc
        end local 0 // java.lang.invoke.MethodType mt
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   27     0              mt  Ljava/lang/invoke/MethodType;
            0   27     1           cDesc  Ljdk/incubator/foreign/FunctionDescriptor;
            0   27     2       forUpcall  Z
            2   27     3             csb  Ljdk/internal/foreign/abi/CallingSequenceBuilder;
            5   27     4         argCalc  Ljdk/internal/foreign/abi/aarch64/CallArranger$BindingCalculator;
            8   27     5         retCalc  Ljdk/internal/foreign/abi/aarch64/CallArranger$BindingCalculator;
            9   27     6  returnInMemory  Z
           16   18     7         carrier  Ljava/lang/Class<*>;
           17   18     8          layout  Ljdk/incubator/foreign/MemoryLayout;
           19   25     7               i  I
           21   23     8         carrier  Ljava/lang/Class<*>;
           22   23     9          layout  Ljdk/incubator/foreign/MemoryLayout;
    MethodParameters:
           Name  Flags
      mt         
      cDesc      
      forUpcall  

  public static java.lang.invoke.MethodHandle arrangeDowncall(jdk.incubator.foreign.Addressable, java.lang.invoke.MethodType, jdk.incubator.foreign.FunctionDescriptor);
    descriptor: (Ljdk/incubator/foreign/Addressable;Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // jdk.incubator.foreign.Addressable addr
        start local 1 // java.lang.invoke.MethodType mt
        start local 2 // jdk.incubator.foreign.FunctionDescriptor cDesc
         0: .line 130
            aload 1 /* mt */
            aload 2 /* cDesc */
            iconst_0
            invokestatic jdk.internal.foreign.abi.aarch64.CallArranger.getBindings:(Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;Z)Ljdk/internal/foreign/abi/aarch64/CallArranger$Bindings;
            astore 3 /* bindings */
        start local 3 // jdk.internal.foreign.abi.aarch64.CallArranger$Bindings bindings
         1: .line 132
            new jdk.internal.foreign.abi.ProgrammableInvoker
            dup
            getstatic jdk.internal.foreign.abi.aarch64.CallArranger.C:Ljdk/internal/foreign/abi/ABIDescriptor;
            aload 0 /* addr */
            aload 3 /* bindings */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$Bindings.callingSequence:Ljdk/internal/foreign/abi/CallingSequence;
            invokespecial jdk.internal.foreign.abi.ProgrammableInvoker.<init>:(Ljdk/internal/foreign/abi/ABIDescriptor;Ljdk/incubator/foreign/Addressable;Ljdk/internal/foreign/abi/CallingSequence;)V
            invokevirtual jdk.internal.foreign.abi.ProgrammableInvoker.getBoundMethodHandle:()Ljava/lang/invoke/MethodHandle;
            astore 4 /* handle */
        start local 4 // java.lang.invoke.MethodHandle handle
         2: .line 134
            aload 3 /* bindings */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$Bindings.isInMemoryReturn:Z
            ifeq 4
         3: .line 135
            aload 4 /* handle */
            aload 2 /* cDesc */
            invokestatic jdk.internal.foreign.abi.SharedUtils.adaptDowncallForIMR:(Ljava/lang/invoke/MethodHandle;Ljdk/incubator/foreign/FunctionDescriptor;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* handle */
         4: .line 138
      StackMap locals: jdk.internal.foreign.abi.aarch64.CallArranger$Bindings java.lang.invoke.MethodHandle
      StackMap stack:
            aload 4 /* handle */
            areturn
        end local 4 // java.lang.invoke.MethodHandle handle
        end local 3 // jdk.internal.foreign.abi.aarch64.CallArranger$Bindings bindings
        end local 2 // jdk.incubator.foreign.FunctionDescriptor cDesc
        end local 1 // java.lang.invoke.MethodType mt
        end local 0 // jdk.incubator.foreign.Addressable addr
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      addr  Ljdk/incubator/foreign/Addressable;
            0    5     1        mt  Ljava/lang/invoke/MethodType;
            0    5     2     cDesc  Ljdk/incubator/foreign/FunctionDescriptor;
            1    5     3  bindings  Ljdk/internal/foreign/abi/aarch64/CallArranger$Bindings;
            2    5     4    handle  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      addr   
      mt     
      cDesc  

  public static jdk.internal.foreign.abi.UpcallHandler arrangeUpcall(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, jdk.incubator.foreign.FunctionDescriptor);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;)Ljdk/internal/foreign/abi/UpcallHandler;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodType mt
        start local 2 // jdk.incubator.foreign.FunctionDescriptor cDesc
         0: .line 142
            aload 1 /* mt */
            aload 2 /* cDesc */
            iconst_1
            invokestatic jdk.internal.foreign.abi.aarch64.CallArranger.getBindings:(Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;Z)Ljdk/internal/foreign/abi/aarch64/CallArranger$Bindings;
            astore 3 /* bindings */
        start local 3 // jdk.internal.foreign.abi.aarch64.CallArranger$Bindings bindings
         1: .line 144
            aload 3 /* bindings */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$Bindings.isInMemoryReturn:Z
            ifeq 3
         2: .line 145
            aload 0 /* target */
            invokestatic jdk.internal.foreign.abi.SharedUtils.adaptUpcallForIMR:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 0 /* target */
         3: .line 148
      StackMap locals: jdk.internal.foreign.abi.aarch64.CallArranger$Bindings
      StackMap stack:
            new jdk.internal.foreign.abi.ProgrammableUpcallHandler
            dup
            getstatic jdk.internal.foreign.abi.aarch64.CallArranger.C:Ljdk/internal/foreign/abi/ABIDescriptor;
            aload 0 /* target */
            aload 3 /* bindings */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$Bindings.callingSequence:Ljdk/internal/foreign/abi/CallingSequence;
            invokespecial jdk.internal.foreign.abi.ProgrammableUpcallHandler.<init>:(Ljdk/internal/foreign/abi/ABIDescriptor;Ljava/lang/invoke/MethodHandle;Ljdk/internal/foreign/abi/CallingSequence;)V
            areturn
        end local 3 // jdk.internal.foreign.abi.aarch64.CallArranger$Bindings bindings
        end local 2 // jdk.incubator.foreign.FunctionDescriptor cDesc
        end local 1 // java.lang.invoke.MethodType mt
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0    target  Ljava/lang/invoke/MethodHandle;
            0    4     1        mt  Ljava/lang/invoke/MethodType;
            0    4     2     cDesc  Ljdk/incubator/foreign/FunctionDescriptor;
            1    4     3  bindings  Ljdk/internal/foreign/abi/aarch64/CallArranger$Bindings;
    MethodParameters:
        Name  Flags
      target  
      mt      
      cDesc   

  private static boolean isInMemoryReturn(java.util.Optional<jdk.incubator.foreign.MemoryLayout>);
    descriptor: (Ljava/util/Optional;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Optional returnLayout
         0: .line 152
            aload 0 /* returnLayout */
         1: .line 153
            ldc Ljdk/incubator/foreign/GroupLayout;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic test(Ljava/lang/Class;)Ljava/util/function/Predicate;
              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:
                  (Ljava/lang/Object;)Z
                  java/lang/Class.isInstance(Ljava/lang/Object;)Z (5)
                  (Ljdk/incubator/foreign/MemoryLayout;)Z
            invokevirtual java.util.Optional.filter:(Ljava/util/function/Predicate;)Ljava/util/Optional;
         2: .line 154
            invokedynamic test()Ljava/util/function/Predicate;
              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:
                  (Ljava/lang/Object;)Z
                  jdk/internal/foreign/abi/aarch64/CallArranger.lambda$1(Ljdk/incubator/foreign/MemoryLayout;)Z (6)
                  (Ljdk/incubator/foreign/MemoryLayout;)Z
            invokevirtual java.util.Optional.filter:(Ljava/util/function/Predicate;)Ljava/util/Optional;
         3: .line 155
            invokevirtual java.util.Optional.isPresent:()Z
         4: .line 152
            ireturn
        end local 0 // java.util.Optional returnLayout
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0  returnLayout  Ljava/util/Optional<Ljdk/incubator/foreign/MemoryLayout;>;
    Signature: (Ljava/util/Optional<Ljdk/incubator/foreign/MemoryLayout;>;)Z
    MethodParameters:
              Name  Flags
      returnLayout  

  private static boolean lambda$1(jdk.incubator.foreign.MemoryLayout);
    descriptor: (Ljdk/incubator/foreign/MemoryLayout;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryLayout g
         0: .line 154
            aload 0 /* g */
            invokestatic jdk.internal.foreign.abi.aarch64.TypeClass.classifyLayout:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/aarch64/TypeClass;
            getstatic jdk.internal.foreign.abi.aarch64.TypeClass.STRUCT_REFERENCE:Ljdk/internal/foreign/abi/aarch64/TypeClass;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // jdk.incubator.foreign.MemoryLayout g
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     g  Ljdk/incubator/foreign/MemoryLayout;
}
SourceFile: "CallArranger.java"
NestMembers:
  jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator  jdk.internal.foreign.abi.aarch64.CallArranger$Bindings  jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator  jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator  jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final AArch64 = jdk.internal.foreign.PlatformLayouts$AArch64 of jdk.internal.foreign.PlatformLayouts
  abstract BindingCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator of jdk.internal.foreign.abi.aarch64.CallArranger
  public Bindings = jdk.internal.foreign.abi.aarch64.CallArranger$Bindings of jdk.internal.foreign.abi.aarch64.CallArranger
  BoxBindingCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$BoxBindingCalculator of jdk.internal.foreign.abi.aarch64.CallArranger
  StorageCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator of jdk.internal.foreign.abi.aarch64.CallArranger
  UnboxBindingCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator of jdk.internal.foreign.abi.aarch64.CallArranger