public final class jdk.internal.foreign.Utils
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.internal.foreign.Utils
  super_class: java.lang.Object
{
  private static final java.lang.String foreignRestrictedAccess;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 46
            ldc "foreign.restricted"
            invokestatic jdk.internal.misc.VM.getSavedProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
         1: .line 47
            ldc "deny"
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
         2: .line 46
            putstatic jdk.internal.foreign.Utils.foreignRestrictedAccess:Ljava/lang/String;
         3: .line 53
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Ljdk/internal/foreign/Utils;
            ldc "filterAddress"
         4: .line 54
            ldc Ljdk/internal/access/foreign/MemoryAddressProxy;
            ldc Ljdk/incubator/foreign/MemoryAddress;
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
         5: .line 53
            invokevirtual java.lang.invoke.MethodHandles$Lookup.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            putstatic jdk.internal.foreign.Utils.ADDRESS_FILTER:Ljava/lang/invoke/MethodHandle;
         6: .line 55
            goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 0 /* ex */
        start local 0 // java.lang.Throwable ex
         8: .line 56
            new java.lang.ExceptionInInitializerError
            dup
            aload 0 /* ex */
            invokespecial java.lang.ExceptionInInitializerError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.Throwable ex
         9: .line 58
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            8    9     0    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.Throwable

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

  public static long alignUp(long, long);
    descriptor: (JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // long n
        start local 2 // long alignment
         0: .line 61
            lload 0 /* n */
            lload 2 /* alignment */
            ladd
            lconst_1
            lsub
            lload 2 /* alignment */
            lneg
            land
            lreturn
        end local 2 // long alignment
        end local 0 // long n
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0          n  J
            0    1     2  alignment  J
    MethodParameters:
           Name  Flags
      n          
      alignment  

  public static long bitsToBytesOrThrow(long, java.util.function.Supplier<java.lang.RuntimeException>);
    descriptor: (JLjava/util/function/Supplier;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // long bits
        start local 2 // java.util.function.Supplier exFactory
         0: .line 65
            lload 0 /* bits */
            ldc 8
            lrem
            lconst_0
            lcmp
            ifne 2
         1: .line 66
            lload 0 /* bits */
            ldc 8
            ldiv
            lreturn
         2: .line 68
      StackMap locals:
      StackMap stack:
            aload 2 /* exFactory */
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast java.lang.RuntimeException
            athrow
        end local 2 // java.util.function.Supplier exFactory
        end local 0 // long bits
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       bits  J
            0    3     2  exFactory  Ljava/util/function/Supplier<Ljava/lang/RuntimeException;>;
    Signature: (JLjava/util/function/Supplier<Ljava/lang/RuntimeException;>;)J
    MethodParameters:
           Name  Flags
      bits       
      exFactory  

  public static java.lang.invoke.VarHandle fixUpVarHandle(java.lang.invoke.VarHandle);
    descriptor: (Ljava/lang/invoke/VarHandle;)Ljava/lang/invoke/VarHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.lang.invoke.VarHandle handle
         0: .line 75
            aload 0 /* handle */
            iconst_0
            iconst_1
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            getstatic jdk.internal.foreign.Utils.ADDRESS_FILTER:Ljava/lang/invoke/MethodHandle;
            aastore
            invokestatic jdk.incubator.foreign.MemoryHandles.filterCoordinates:(Ljava/lang/invoke/VarHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/VarHandle;
            areturn
        end local 0 // java.lang.invoke.VarHandle handle
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  handle  Ljava/lang/invoke/VarHandle;
    MethodParameters:
        Name  Flags
      handle  

  private static jdk.internal.access.foreign.MemoryAddressProxy filterAddress(jdk.incubator.foreign.MemoryAddress);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;)Ljdk/internal/access/foreign/MemoryAddressProxy;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryAddress addr
         0: .line 79
            aload 0 /* addr */
            checkcast jdk.internal.foreign.MemoryAddressImpl
            areturn
        end local 0 // jdk.incubator.foreign.MemoryAddress addr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  addr  Ljdk/incubator/foreign/MemoryAddress;
    MethodParameters:
      Name  Flags
      addr  

  public static void checkRestrictedAccess(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.lang.String method
         0: .line 83
            getstatic jdk.internal.foreign.Utils.foreignRestrictedAccess:Ljava/lang/String;
            dup
            astore 1
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 4
           -991722469: 1
              3079692: 2
              3641990: 3
             95458899: 4
              default: 11
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 1
            ldc "permit"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 11
      StackMap locals:
      StackMap stack:
         2: aload 1
            ldc "deny"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 11
      StackMap locals:
      StackMap stack:
         3: aload 1
            ldc "warn"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 11
      StackMap locals:
      StackMap stack:
         4: aload 1
            ldc "debug"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 11
         5: .line 84
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.foreign.Utils.foreignRestrictedAccess:Ljava/lang/String;
            aload 0 /* method */
            invokestatic jdk.internal.foreign.Utils.throwIllegalAccessError:(Ljava/lang/String;Ljava/lang/String;)V
            goto 12
         6: .line 85
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "WARNING: Accessing restricted foreign method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
            goto 12
         7: .line 87
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "DEBUG: restricted foreign method: \" + method"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         8: .line 88
            invokestatic java.lang.StackWalker.getInstance:()Ljava/lang/StackWalker;
            aload 2 /* sb */
            invokedynamic accept(Ljava/lang/StringBuilder;)Ljava/util/function/Consumer;
              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;)V
                  jdk/internal/foreign/Utils.lambda$0(Ljava/lang/StringBuilder;Ljava/lang/StackWalker$StackFrame;)V (6)
                  (Ljava/lang/StackWalker$StackFrame;)V
            invokevirtual java.lang.StackWalker.forEach:(Ljava/util/function/Consumer;)V
         9: .line 91
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 92
            goto 12
        end local 2 // java.lang.StringBuilder sb
        11: .line 94
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.foreign.Utils.foreignRestrictedAccess:Ljava/lang/String;
            aload 0 /* method */
            invokestatic jdk.internal.foreign.Utils.throwIllegalAccessError:(Ljava/lang/String;Ljava/lang/String;)V
        12: .line 96
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0  method  Ljava/lang/String;
            8   11     2      sb  Ljava/lang/StringBuilder;
    MethodParameters:
        Name  Flags
      method  

  private static void throwIllegalAccessError(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.String value
        start local 1 // java.lang.String method
         0: .line 99
            new java.lang.IllegalAccessError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Illegal access to restricted foreign method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         1: .line 100
            ldc " ; system property 'foreign.restricted' is set to '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 99
            invokespecial java.lang.IllegalAccessError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String method
        end local 0 // java.lang.String value
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0   value  Ljava/lang/String;
            0    3     1  method  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      value   
      method  

  private static void lambda$0(java.lang.StringBuilder, java.lang.StackWalker$StackFrame);
    descriptor: (Ljava/lang/StringBuilder;Ljava/lang/StackWalker$StackFrame;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.StackWalker$StackFrame f
         0: .line 88
            aload 0
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         1: .line 89
            ldc "\tat "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 90
            aload 1 /* f */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            return
        end local 1 // java.lang.StackWalker$StackFrame f
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     f  Ljava/lang/StackWalker$StackFrame;
}
SourceFile: "Utils.java"
InnerClasses:
  public abstract StackFrame = java.lang.StackWalker$StackFrame of java.lang.StackWalker
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles