public interface jdk.incubator.foreign.CLinker
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: jdk.incubator.foreign.CLinker
  super_class: java.lang.Object
{
  public static final jdk.incubator.foreign.ValueLayout C_CHAR;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_SHORT;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_INT;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_LONG;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_LONG_LONG;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_FLOAT;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_DOUBLE;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.ValueLayout C_POINTER;
    descriptor: Ljdk/incubator/foreign/ValueLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.incubator.foreign.MemoryLayout C_VA_LIST;
    descriptor: Ljdk/incubator/foreign/MemoryLayout;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 160
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_CHAR:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_CHAR:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_CHAR:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_CHAR:Ljdk/incubator/foreign/ValueLayout;
         1: .line 164
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_SHORT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_SHORT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_SHORT:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_SHORT:Ljdk/incubator/foreign/ValueLayout;
         2: .line 168
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_INT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_INT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_INT:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_INT:Ljdk/incubator/foreign/ValueLayout;
         3: .line 172
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_LONG:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_LONG:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_LONG:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_LONG:Ljdk/incubator/foreign/ValueLayout;
         4: .line 176
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_LONG_LONG:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_LONG_LONG:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_LONG_LONG:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_LONG_LONG:Ljdk/incubator/foreign/ValueLayout;
         5: .line 180
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_FLOAT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_FLOAT:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_FLOAT:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_FLOAT:Ljdk/incubator/foreign/ValueLayout;
         6: .line 184
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_DOUBLE:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_DOUBLE:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_DOUBLE:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_DOUBLE:Ljdk/incubator/foreign/ValueLayout;
         7: .line 188
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            checkcast jdk.incubator.foreign.ValueLayout
            putstatic jdk.incubator.foreign.CLinker.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
         8: .line 192
            getstatic jdk.internal.foreign.PlatformLayouts$SysV.C_VA_LIST:Ljdk/incubator/foreign/MemoryLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$Win64.C_VA_LIST:Ljdk/incubator/foreign/MemoryLayout;
            getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_VA_LIST:Ljdk/incubator/foreign/MemoryLayout;
            invokestatic jdk.internal.foreign.PlatformLayouts.pick:(Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            putstatic jdk.incubator.foreign.CLinker.C_VA_LIST:Ljdk/incubator/foreign/MemoryLayout;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static jdk.incubator.foreign.CLinker getInstance();
    descriptor: ()Ljdk/incubator/foreign/CLinker;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 123
            ldc "CLinker.getInstance"
            invokestatic jdk.internal.foreign.Utils.checkRestrictedAccess:(Ljava/lang/String;)V
         1: .line 124
            invokestatic jdk.internal.foreign.abi.SharedUtils.getSystemLinker:()Ljdk/incubator/foreign/CLinker;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public abstract java.lang.invoke.MethodHandle downcallHandle(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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      symbol    
      type      
      function  

  public abstract jdk.incubator.foreign.MemorySegment upcallStub(java.lang.invoke.MethodHandle, jdk.incubator.foreign.FunctionDescriptor);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljdk/incubator/foreign/FunctionDescriptor;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      target    
      function  

  public static <T extends jdk.incubator.foreign.MemoryLayout> T asVarArg();
    descriptor: (Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryLayout layout
         0: .line 203
            aload 0 /* layout */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 204
            aload 0 /* layout */
            invokestatic jdk.internal.foreign.PlatformLayouts.asVarArg:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/incubator/foreign/MemoryLayout;
            areturn
        end local 0 // jdk.incubator.foreign.MemoryLayout layout
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  layout  TT;
    Signature: <T::Ljdk/incubator/foreign/MemoryLayout;>(TT;)TT;
    MethodParameters:
        Name  Flags
      layout  

  public static jdk.incubator.foreign.MemorySegment toCString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String str
         0: .line 220
            aload 0 /* str */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 221
            aload 0 /* str */
            invokevirtual java.lang.String.getBytes:()[B
            invokestatic jdk.incubator.foreign.CLinker.toCString:([B)Ljdk/incubator/foreign/MemorySegment;
            areturn
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   str  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   

  public static jdk.incubator.foreign.MemorySegment toCString(java.lang.String, java.nio.charset.Charset);
    descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String str
        start local 1 // java.nio.charset.Charset charset
         0: .line 238
            aload 0 /* str */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 239
            aload 1 /* charset */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 240
            aload 0 /* str */
            aload 1 /* charset */
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokestatic jdk.incubator.foreign.CLinker.toCString:([B)Ljdk/incubator/foreign/MemorySegment;
            areturn
        end local 1 // java.nio.charset.Charset charset
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0      str  Ljava/lang/String;
            0    3     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      str      
      charset  

  public static jdk.incubator.foreign.MemorySegment toCString(java.lang.String, jdk.incubator.foreign.NativeScope);
    descriptor: (Ljava/lang/String;Ljdk/incubator/foreign/NativeScope;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String str
        start local 1 // jdk.incubator.foreign.NativeScope scope
         0: .line 257
            aload 0 /* str */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 258
            aload 1 /* scope */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 259
            aload 0 /* str */
            invokevirtual java.lang.String.getBytes:()[B
            aload 1 /* scope */
            invokestatic jdk.incubator.foreign.CLinker.toCString:([BLjdk/incubator/foreign/NativeScope;)Ljdk/incubator/foreign/MemorySegment;
            areturn
        end local 1 // jdk.incubator.foreign.NativeScope scope
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0    str  Ljava/lang/String;
            0    3     1  scope  Ljdk/incubator/foreign/NativeScope;
    MethodParameters:
       Name  Flags
      str    
      scope  

  public static jdk.incubator.foreign.MemorySegment toCString(java.lang.String, java.nio.charset.Charset, jdk.incubator.foreign.NativeScope);
    descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;Ljdk/incubator/foreign/NativeScope;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.lang.String str
        start local 1 // java.nio.charset.Charset charset
        start local 2 // jdk.incubator.foreign.NativeScope scope
         0: .line 277
            aload 0 /* str */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 278
            aload 1 /* charset */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 279
            aload 2 /* scope */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 280
            aload 0 /* str */
            aload 1 /* charset */
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 2 /* scope */
            invokestatic jdk.incubator.foreign.CLinker.toCString:([BLjdk/incubator/foreign/NativeScope;)Ljdk/incubator/foreign/MemorySegment;
            areturn
        end local 2 // jdk.incubator.foreign.NativeScope scope
        end local 1 // java.nio.charset.Charset charset
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0      str  Ljava/lang/String;
            0    4     1  charset  Ljava/nio/charset/Charset;
            0    4     2    scope  Ljdk/incubator/foreign/NativeScope;
    MethodParameters:
         Name  Flags
      str      
      charset  
      scope    

  public static java.lang.String toJavaStringRestricted(jdk.incubator.foreign.MemoryAddress);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryAddress addr
         0: .line 299
            ldc "CLinker.toJavaStringRestricted"
            invokestatic jdk.internal.foreign.Utils.checkRestrictedAccess:(Ljava/lang/String;)V
         1: .line 300
            aload 0 /* addr */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 301
            getstatic jdk.internal.foreign.NativeMemorySegmentImpl.EVERYTHING:Ljdk/incubator/foreign/MemorySegment;
            aload 0 /* addr */
            invokeinterface jdk.incubator.foreign.MemoryAddress.toRawLongValue:()J
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokestatic jdk.internal.foreign.abi.SharedUtils.toJavaStringInternal:(Ljdk/incubator/foreign/MemorySegment;JLjava/nio/charset/Charset;)Ljava/lang/String;
            areturn
        end local 0 // jdk.incubator.foreign.MemoryAddress addr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  addr  Ljdk/incubator/foreign/MemoryAddress;
    MethodParameters:
      Name  Flags
      addr  

  public static java.lang.String toJavaStringRestricted(jdk.incubator.foreign.MemoryAddress, java.nio.charset.Charset);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;Ljava/nio/charset/Charset;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.incubator.foreign.MemoryAddress addr
        start local 1 // java.nio.charset.Charset charset
         0: .line 321
            ldc "CLinker.toJavaStringRestricted"
            invokestatic jdk.internal.foreign.Utils.checkRestrictedAccess:(Ljava/lang/String;)V
         1: .line 322
            aload 0 /* addr */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 323
            aload 1 /* charset */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 324
            getstatic jdk.internal.foreign.NativeMemorySegmentImpl.EVERYTHING:Ljdk/incubator/foreign/MemorySegment;
            aload 0 /* addr */
            invokeinterface jdk.incubator.foreign.MemoryAddress.toRawLongValue:()J
            aload 1 /* charset */
            invokestatic jdk.internal.foreign.abi.SharedUtils.toJavaStringInternal:(Ljdk/incubator/foreign/MemorySegment;JLjava/nio/charset/Charset;)Ljava/lang/String;
            areturn
        end local 1 // java.nio.charset.Charset charset
        end local 0 // jdk.incubator.foreign.MemoryAddress addr
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     addr  Ljdk/incubator/foreign/MemoryAddress;
            0    4     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      addr     
      charset  

  public static java.lang.String toJavaString(jdk.incubator.foreign.MemorySegment);
    descriptor: (Ljdk/incubator/foreign/MemorySegment;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemorySegment addr
         0: .line 341
            aload 0 /* addr */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 342
            aload 0 /* addr */
            lconst_0
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokestatic jdk.internal.foreign.abi.SharedUtils.toJavaStringInternal:(Ljdk/incubator/foreign/MemorySegment;JLjava/nio/charset/Charset;)Ljava/lang/String;
            areturn
        end local 0 // jdk.incubator.foreign.MemorySegment addr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  addr  Ljdk/incubator/foreign/MemorySegment;
    MethodParameters:
      Name  Flags
      addr  

  public static java.lang.String toJavaString(jdk.incubator.foreign.MemorySegment, java.nio.charset.Charset);
    descriptor: (Ljdk/incubator/foreign/MemorySegment;Ljava/nio/charset/Charset;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.incubator.foreign.MemorySegment addr
        start local 1 // java.nio.charset.Charset charset
         0: .line 360
            aload 0 /* addr */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 361
            aload 1 /* charset */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 362
            aload 0 /* addr */
            lconst_0
            aload 1 /* charset */
            invokestatic jdk.internal.foreign.abi.SharedUtils.toJavaStringInternal:(Ljdk/incubator/foreign/MemorySegment;JLjava/nio/charset/Charset;)Ljava/lang/String;
            areturn
        end local 1 // java.nio.charset.Charset charset
        end local 0 // jdk.incubator.foreign.MemorySegment addr
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     addr  Ljdk/incubator/foreign/MemorySegment;
            0    3     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      addr     
      charset  

  private static void copy(jdk.incubator.foreign.MemorySegment, byte[]);
    descriptor: (Ljdk/incubator/foreign/MemorySegment;[B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // jdk.incubator.foreign.MemorySegment addr
        start local 1 // byte[] bytes
         0: .line 366
            aload 1 /* bytes */
            invokestatic jdk.incubator.foreign.MemorySegment.ofArray:([B)Ljdk/incubator/foreign/MemorySegment;
            astore 2 /* heapSegment */
        start local 2 // jdk.incubator.foreign.MemorySegment heapSegment
         1: .line 367
            aload 0 /* addr */
            aload 2 /* heapSegment */
            invokeinterface jdk.incubator.foreign.MemorySegment.copyFrom:(Ljdk/incubator/foreign/MemorySegment;)V
         2: .line 368
            aload 0 /* addr */
            aload 1 /* bytes */
            arraylength
            i2l
            iconst_0
            invokestatic jdk.incubator.foreign.MemoryAccess.setByteAtOffset:(Ljdk/incubator/foreign/MemorySegment;JB)V
         3: .line 369
            return
        end local 2 // jdk.incubator.foreign.MemorySegment heapSegment
        end local 1 // byte[] bytes
        end local 0 // jdk.incubator.foreign.MemorySegment addr
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         addr  Ljdk/incubator/foreign/MemorySegment;
            0    4     1        bytes  [B
            1    4     2  heapSegment  Ljdk/incubator/foreign/MemorySegment;
    MethodParameters:
       Name  Flags
      addr   
      bytes  

  private static jdk.incubator.foreign.MemorySegment toCString(byte[]);
    descriptor: ([B)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // byte[] bytes
         0: .line 372
            aload 0 /* bytes */
            arraylength
            iconst_1
            iadd
            i2l
            lconst_1
            invokestatic jdk.incubator.foreign.MemorySegment.allocateNative:(JJ)Ljdk/incubator/foreign/MemorySegment;
            astore 1 /* segment */
        start local 1 // jdk.incubator.foreign.MemorySegment segment
         1: .line 373
            aload 1 /* segment */
            aload 0 /* bytes */
            invokestatic jdk.incubator.foreign.CLinker.copy:(Ljdk/incubator/foreign/MemorySegment;[B)V
         2: .line 374
            aload 1 /* segment */
            areturn
        end local 1 // jdk.incubator.foreign.MemorySegment segment
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0    bytes  [B
            1    3     1  segment  Ljdk/incubator/foreign/MemorySegment;
    MethodParameters:
       Name  Flags
      bytes  

  private static jdk.incubator.foreign.MemorySegment toCString(byte[], jdk.incubator.foreign.NativeScope);
    descriptor: ([BLjdk/incubator/foreign/NativeScope;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // byte[] bytes
        start local 1 // jdk.incubator.foreign.NativeScope scope
         0: .line 378
            aload 1 /* scope */
            aload 0 /* bytes */
            arraylength
            iconst_1
            iadd
            i2l
            lconst_1
            invokeinterface jdk.incubator.foreign.NativeScope.allocate:(JJ)Ljdk/incubator/foreign/MemorySegment;
            astore 2 /* addr */
        start local 2 // jdk.incubator.foreign.MemorySegment addr
         1: .line 379
            aload 2 /* addr */
            aload 0 /* bytes */
            invokestatic jdk.incubator.foreign.CLinker.copy:(Ljdk/incubator/foreign/MemorySegment;[B)V
         2: .line 380
            aload 2 /* addr */
            areturn
        end local 2 // jdk.incubator.foreign.MemorySegment addr
        end local 1 // jdk.incubator.foreign.NativeScope scope
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  bytes  [B
            0    3     1  scope  Ljdk/incubator/foreign/NativeScope;
            1    3     2   addr  Ljdk/incubator/foreign/MemorySegment;
    MethodParameters:
       Name  Flags
      bytes  
      scope  

  public static jdk.incubator.foreign.MemoryAddress allocateMemoryRestricted(long);
    descriptor: (J)Ljdk/incubator/foreign/MemoryAddress;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // long size
         0: .line 395
            ldc "CLinker.allocateMemoryRestricted"
            invokestatic jdk.internal.foreign.Utils.checkRestrictedAccess:(Ljava/lang/String;)V
         1: .line 396
            lload 0 /* size */
            invokestatic jdk.internal.foreign.abi.SharedUtils.allocateMemoryInternal:(J)Ljdk/incubator/foreign/MemoryAddress;
            astore 2 /* addr */
        start local 2 // jdk.incubator.foreign.MemoryAddress addr
         2: .line 397
            aload 2 /* addr */
            getstatic jdk.incubator.foreign.MemoryAddress.NULL:Ljdk/incubator/foreign/MemoryAddress;
            invokeinterface jdk.incubator.foreign.MemoryAddress.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 398
            new java.lang.OutOfMemoryError
            dup
            invokespecial java.lang.OutOfMemoryError.<init>:()V
            athrow
         4: .line 400
      StackMap locals: jdk.incubator.foreign.MemoryAddress
      StackMap stack:
            aload 2 /* addr */
            areturn
        end local 2 // jdk.incubator.foreign.MemoryAddress addr
        end local 0 // long size
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  size  J
            2    5     2  addr  Ljdk/incubator/foreign/MemoryAddress;
    MethodParameters:
      Name  Flags
      size  

  public static void freeMemoryRestricted(jdk.incubator.foreign.MemoryAddress);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryAddress addr
         0: .line 414
            ldc "CLinker.freeMemoryRestricted"
            invokestatic jdk.internal.foreign.Utils.checkRestrictedAccess:(Ljava/lang/String;)V
         1: .line 415
            aload 0 /* addr */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 416
            aload 0 /* addr */
            invokestatic jdk.internal.foreign.abi.SharedUtils.freeMemoryInternal:(Ljdk/incubator/foreign/MemoryAddress;)V
         3: .line 417
            return
        end local 0 // jdk.incubator.foreign.MemoryAddress addr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  addr  Ljdk/incubator/foreign/MemoryAddress;
    MethodParameters:
      Name  Flags
      addr  
}
SourceFile: "CLinker.java"
NestMembers:
  jdk.incubator.foreign.CLinker$TypeKind  jdk.incubator.foreign.CLinker$VaList  jdk.incubator.foreign.CLinker$VaList$Builder
InnerClasses:
  public final TypeKind = jdk.incubator.foreign.CLinker$TypeKind of jdk.incubator.foreign.CLinker
  public abstract VaList = jdk.incubator.foreign.CLinker$VaList of jdk.incubator.foreign.CLinker
  public final AArch64 = jdk.internal.foreign.PlatformLayouts$AArch64 of jdk.internal.foreign.PlatformLayouts
  public final SysV = jdk.internal.foreign.PlatformLayouts$SysV of jdk.internal.foreign.PlatformLayouts
  public final Win64 = jdk.internal.foreign.PlatformLayouts$Win64 of jdk.internal.foreign.PlatformLayouts