class com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream extends java.io.InputStream
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream
  super_class: java.io.InputStream
{
  private final java.nio.channels.SeekableByteChannel channel;
    descriptor: Ljava/nio/channels/SeekableByteChannel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 465
            ldc Lcom/oracle/truffle/polyglot/HostClassLoader;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.nio.channels.SeekableByteChannel);
    descriptor: (Ljava/nio/channels/SeekableByteChannel;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
        start local 1 // java.nio.channels.SeekableByteChannel channel
         0: .line 470
            aload 0 /* this */
            invokespecial java.io.InputStream.<init>:()V
         1: .line 471
            aload 0 /* this */
            aload 1 /* channel */
            putfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.channel:Ljava/nio/channels/SeekableByteChannel;
         2: .line 472
            aload 0 /* this */
            aload 1 /* channel */
            invokeinterface java.nio.channels.SeekableByteChannel.size:()J
            putfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.len:J
         3: .line 473
            return
        end local 1 // java.nio.channels.SeekableByteChannel channel
        end local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$ChannelInputStream;
            0    4     1  channel  Ljava/nio/channels/SeekableByteChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  

  void <init>(java.nio.channels.SeekableByteChannel, long);
    descriptor: (Ljava/nio/channels/SeekableByteChannel;J)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
        start local 1 // java.nio.channels.SeekableByteChannel channel
        start local 2 // long len
         0: .line 475
            aload 0 /* this */
            invokespecial java.io.InputStream.<init>:()V
         1: .line 476
            getstatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.$assertionsDisabled:Z
            ifne 2
            aload 1 /* channel */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 477
      StackMap locals: com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream java.nio.channels.SeekableByteChannel long
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.$assertionsDisabled:Z
            ifne 3
            lload 2 /* len */
            lconst_0
            lcmp
            ifge 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 478
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* channel */
            putfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.channel:Ljava/nio/channels/SeekableByteChannel;
         4: .line 479
            aload 0 /* this */
            aload 1 /* channel */
            invokeinterface java.nio.channels.SeekableByteChannel.position:()J
            lload 2 /* len */
            ladd
            putfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.len:J
         5: .line 480
            return
        end local 2 // long len
        end local 1 // java.nio.channels.SeekableByteChannel channel
        end local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$ChannelInputStream;
            0    6     1  channel  Ljava/nio/channels/SeekableByteChannel;
            0    6     2      len  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      len      

  public int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
        start local 1 // byte[] data
        start local 2 // int offset
        start local 3 // int size
         0: .line 484
            aload 0 /* this */
            invokevirtual com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.available:()I
            istore 4 /* rem */
        start local 4 // int rem
         1: .line 485
            iload 4 /* rem */
            ifne 3
         2: .line 486
            iconst_m1
            ireturn
         3: .line 488
      StackMap locals: int
      StackMap stack:
            iload 3 /* size */
            iload 4 /* rem */
            if_icmpge 4
            iload 3 /* size */
            goto 5
      StackMap locals:
      StackMap stack:
         4: iload 4 /* rem */
      StackMap locals:
      StackMap stack: int
         5: istore 5 /* rlen */
        start local 5 // int rlen
         6: .line 489
            aload 1 /* data */
            iload 2 /* offset */
            iload 5 /* rlen */
            invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
            astore 6 /* buffer */
        start local 6 // java.nio.ByteBuffer buffer
         7: .line 490
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.channel:Ljava/nio/channels/SeekableByteChannel;
            aload 6 /* buffer */
            invokeinterface java.nio.channels.SeekableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            ireturn
        end local 6 // java.nio.ByteBuffer buffer
        end local 5 // int rlen
        end local 4 // int rem
        end local 3 // int size
        end local 2 // int offset
        end local 1 // byte[] data
        end local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$ChannelInputStream;
            0    8     1    data  [B
            0    8     2  offset  I
            0    8     3    size  I
            1    8     4     rem  I
            6    8     5    rlen  I
            7    8     6  buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      data    
      offset  
      size    

  public int read();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
         0: .line 495
            aload 0 /* this */
            invokevirtual com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.available:()I
            ifne 2
         1: .line 496
            iconst_m1
            ireturn
         2: .line 498
      StackMap locals:
      StackMap stack:
            iconst_1
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 1 /* buffer */
        start local 1 // java.nio.ByteBuffer buffer
         3: .line 499
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.channel:Ljava/nio/channels/SeekableByteChannel;
            aload 1 /* buffer */
            invokeinterface java.nio.channels.SeekableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            pop
         4: .line 500
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
         5: .line 501
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.get:()B
            ireturn
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$ChannelInputStream;
            3    6     1  buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException

  public int available();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
         0: .line 507
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.len:J
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.channel:Ljava/nio/channels/SeekableByteChannel;
            invokeinterface java.nio.channels.SeekableByteChannel.position:()J
            lsub
            l2i
            ireturn
        end local 0 // com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$ChannelInputStream;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "HostClassLoader.java"
NestHost: com.oracle.truffle.polyglot.HostClassLoader
InnerClasses:
  private final JarLoader = com.oracle.truffle.polyglot.HostClassLoader$JarLoader of com.oracle.truffle.polyglot.HostClassLoader
  final ZipUtils = com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils of com.oracle.truffle.polyglot.HostClassLoader$JarLoader
  private ChannelInputStream = com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream of com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils