class sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask<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$WriteTask
  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 gatheringWrite;
    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 666
            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$WriteTask.$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$WriteTask this
        start local 2 // java.nio.ByteBuffer[] bufs
        start local 3 // boolean gatheringWrite
        start local 4 // sun.nio.ch.PendingFuture result
         0: .line 678
            aload 0 /* this */
            aload 1
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
         1: .line 675
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 679
            aload 0 /* this */
            aload 2 /* bufs */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.bufs:[Ljava/nio/ByteBuffer;
         3: .line 680
            aload 0 /* this */
            aload 2 /* bufs */
            arraylength
            bipush 16
            if_icmple 4
            bipush 16
            goto 5
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask sun.nio.ch.WindowsAsynchronousSocketChannelImpl java.nio.ByteBuffer[] int sun.nio.ch.PendingFuture
      StackMap stack: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask
         4: aload 2 /* bufs */
            arraylength
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask sun.nio.ch.WindowsAsynchronousSocketChannelImpl java.nio.ByteBuffer[] int sun.nio.ch.PendingFuture
      StackMap stack: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask int
         5: putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.numBufs:I
         6: .line 681
            aload 0 /* this */
            iload 3 /* gatheringWrite */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.gatheringWrite:Z
         7: .line 682
            aload 0 /* this */
            aload 4 /* result */
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
         8: .line 683
            return
        end local 4 // sun.nio.ch.PendingFuture result
        end local 3 // boolean gatheringWrite
        end local 2 // java.nio.ByteBuffer[] bufs
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<TV;TA;>;
            0    9     2            bufs  [Ljava/nio/ByteBuffer;
            0    9     3  gatheringWrite  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            
      gatheringWrite  
      result          

  void prepareBuffers();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=11, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
         0: .line 690
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.numBufs:I
            anewarray java.nio.ByteBuffer
            putfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.shadow:[Ljava/nio/ByteBuffer;
         1: .line 691
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.writeBufferArray:J
            lstore 1 /* address */
        start local 1 // long address
         2: .line 692
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 25
         4: .line 693
      StackMap locals: long int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.bufs:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aaload
            astore 4 /* src */
        start local 4 // java.nio.ByteBuffer src
         5: .line 694
            aload 4 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 5 /* pos */
        start local 5 // int pos
         6: .line 695
            aload 4 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 6 /* lim */
        start local 6 // int lim
         7: .line 696
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.$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 697
      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 699
            aload 4 /* src */
            instanceof sun.nio.ch.DirectBuffer
            ifne 19
        12: .line 701
            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 702
            aload 10 /* bb */
            aload 4 /* src */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        14: .line 703
            aload 10 /* bb */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        15: .line 704
            aload 4 /* src */
            iload 5 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        16: .line 705
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.shadow:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aload 10 /* bb */
            aastore
        17: .line 706
            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
        18: .line 707
            goto 21
        end local 8 // long a
        19: .line 708
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.shadow:[Ljava/nio/ByteBuffer;
            iload 3 /* i */
            aload 4 /* src */
            aastore
        20: .line 709
            aload 4 /* src */
            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
        21: .line 711
      StackMap locals: long
      StackMap stack:
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.unsafe:Ljdk/internal/misc/Unsafe;
            lload 1 /* address */
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.OFFSETOF_BUF:I
            i2l
            ladd
            lload 8 /* a */
            invokevirtual jdk.internal.misc.Unsafe.putAddress:(JJ)V
        22: .line 712
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.unsafe:Ljdk/internal/misc/Unsafe;
            lload 1 /* address */
            lconst_0
            ladd
            iload 7 /* rem */
            invokevirtual jdk.internal.misc.Unsafe.putInt:(JI)V
        23: .line 713
            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 src
        24: .line 692
            iinc 3 /* i */ 1
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask long int
      StackMap stack:
        25: iload 3 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.numBufs:I
            if_icmplt 4
        end local 3 // int i
        26: .line 715
            return
        end local 1 // long address
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   27     0     this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<TV;TA;>;
            2   27     1  address  J
            3   26     3        i  I
            5   24     4      src  Ljava/nio/ByteBuffer;
            6   24     5      pos  I
            7   24     6      lim  I
           11   24     7      rem  I
           18   19     8        a  J
           21   24     8        a  J
           13   18    10       bb  Ljava/nio/ByteBuffer;

  void updateBuffers(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
        start local 1 // int bytesWritten
         0: .line 723
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 23
         2: .line 724
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.bufs:[Ljava/nio/ByteBuffer;
            iload 2 /* i */
            aaload
            astore 3 /* nextBuffer */
        start local 3 // java.nio.ByteBuffer nextBuffer
         3: .line 725
            aload 3 /* nextBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         4: .line 726
            aload 3 /* nextBuffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* lim */
        start local 5 // int lim
         5: .line 727
            iload 4 /* pos */
            iload 5 /* lim */
            if_icmpgt 6
            iload 5 /* lim */
            iload 4 /* pos */
            isub
            goto 7
      StackMap locals: java.nio.ByteBuffer int int
      StackMap stack:
         6: iload 5 /* lim */
      StackMap locals:
      StackMap stack: int
         7: istore 6 /* len */
        start local 6 // int len
         8: .line 728
            iload 1 /* bytesWritten */
            iload 6 /* len */
            if_icmplt 15
         9: .line 729
            iload 1 /* bytesWritten */
            iload 6 /* len */
            isub
            istore 1 /* bytesWritten */
        10: .line 730
            iload 4 /* pos */
            iload 6 /* len */
            iadd
            istore 7 /* newPosition */
        start local 7 // int newPosition
        11: .line 732
            aload 3 /* nextBuffer */
            iload 7 /* newPosition */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        12: .line 733
            goto 22
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask int int java.nio.ByteBuffer int int int int
      StackMap stack: java.lang.IllegalArgumentException
        13: pop
        end local 7 // int newPosition
        14: .line 736
            goto 22
        15: .line 737
      StackMap locals:
      StackMap stack:
            iload 1 /* bytesWritten */
            ifle 24
        16: .line 738
            getstatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.$assertionsDisabled:Z
            ifne 17
            iload 4 /* pos */
            iload 1 /* bytesWritten */
            iadd
            i2l
            ldc 2147483647
            lcmp
            iflt 17
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        17: .line 739
      StackMap locals:
      StackMap stack:
            iload 4 /* pos */
            iload 1 /* bytesWritten */
            iadd
            istore 7 /* newPosition */
        start local 7 // int newPosition
        18: .line 741
            aload 3 /* nextBuffer */
            iload 7 /* newPosition */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        19: .line 742
            goto 24
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask int int java.nio.ByteBuffer int int int int
      StackMap stack: java.lang.IllegalArgumentException
        20: pop
        end local 7 // int newPosition
        21: .line 746
            goto 24
        end local 6 // int len
        end local 5 // int lim
        end local 4 // int pos
        end local 3 // java.nio.ByteBuffer nextBuffer
        22: .line 723
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask int int
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 2 /* i */
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.numBufs:I
            if_icmplt 2
        end local 2 // int i
        24: .line 749
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int bytesWritten
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0          this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<TV;TA;>;
            0   25     1  bytesWritten  I
            1   24     2             i  I
            3   22     3    nextBuffer  Ljava/nio/ByteBuffer;
            4   22     4           pos  I
            5   22     5           lim  I
            8   22     6           len  I
           11   14     7   newPosition  I
           18   21     7   newPosition  I
      Exception table:
        from    to  target  type
          11    12      13  Class java.lang.IllegalArgumentException
          18    19      20  Class java.lang.IllegalArgumentException
    MethodParameters:
              Name  Flags
      bytesWritten  

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

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=1
        start local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
         0: .line 762
            lconst_0
            lstore 1 /* overlapped */
        start local 1 // long overlapped
         1: .line 763
            iconst_0
            istore 3 /* prepared */
        start local 3 // boolean prepared
         2: .line 764
            iconst_0
            istore 4 /* pending */
        start local 4 // boolean pending
         3: .line 765
            iconst_0
            istore 5 /* shutdown */
        start local 5 // boolean shutdown
         4: .line 768
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.begin:()V
         5: .line 771
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.prepareBuffers:()V
         6: .line 772
            iconst_1
            istore 3 /* prepared */
         7: .line 775
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingIoCache.add:(Lsun/nio/ch/PendingFuture;)J
            lstore 1 /* overlapped */
         8: .line 776
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.handle:J
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.numBufs:I
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl.writeBufferArray:J
            lload 1 /* overlapped */
            invokestatic sun.nio.ch.WindowsAsynchronousSocketChannelImpl.write0:(JIJJ)I
            istore 6 /* n */
        start local 6 // int n
         9: .line 777
            iload 6 /* n */
            bipush -2
            if_icmpne 18
        10: .line 779
            iconst_1
            istore 4 /* pending */
        11: .line 799
            iload 4 /* pending */
            ifne 16
        12: .line 800
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 14
        13: .line 801
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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
        14: .line 802
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask long int int int int
      StackMap stack:
            iload 3 /* prepared */
            ifeq 16
        15: .line 803
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.releaseBuffers:()V
        16: .line 805
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
        17: .line 780
            return
        18: .line 782
      StackMap locals:
      StackMap stack:
            iload 6 /* n */
            iconst_m1
            if_icmpne 21
        19: .line 784
            iconst_1
            istore 5 /* shutdown */
        20: .line 785
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
        21: .line 788
      StackMap locals:
      StackMap stack:
            new java.lang.InternalError
            dup
            ldc "Write completed immediately"
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // int n
        22: .line 789
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask long int int int
      StackMap stack: java.lang.Throwable
            astore 6 /* x */
        start local 6 // java.lang.Throwable x
        23: .line 791
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableWriting:()V
        24: .line 792
            iload 5 /* shutdown */
            ifne 26
            aload 6 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 26
        25: .line 793
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 6 /* x */
        26: .line 794
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 6 /* x */
            instanceof java.io.IOException
            ifne 28
        27: .line 795
            new java.io.IOException
            dup
            aload 6 /* x */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            astore 6 /* x */
        28: .line 796
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            aload 6 /* x */
            invokevirtual sun.nio.ch.PendingFuture.setFailure:(Ljava/lang/Throwable;)V
        end local 6 // java.lang.Throwable x
        29: .line 799
            iload 4 /* pending */
            ifne 34
        30: .line 800
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 32
        31: .line 801
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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
        32: .line 802
      StackMap locals:
      StackMap stack:
            iload 3 /* prepared */
            ifeq 34
        33: .line 803
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.releaseBuffers:()V
        34: .line 805
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
            goto 43
        35: .line 797
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        36: .line 799
            iload 4 /* pending */
            ifne 41
        37: .line 800
            lload 1 /* overlapped */
            lconst_0
            lcmp
            ifeq 39
        38: .line 801
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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
        39: .line 802
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask long int int int top java.lang.Throwable
      StackMap stack:
            iload 3 /* prepared */
            ifeq 41
        40: .line 803
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.releaseBuffers:()V
        41: .line 805
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.end:()V
        42: .line 806
            aload 7
            athrow
        43: .line 809
      StackMap locals: sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask long int int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        44: .line 810
            return
        end local 5 // boolean shutdown
        end local 4 // boolean pending
        end local 3 // boolean prepared
        end local 1 // long overlapped
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   45     0        this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<TV;TA;>;
            1   45     1  overlapped  J
            2   45     3    prepared  Z
            3   45     4     pending  Z
            4   45     5    shutdown  Z
            9   22     6           n  I
           23   29     6           x  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4    11      22  Class java.lang.Throwable
          18    22      22  Class java.lang.Throwable
           4    11      35  any
          18    29      35  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$WriteTask this
        start local 1 // int bytesTransferred
        start local 2 // boolean canInvokeDirect
         0: .line 818
            aload 0 /* this */
            iload 1 /* bytesTransferred */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.updateBuffers:(I)V
         1: .line 821
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.releaseBuffers:()V
         2: .line 824
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 3
            monitorenter
         3: .line 825
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 6
         4: .line 826
            aload 3
            monitorexit
         5: return
         6: .line 827
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableWriting:()V
         7: .line 828
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.gatheringWrite:Z
            ifeq 10
         8: .line 829
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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
         9: .line 830
            goto 11
        10: .line 831
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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
        11: .line 824
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 3
            monitorexit
        14: athrow
        15: .line 834
      StackMap locals:
      StackMap stack:
            iload 2 /* canInvokeDirect */
            ifeq 18
        16: .line 835
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Lsun/nio/ch/PendingFuture;)V
        17: .line 836
            goto 19
        18: .line 837
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        19: .line 839
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean canInvokeDirect
        end local 1 // int bytesTransferred
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   20     0              this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<TV;TA;>;
            0   20     1  bytesTransferred  I
            0   20     2   canInvokeDirect  Z
      Exception table:
        from    to  target  type
           3     5      13  any
           6    12      13  any
          13    14      13  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$WriteTask this
        start local 1 // int error
        start local 2 // java.io.IOException x
         0: .line 844
            aload 0 /* this */
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.releaseBuffers:()V
         1: .line 847
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 848
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 2 /* x */
         3: .line 850
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 3
            monitorenter
         4: .line 851
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 7
         5: .line 852
            aload 3
            monitorexit
         6: return
         7: .line 853
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableWriting:()V
         8: .line 854
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            aload 2 /* x */
            invokevirtual sun.nio.ch.PendingFuture.setFailure:(Ljava/lang/Throwable;)V
         9: .line 850
            aload 3
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 856
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        14: .line 857
            return
        end local 2 // java.io.IOException x
        end local 1 // int error
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<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$WriteTask this
         0: .line 864
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            dup
            astore 1
            monitorenter
         1: .line 865
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifeq 4
         2: .line 866
            aload 1
            monitorexit
         3: return
         4: .line 869
      StackMap locals: sun.nio.ch.PendingFuture
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.this$0:Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
            iconst_1
            invokevirtual sun.nio.ch.WindowsAsynchronousSocketChannelImpl.enableWriting:(Z)V
         5: .line 870
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.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 864
            aload 1
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 874
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.result:Lsun/nio/ch/PendingFuture;
            invokestatic sun.nio.ch.Invoker.invoke:(Lsun/nio/ch/PendingFuture;)V
        11: .line 875
            return
        end local 0 // sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl$WriteTask<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 WriteTask = sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask of sun.nio.ch.WindowsAsynchronousSocketChannelImpl