class sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask<V, A> implements java.lang.Runnable, sun.nio.ch.Iocp$ResultHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask
  super_class: java.lang.Object
{
  private final java.nio.ByteBuffer[] bufs;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int numBufs;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean scatteringRead;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final sun.nio.ch.PendingFuture<V, A> result;
    descriptor: Lsun/nio/ch/PendingFuture;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lsun/nio/ch/PendingFuture<TV;TA;>;

  private java.nio.ByteBuffer[] shadow;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  final sun.nio.ch.WindowsAsynchronousSocketChannelImpl this$0;
    descriptor: Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  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 393
            ldc Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            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 sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.nio.ByteBuffer[], boolean, sun.nio.ch.PendingFuture<V, A>);
    descriptor: (Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;[Ljava/nio/ByteBuffer;ZLsun/nio/ch/PendingFuture;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
        start local 2 // java.nio.ByteBuffer[] bufs
        start local 3 // boolean scatteringRead
        start local 4 // sun.nio.ch.PendingFuture result
         0: .line 405
            aload 0 /* this */
            aload 1
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
         1: .line 402
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 406
            aload 0 /* this */
            aload 2 /* bufs */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.bufs:[Ljava/nio/ByteBuffer;
         3: .line 407
            aload 0 /* this */
            aload 2 /* bufs */
            arraylength
            bipush 16
            if_icmple 4
            bipush 16
            goto 5
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask sun.nio.ch.WindowsAsynchronousSocketChannelImpl java.nio.ByteBuffer[] int sun.nio.ch.PendingFuture
      StackMap stack: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask
         4: aload 2 /* bufs */
            arraylength
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask sun.nio.ch.WindowsAsynchronousSocketChannelImpl java.nio.ByteBuffer[] int sun.nio.ch.PendingFuture
      StackMap stack: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask int
         5: putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
         6: .line 408
            aload 0 /* this */
            iload 3 /* scatteringRead */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.scatteringRead:Z
         7: .line 409
            aload 0 /* this */
            aload 4 /* result */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
         8: .line 410
            return
        end local 4 // sun.nio.ch.PendingFuture result
        end local 3 // boolean scatteringRead
        end local 2 // java.nio.ByteBuffer[] bufs
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            0    9     2            bufs  [Ljava/nio/ByteBuffer;
            0    9     3  scatteringRead  Z
            0    9     4          result  Lsun/nio/ch/PendingFuture<TV;TA;>;
    Signature: ([Ljava/nio/ByteBuffer;ZLsun/nio/ch/PendingFuture<TV;TA;>;)V
    MethodParameters:
                Name  Flags
      this$0          final
      bufs            
      scatteringRead  
      result          

  void prepareBuffers();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=11, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
         0: .line 417
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            anewarray java.nio.ByteBuffer
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
         1: .line 418
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.readBufferArray:J
            lstore 1 /* address */
        start local 1 // long address
         2: .line 419
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 22
         4: .line 420
      StackMap locals: long int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.bufs:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aaload
            astore 4 /* dst */
        start local 4 // java.nio.ByteBuffer dst
         5: .line 421
            aload 4 /* dst */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 5 /* pos */
        start local 5 // int pos
         6: .line 422
            aload 4 /* dst */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 6 /* lim */
        start local 6 // int lim
         7: .line 423
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.$assertionsDisabled:Z
            ifne 8
            iload 5 /* pos */
            iload 6 /* lim */
            if_icmple 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 424
      StackMap locals: java.nio.ByteBuffer int int
      StackMap stack:
            iload 5 /* pos */
            iload 6 /* lim */
            if_icmpgt 9
            iload 6 /* lim */
            iload 5 /* pos */
            isub
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 7 /* rem */
        start local 7 // int rem
        11: .line 426
            aload 4 /* dst */
            instanceof sun.nio.ch.DirectBuffer
            ifne 16
        12: .line 428
            iload 7 /* rem */
            invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
            astore 10 /* bb */
        start local 10 // java.nio.ByteBuffer bb
        13: .line 429
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aload 10 /* bb */
            aastore
        14: .line 430
            aload 10 /* bb */
            checkcast sun.nio.ch.DirectBuffer
            invokeinterface sun.nio.ch.DirectBuffer.address:()J
            lstore 8 /* a */
        end local 10 // java.nio.ByteBuffer bb
        start local 8 // long a
        15: .line 431
            goto 18
        end local 8 // long a
        16: .line 432
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aload 4 /* dst */
            aastore
        17: .line 433
            aload 4 /* dst */
            checkcast sun.nio.ch.DirectBuffer
            invokeinterface sun.nio.ch.DirectBuffer.address:()J
            iload 5 /* pos */
            i2l
            ladd
            lstore 8 /* a */
        start local 8 // long a
        18: .line 435
      StackMap locals: long
      StackMap stack:
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.unsafe:Lsun/misc/Unsafe;
            lload 1 /* address */
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.OFFSETOF_BUF:I
            i2l
            ladd
            lload 8 /* a */
            invokevirtual sun.misc.Unsafe.putAddress:(JJ)V
        19: .line 436
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.unsafe:Lsun/misc/Unsafe;
            lload 1 /* address */
            lconst_0
            ladd
            iload 7 /* rem */
            invokevirtual sun.misc.Unsafe.putInt:(JI)V
        20: .line 437
            lload 1 /* address */
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.SIZEOF_WSABUF:I
            i2l
            ladd
            lstore 1 /* address */
        end local 8 // long a
        end local 7 // int rem
        end local 6 // int lim
        end local 5 // int pos
        end local 4 // java.nio.ByteBuffer dst
        21: .line 419
            iinc 3 /* i */ 1
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask long int
      StackMap stack:
        22: iload 3 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            if_icmplt 4
        end local 3 // int i
        23: .line 439
            return
        end local 1 // long address
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   24     0     this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            2   24     1  address  J
            3   23     3        i  I
            5   21     4      dst  Ljava/nio/ByteBuffer;
            6   21     5      pos  I
            7   21     6      lim  I
           11   21     7      rem  I
           15   16     8        a  J
           18   21     8        a  J
           13   15    10       bb  Ljava/nio/ByteBuffer;

  void updateBuffers(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
        start local 1 // int bytesRead
         0: .line 446
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 20
         2: .line 447
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            astore 3 /* nextBuffer */
        start local 3 // java.nio.ByteBuffer nextBuffer
         3: .line 448
            aload 3 /* nextBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         4: .line 449
            aload 3 /* nextBuffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 5 /* len */
        start local 5 // int len
         5: .line 450
            iload 1 /* bytesRead */
            iload 5 /* len */
            if_icmplt 12
         6: .line 451
            iload 1 /* bytesRead */
            iload 5 /* len */
            isub
            istore 1 /* bytesRead */
         7: .line 452
            iload 4 /* pos */
            iload 5 /* len */
            iadd
            istore 6 /* newPosition */
        start local 6 // int newPosition
         8: .line 454
            aload 3 /* nextBuffer */
            iload 6 /* newPosition */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         9: .line 455
            goto 19
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask int int java.nio.ByteBuffer int int int
      StackMap stack: java.lang.IllegalArgumentException
        10: pop
        end local 6 // int newPosition
        11: .line 458
            goto 19
        12: .line 459
      StackMap locals:
      StackMap stack:
            iload 1 /* bytesRead */
            ifle 21
        13: .line 460
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.$assertionsDisabled:Z
            ifne 14
            iload 4 /* pos */
            iload 1 /* bytesRead */
            iadd
            i2l
            ldc 2147483647
            lcmp
            iflt 14
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        14: .line 461
      StackMap locals:
      StackMap stack:
            iload 4 /* pos */
            iload 1 /* bytesRead */
            iadd
            istore 6 /* newPosition */
        start local 6 // int newPosition
        15: .line 463
            aload 3 /* nextBuffer */
            iload 6 /* newPosition */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        16: .line 464
            goto 21
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask int int java.nio.ByteBuffer int int int
      StackMap stack: java.lang.IllegalArgumentException
        17: pop
        end local 6 // int newPosition
        18: .line 468
            goto 21
        end local 5 // int len
        end local 4 // int pos
        end local 3 // java.nio.ByteBuffer nextBuffer
        19: .line 446
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask int int
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 2 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            if_icmplt 2
        end local 2 // int i
        21: .line 473
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        22: goto 29
        23: .line 474
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.bufs:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            instanceof sun.nio.ch.DirectBuffer
            ifne 28
        24: .line 475
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        25: .line 477
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.bufs:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        26: .line 478
            goto 28
      StackMap locals:
      StackMap stack: java.nio.BufferOverflowException
        27: pop
        28: .line 473
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 2 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            if_icmplt 23
        end local 2 // int i
        30: .line 483
            return
        end local 1 // int bytesRead
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   31     0         this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            0   31     1    bytesRead  I
            1   21     2            i  I
            3   19     3   nextBuffer  Ljava/nio/ByteBuffer;
            4   19     4          pos  I
            5   19     5          len  I
            8   11     6  newPosition  I
           15   18     6  newPosition  I
           22   30     2            i  I
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.IllegalArgumentException
          15    16      17  Class java.lang.IllegalArgumentException
          25    26      27  Class java.nio.BufferOverflowException
    MethodParameters:
           Name  Flags
      bytesRead  

  void releaseBuffers();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
         0: .line 486
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 5
         2: .line 487
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.bufs:[Ljava/nio/ByteBuffer;
            iload 1 /* i */
            aaload
            instanceof sun.nio.ch.DirectBuffer
            ifne 4
         3: .line 488
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.shadow:[Ljava/nio/ByteBuffer;
            iload 1 /* i */
            aaload
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
         4: .line 486
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 1 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            if_icmplt 2
        end local 1 // int i
         6: .line 491
            return
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            1    6     1     i  I

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
         0: .line 496
            lconst_0
            lstore 1 /* overlapped */
        start local 1 // long overlapped
         1: .line 497
            iconst_0
            istore 3 /* prepared */
        start local 3 // boolean prepared
         2: .line 498
            iconst_0
            istore 4 /* pending */
        start local 4 // boolean pending
         3: .line 501
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.begin:()V
         4: .line 504
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.prepareBuffers:()V
         5: .line 505
            iconst_1
            istore 3 /* prepared */
         6: .line 508
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingIoCache.add:(Lsun/nio/ch/PendingFuture;)J
            lstore 1 /* overlapped */
         7: .line 511
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.handle:J
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.numBufs:I
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.readBufferArray:J
            lload 1 /* overlapped */
            invokestatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.read0:(JIJJ)I
            istore 5 /* n */
        start local 5 // int n
         8: .line 512
            iload 5 /* n */
            bipush -2
            if_icmpne 17
         9: .line 514
            iconst_1
            istore 4 /* pending */
        10: .line 539
            iload 4 /* pending */
            ifne 15
        11: .line 540
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 13
        12: .line 541
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            lload 1 /* overlapped */
            invokevirtual sun.nio.ch.PendingIoCache.remove:(J)Lsun/nio/ch/PendingFuture;
            pop
        13: .line 542
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask long int int int
      StackMap stack:
            iload 3 /* prepared */
            ifeq 15
        14: .line 543
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
        15: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
        16: .line 515
            return
        17: .line 517
      StackMap locals:
      StackMap stack:
            iload 5 /* n */
            iconst_m1
            if_icmpne 24
        18: .line 519
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableReading:()V
        19: .line 520
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.scatteringRead:Z
            ifeq 22
        20: .line 521
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            ldc -1
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;)V
        21: .line 522
            goto 46
        22: .line 523
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;)V
        23: .line 525
            goto 46
        24: .line 526
      StackMap locals:
      StackMap stack:
            new java.lang.InternalError
            dup
            ldc "Read completed immediately"
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // int n
        25: .line 528
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask long int int
      StackMap stack: java.lang.Throwable
            astore 5 /* x */
        start local 5 // java.lang.Throwable x
        26: .line 531
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableReading:()V
        27: .line 532
            aload 5 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 29
        28: .line 533
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 5 /* x */
        29: .line 534
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5 /* x */
            instanceof java.io.IOException
            ifne 31
        30: .line 535
            new java.io.IOException
            dup
            aload 5 /* x */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            astore 5 /* x */
        31: .line 536
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            aload 5 /* x */
            invokevirtual sun.nio.ch.PendingFuture.setFailure:(Ljava/lang/Throwable;)V
        end local 5 // java.lang.Throwable x
        32: .line 539
            iload 4 /* pending */
            ifne 37
        33: .line 540
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 35
        34: .line 541
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            lload 1 /* overlapped */
            invokevirtual sun.nio.ch.PendingIoCache.remove:(J)Lsun/nio/ch/PendingFuture;
            pop
        35: .line 542
      StackMap locals:
      StackMap stack:
            iload 3 /* prepared */
            ifeq 37
        36: .line 543
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
        37: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
            goto 52
        38: .line 537
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        39: .line 539
            iload 4 /* pending */
            ifne 44
        40: .line 540
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 42
        41: .line 541
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            lload 1 /* overlapped */
            invokevirtual sun.nio.ch.PendingIoCache.remove:(J)Lsun/nio/ch/PendingFuture;
            pop
        42: .line 542
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask long int int top java.lang.Throwable
      StackMap stack:
            iload 3 /* prepared */
            ifeq 44
        43: .line 543
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
        44: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
        45: .line 546
            aload 6
            athrow
        46: .line 539
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask long int int
      StackMap stack:
            iload 4 /* pending */
            ifne 51
        47: .line 540
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 49
        48: .line 541
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            lload 1 /* overlapped */
            invokevirtual sun.nio.ch.PendingIoCache.remove:(J)Lsun/nio/ch/PendingFuture;
            pop
        49: .line 542
      StackMap locals:
      StackMap stack:
            iload 3 /* prepared */
            ifeq 51
        50: .line 543
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
        51: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
        52: .line 549
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        53: .line 550
            return
        end local 4 // boolean pending
        end local 3 // boolean prepared
        end local 1 // long overlapped
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   54     0        this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            1   54     1  overlapped  J
            2   54     3    prepared  Z
            3   54     4     pending  Z
            8   25     5           n  I
           26   32     5           x  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3    10      25  Class java.lang.Throwable
          17    25      25  Class java.lang.Throwable
           3    10      38  any
          17    32      38  any

  public void completed(int, boolean);
    descriptor: (IZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
        start local 1 // int bytesTransferred
        start local 2 // boolean canInvokeDirect
         0: .line 558
            iload 1 /* bytesTransferred */
            ifne 3
         1: .line 559
            iconst_m1
            istore 1 /* bytesTransferred */
         2: .line 560
            goto 4
         3: .line 561
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* bytesTransferred */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.updateBuffers:(I)V
         4: .line 565
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
         5: .line 568
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 3
            monitorenter
         6: .line 569
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 9
         7: .line 570
            aload 3
            monitorexit
         8: return
         9: .line 571
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableReading:()V
        10: .line 572
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.scatteringRead:Z
            ifeq 13
        11: .line 573
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            iload 1 /* bytesTransferred */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;)V
        12: .line 574
            goto 14
        13: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            iload 1 /* bytesTransferred */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;)V
        14: .line 568
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 3
            monitorexit
        17: athrow
        18: .line 578
      StackMap locals:
      StackMap stack:
            iload 2 /* canInvokeDirect */
            ifeq 21
        19: .line 579
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Lsun/nio/ch/PendingFuture;)V
        20: .line 580
            goto 22
        21: .line 581
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        22: .line 583
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean canInvokeDirect
        end local 1 // int bytesTransferred
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   23     0              this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            0   23     1  bytesTransferred  I
            0   23     2   canInvokeDirect  Z
      Exception table:
        from    to  target  type
           6     8      16  any
           9    15      16  any
          16    17      16  any
    MethodParameters:
                  Name  Flags
      bytesTransferred  
      canInvokeDirect   

  public void failed(int, java.io.IOException);
    descriptor: (ILjava/io/IOException;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
        start local 1 // int error
        start local 2 // java.io.IOException x
         0: .line 588
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.releaseBuffers:()V
         1: .line 591
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 592
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 2 /* x */
         3: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 3
            monitorenter
         4: .line 595
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 7
         5: .line 596
            aload 3
            monitorexit
         6: return
         7: .line 597
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableReading:()V
         8: .line 598
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            aload 2 /* x */
            invokevirtual sun.nio.ch.PendingFuture.setFailure:(Ljava/lang/Throwable;)V
         9: .line 594
            aload 3
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 600
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        14: .line 601
            return
        end local 2 // java.io.IOException x
        end local 1 // int error
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
            0   15     1  error  I
            0   15     2      x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     6      11  any
           7    10      11  any
          11    12      11  any
    MethodParameters:
       Name  Flags
      error  
      x      

  void timeout();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
         0: .line 608
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 1
            monitorenter
         1: .line 609
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 4
         2: .line 610
            aload 1
            monitorexit
         3: return
         4: .line 613
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            iconst_1
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableReading:(Z)V
         5: .line 614
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            new java.nio.channels.InterruptedByTimeoutException
            dup
            invokespecial java.nio.channels.InterruptedByTimeoutException.<init>:()V
            invokevirtual sun.nio.ch.PendingFuture.setFailure:(Ljava/lang/Throwable;)V
         6: .line 608
            aload 1
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        11: .line 619
            return
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$ReadTask<TV;TA;>;
      Exception table:
        from    to  target  type
           1     3       8  any
           4     7       8  any
           8     9       8  any
}
Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Runnable;Lsun/nio/ch/Iocp$ResultHandler;
SourceFile: "WindowsAsynchronousSocketChannelImpl.java"
NestHost: sun.nio.ch.WindowsAsynchronousSocketChannelImpl
InnerClasses:
  abstract ResultHandler = sun.nio.ch.Iocp$ResultHandler of sun.nio.ch.Iocp
  private ReadTask = sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask of sun.nio.ch.WindowsAsynchronousSocketChannelImpl