public final class jdk.internal.foreign.MemorySegmentImpl implements jdk.incubator.foreign.MemorySegment, jdk.internal.access.foreign.MemorySegmentProxy
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.internal.foreign.MemorySegmentImpl
  super_class: java.lang.Object
{
  private static final jdk.internal.misc.Unsafe UNSAFE;
    descriptor: Ljdk/internal/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int BYTE_ARR_BASE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  final long length;
    descriptor: J
    flags: (0x0010) ACC_FINAL

  final int mask;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  final long min;
    descriptor: J
    flags: (0x0010) ACC_FINAL

  final java.lang.Object base;
    descriptor: Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL

  final java.lang.Thread owner;
    descriptor: Ljava/lang/Thread;
    flags: (0x0010) ACC_FINAL

  final jdk.internal.foreign.MemoryScope scope;
    descriptor: Ljdk/internal/foreign/MemoryScope;
    flags: (0x0010) ACC_FINAL

  static final int READ_ONLY;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final long NONCE;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 50
            invokestatic jdk.internal.misc.Unsafe.getUnsafe:()Ljdk/internal/misc/Unsafe;
            putstatic jdk.internal.foreign.MemorySegmentImpl.UNSAFE:Ljdk/internal/misc/Unsafe;
         1: .line 51
            getstatic jdk.internal.foreign.MemorySegmentImpl.UNSAFE:Ljdk/internal/misc/Unsafe;
            ldc [B
            invokevirtual jdk.internal.misc.Unsafe.arrayBaseOffset:(Ljava/lang/Class;)I
            putstatic jdk.internal.foreign.MemorySegmentImpl.BYTE_ARR_BASE:I
         2: .line 61
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            invokevirtual java.util.Random.nextLong:()J
            putstatic jdk.internal.foreign.MemorySegmentImpl.NONCE:J
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(long, java.lang.Object, long, int, java.lang.Thread, jdk.internal.foreign.MemoryScope);
    descriptor: (JLjava/lang/Object;JILjava/lang/Thread;Ljdk/internal/foreign/MemoryScope;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=9, args_size=7
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // long min
        start local 3 // java.lang.Object base
        start local 4 // long length
        start local 6 // int mask
        start local 7 // java.lang.Thread owner
        start local 8 // jdk.internal.foreign.MemoryScope scope
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 64
            aload 0 /* this */
            lload 4 /* length */
            putfield jdk.internal.foreign.MemorySegmentImpl.length:J
         2: .line 65
            aload 0 /* this */
            iload 6 /* mask */
            putfield jdk.internal.foreign.MemorySegmentImpl.mask:I
         3: .line 66
            aload 0 /* this */
            lload 1 /* min */
            putfield jdk.internal.foreign.MemorySegmentImpl.min:J
         4: .line 67
            aload 0 /* this */
            aload 3 /* base */
            putfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
         5: .line 68
            aload 0 /* this */
            aload 7 /* owner */
            putfield jdk.internal.foreign.MemorySegmentImpl.owner:Ljava/lang/Thread;
         6: .line 69
            aload 0 /* this */
            aload 8 /* scope */
            putfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
         7: .line 70
            return
        end local 8 // jdk.internal.foreign.MemoryScope scope
        end local 7 // java.lang.Thread owner
        end local 6 // int mask
        end local 4 // long length
        end local 3 // java.lang.Object base
        end local 1 // long min
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    8     1     min  J
            0    8     3    base  Ljava/lang/Object;
            0    8     4  length  J
            0    8     6    mask  I
            0    8     7   owner  Ljava/lang/Thread;
            0    8     8   scope  Ljdk/internal/foreign/MemoryScope;
    MethodParameters:
        Name  Flags
      min     
      base    
      length  
      mask    
      owner   
      scope   

  public final jdk.internal.foreign.MemorySegmentImpl asSlice(long, long);
    descriptor: (JJ)Ljdk/internal/foreign/MemorySegmentImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=10, locals=5, args_size=3
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // long offset
        start local 3 // long newSize
         0: .line 76
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 77
            aload 0 /* this */
            lload 1 /* offset */
            lload 3 /* newSize */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkBounds:(JJ)V
         2: .line 78
            new jdk.internal.foreign.MemorySegmentImpl
            dup
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            lload 1 /* offset */
            ladd
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
            lload 3 /* newSize */
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.mask:I
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.owner:Ljava/lang/Thread;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokespecial jdk.internal.foreign.MemorySegmentImpl.<init>:(JLjava/lang/Object;JILjava/lang/Thread;Ljdk/internal/foreign/MemoryScope;)V
            areturn
        end local 3 // long newSize
        end local 1 // long offset
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    3     1   offset  J
            0    3     3  newSize  J
    MethodParameters:
         Name  Flags
      offset   
      newSize  

  public jdk.incubator.foreign.MemorySegment acquire();
    descriptor: ()Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 83
            new jdk.internal.foreign.MemorySegmentImpl
            dup
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.mask:I
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokevirtual jdk.internal.foreign.MemoryScope.acquire:()Ljdk/internal/foreign/MemoryScope;
            invokespecial jdk.internal.foreign.MemorySegmentImpl.<init>:(JLjava/lang/Object;JILjava/lang/Thread;Ljdk/internal/foreign/MemoryScope;)V
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final jdk.incubator.foreign.MemoryAddress baseAddress();
    descriptor: ()Ljdk/incubator/foreign/MemoryAddress;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 88
            new jdk.internal.foreign.MemoryAddressImpl
            dup
            aload 0 /* this */
            lconst_0
            invokespecial jdk.internal.foreign.MemoryAddressImpl.<init>:(Ljdk/internal/foreign/MemorySegmentImpl;J)V
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final long byteSize();
    descriptor: ()J
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 93
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            lreturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final jdk.internal.foreign.MemorySegmentImpl asReadOnly();
    descriptor: ()Ljdk/internal/foreign/MemorySegmentImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=10, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 98
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 99
            new jdk.internal.foreign.MemorySegmentImpl
            dup
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.mask:I
            iconst_1
            ior
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.owner:Ljava/lang/Thread;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokespecial jdk.internal.foreign.MemorySegmentImpl.<init>:(JLjava/lang/Object;JILjava/lang/Thread;Ljdk/internal/foreign/MemoryScope;)V
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final boolean isAlive();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 104
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokevirtual jdk.internal.foreign.MemoryScope.isAliveThreadSafe:()Z
            ireturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final boolean isReadOnly();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 109
            aload 0 /* this */
            iconst_1
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.isSet:(I)Z
            ireturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public java.lang.Thread ownerThread();
    descriptor: ()Ljava/lang/Thread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 114
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.owner:Ljava/lang/Thread;
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public final void close();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 119
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 120
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokevirtual jdk.internal.foreign.MemoryScope.close:()V
         2: .line 121
            return
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public java.nio.ByteBuffer asByteBuffer();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 125
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 126
            aload 0 /* this */
            ldc "ByteBuffer"
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkIntSize:(Ljava/lang/String;)V
         2: .line 127
            invokestatic jdk.internal.access.SharedSecrets.getJavaNioAccess:()Ljdk/internal/access/JavaNioAccess;
            astore 1 /* nioAccess */
        start local 1 // jdk.internal.access.JavaNioAccess nioAccess
         3: .line 129
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.base:()Ljava/lang/Object;
            ifnull 8
         4: .line 130
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.base:()Ljava/lang/Object;
            instanceof byte[]
            ifne 6
         5: .line 131
            new java.lang.UnsupportedOperationException
            dup
            ldc "Not an address to an heap-allocated byte array"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 133
      StackMap locals: jdk.internal.access.JavaNioAccess
      StackMap stack:
            aload 1 /* nioAccess */
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.base:()Ljava/lang/Object;
            checkcast byte[]
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            l2i
            getstatic jdk.internal.foreign.MemorySegmentImpl.BYTE_ARR_BASE:I
            isub
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            l2i
            aload 0 /* this */
            invokeinterface jdk.internal.access.JavaNioAccess.newHeapByteBuffer:([BIILjdk/internal/access/foreign/MemorySegmentProxy;)Ljava/nio/ByteBuffer;
            astore 2 /* _bb */
        start local 2 // java.nio.ByteBuffer _bb
         7: .line 134
            goto 9
        end local 2 // java.nio.ByteBuffer _bb
         8: .line 135
      StackMap locals:
      StackMap stack:
            aload 1 /* nioAccess */
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            l2i
            aconst_null
            aload 0 /* this */
            invokeinterface jdk.internal.access.JavaNioAccess.newDirectByteBuffer:(JILjava/lang/Object;Ljdk/internal/access/foreign/MemorySegmentProxy;)Ljava/nio/ByteBuffer;
            astore 2 /* _bb */
        start local 2 // java.nio.ByteBuffer _bb
         9: .line 137
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.isReadOnly:()Z
            ifeq 11
        10: .line 139
            aload 2 /* _bb */
            invokevirtual java.nio.ByteBuffer.asReadOnlyBuffer:()Ljava/nio/ByteBuffer;
            astore 2 /* _bb */
        11: .line 141
      StackMap locals:
      StackMap stack:
            aload 2 /* _bb */
            areturn
        end local 2 // java.nio.ByteBuffer _bb
        end local 1 // jdk.internal.access.JavaNioAccess nioAccess
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Ljdk/internal/foreign/MemorySegmentImpl;
            3   12     1  nioAccess  Ljdk/internal/access/JavaNioAccess;
            7    8     2        _bb  Ljava/nio/ByteBuffer;
            9   12     2        _bb  Ljava/nio/ByteBuffer;

  public byte[] toByteArray();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 146
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 147
            aload 0 /* this */
            ldc "byte[]"
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkIntSize:(Ljava/lang/String;)V
         2: .line 148
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            l2i
            newarray 8
            astore 1 /* arr */
        start local 1 // byte[] arr
         3: .line 149
            aload 1 /* arr */
            invokestatic jdk.incubator.foreign.MemorySegment.ofArray:([B)Ljdk/incubator/foreign/MemorySegment;
            astore 2 /* arrSegment */
        start local 2 // jdk.incubator.foreign.MemorySegment arrSegment
         4: .line 150
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.baseAddress:()Ljdk/incubator/foreign/MemoryAddress;
            aload 2 /* arrSegment */
            invokeinterface jdk.incubator.foreign.MemorySegment.baseAddress:()Ljdk/incubator/foreign/MemoryAddress;
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            invokestatic jdk.incubator.foreign.MemoryAddress.copy:(Ljdk/incubator/foreign/MemoryAddress;Ljdk/incubator/foreign/MemoryAddress;J)V
         5: .line 151
            aload 1 /* arr */
            areturn
        end local 2 // jdk.incubator.foreign.MemorySegment arrSegment
        end local 1 // byte[] arr
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Ljdk/internal/foreign/MemorySegmentImpl;
            3    6     1         arr  [B
            4    6     2  arrSegment  Ljdk/incubator/foreign/MemorySegment;

  public final void checkValidState();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 158
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.owner:Ljava/lang/Thread;
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            if_acmpeq 2
         1: .line 159
            new java.lang.IllegalStateException
            dup
            ldc "Attempt to access segment outside owning thread"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.scope:Ljdk/internal/foreign/MemoryScope;
            invokevirtual jdk.internal.foreign.MemoryScope.checkAliveConfined:()V
         3: .line 162
            return
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 168
            new java.lang.StringBuilder
            dup
            ldc "MemorySegment{ id=0x"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.id:()I
            i2l
            invokestatic java.lang.Long.toHexString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " limit: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.byteSize:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " }"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  void checkRange(long, long, boolean);
    descriptor: (JJZ)V
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // long offset
        start local 3 // long length
        start local 5 // boolean writeAccess
         0: .line 174
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkValidState:()V
         1: .line 175
            aload 0 /* this */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.isReadOnly:()Z
            ifeq 3
            iload 5 /* writeAccess */
            ifeq 3
         2: .line 176
            new java.lang.UnsupportedOperationException
            dup
            ldc "Cannot write to read-only memory segment"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* offset */
            lload 3 /* length */
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.checkBounds:(JJ)V
         4: .line 179
            return
        end local 5 // boolean writeAccess
        end local 3 // long length
        end local 1 // long offset
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    5     1       offset  J
            0    5     3       length  J
            0    5     5  writeAccess  Z
    MethodParameters:
             Name  Flags
      offset       
      length       
      writeAccess  

  java.lang.Object base();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 182
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
            areturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  private boolean isSet(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // int mask
         0: .line 186
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.mask:I
            iload 1 /* mask */
            iand
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int mask
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    2     1  mask  I
    MethodParameters:
      Name  Flags
      mask  

  private void checkIntSize(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=2, args_size=2
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // java.lang.String typeName
         0: .line 190
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            ldc 2147483639
            lcmp
            ifle 2
         1: .line 191
            new java.lang.UnsupportedOperationException
            dup
            ldc "Segment is too large to wrap as %s. Size: %d"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* typeName */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 193
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String typeName
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    3     1  typeName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      typeName  

  private void checkBounds(long, long);
    descriptor: (JJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
        start local 1 // long offset
        start local 3 // long length
         0: .line 196
            lload 3 /* length */
            lconst_0
            lcmp
            iflt 3
         1: .line 197
            lload 1 /* offset */
            lconst_0
            lcmp
            iflt 3
         2: .line 198
            lload 1 /* offset */
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.length:J
            lload 3 /* length */
            lsub
            lcmp
            ifle 6
         3: .line 199
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            ldc "Out of bound access on segment %s; new offset = %d; new length = %d"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 200
            aload 0 /* this */
            aastore
            dup
            iconst_1
            lload 1 /* offset */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
            lload 3 /* length */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
         5: .line 199
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 202
      StackMap locals:
      StackMap stack:
            return
        end local 3 // long length
        end local 1 // long offset
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljdk/internal/foreign/MemorySegmentImpl;
            0    7     1  offset  J
            0    7     3  length  J
    MethodParameters:
        Name  Flags
      offset  
      length  

  private int id();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.MemorySegmentImpl this
         0: .line 206
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.base:Ljava/lang/Object;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.foreign.MemorySegmentImpl.min:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
            getstatic jdk.internal.foreign.MemorySegmentImpl.NONCE:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.util.Objects.hash:([Ljava/lang/Object;)I
            invokestatic java.lang.Math.abs:(I)I
            ireturn
        end local 0 // jdk.internal.foreign.MemorySegmentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/MemorySegmentImpl;

  public jdk.incubator.foreign.MemorySegment asReadOnly();
    descriptor: ()Ljdk/incubator/foreign/MemorySegment;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.asReadOnly:()Ljdk/internal/foreign/MemorySegmentImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public jdk.incubator.foreign.MemorySegment asSlice(long, long);
    descriptor: (JJ)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=5, locals=5, args_size=3
         0: .line 1
            aload 0
            lload 1
            lload 3
            invokevirtual jdk.internal.foreign.MemorySegmentImpl.asSlice:(JJ)Ljdk/internal/foreign/MemorySegmentImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "MemorySegmentImpl.java"