public class jdk.internal.net.http.websocket.TransportImpl implements jdk.internal.net.http.websocket.Transport
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.net.http.websocket.TransportImpl
  super_class: java.lang.Object
{
  private static final jdk.internal.net.http.common.Logger debug;
    descriptor: Ljdk/internal/net/http/common/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicLong counter;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.common.SequentialScheduler sendScheduler;
    descriptor: Ljdk/internal/net/http/common/SequentialScheduler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.MessageQueue queue;
    descriptor: Ljdk/internal/net/http/websocket/MessageQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.MessageEncoder encoder;
    descriptor: Ljdk/internal/net/http/websocket/MessageEncoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.nio.ByteBuffer dst;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.nio.ByteBuffer[] dstArray;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.MessageStreamConsumer messageConsumer;
    descriptor: Ljdk/internal/net/http/websocket/MessageStreamConsumer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.MessageDecoder decoder;
    descriptor: Ljdk/internal/net/http/websocket/MessageDecoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.Frame$Reader reader;
    descriptor: Ljdk/internal/net/http/websocket/Frame$Reader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.common.Demand demand;
    descriptor: Ljdk/internal/net/http/common/Demand;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.common.SequentialScheduler receiveScheduler;
    descriptor: Ljdk/internal/net/http/common/SequentialScheduler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.RawChannel channel;
    descriptor: Ljdk/internal/net/http/websocket/RawChannel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object closeLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.RawChannel$RawEvent writeEvent;
    descriptor: Ljdk/internal/net/http/websocket/RawChannel$RawEvent;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.websocket.RawChannel$RawEvent readEvent;
    descriptor: Ljdk/internal/net/http/websocket/RawChannel$RawEvent;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicReference<jdk.internal.net.http.websocket.TransportImpl$ChannelState> writeState;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;>;

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

  private volatile jdk.internal.net.http.websocket.TransportImpl$ChannelState readState;
    descriptor: Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private boolean inputClosed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean outputClosed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            ldc "[Transport]"
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic get(Ljava/lang/String;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  java/lang/String.toString()Ljava/lang/String; (5)
                  ()Ljava/lang/String;
            getstatic jdk.internal.net.http.common.Utils.DEBUG_WS:Z
            invokestatic jdk.internal.net.http.common.Utils.getWebSocketLogger:(Ljava/util/function/Supplier;Z)Ljdk/internal/net/http/common/Logger;
         1: .line 55
            putstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
         2: .line 56
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.internal.net.http.websocket.MessageQueue, jdk.internal.net.http.websocket.MessageStreamConsumer, jdk.internal.net.http.websocket.RawChannel);
    descriptor: (Ljdk/internal/net/http/websocket/MessageQueue;Ljdk/internal/net/http/websocket/MessageStreamConsumer;Ljdk/internal/net/http/websocket/RawChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // jdk.internal.net.http.websocket.MessageQueue queue
        start local 2 // jdk.internal.net.http.websocket.MessageStreamConsumer consumer
        start local 3 // jdk.internal.net.http.websocket.RawChannel channel
         0: .line 86
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 61
            aload 0 /* this */
            new jdk.internal.net.http.common.SequentialScheduler
            dup
            new jdk.internal.net.http.websocket.TransportImpl$SendTask
            dup
            aload 0 /* this */
            invokespecial jdk.internal.net.http.websocket.TransportImpl$SendTask.<init>:(Ljdk/internal/net/http/websocket/TransportImpl;)V
            invokespecial jdk.internal.net.http.common.SequentialScheduler.<init>:(Ljdk/internal/net/http/common/SequentialScheduler$RestartableTask;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
         3: .line 64
            aload 0 /* this */
            new jdk.internal.net.http.websocket.MessageEncoder
            dup
            invokespecial jdk.internal.net.http.websocket.MessageEncoder.<init>:()V
            putfield jdk.internal.net.http.websocket.TransportImpl.encoder:Ljdk/internal/net/http/websocket/MessageEncoder;
         4: .line 66
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual jdk.internal.net.http.websocket.TransportImpl.createWriteBuffer:()Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            putfield jdk.internal.net.http.websocket.TransportImpl.dst:Ljava/nio/ByteBuffer;
         5: .line 68
            aload 0 /* this */
            iconst_1
            anewarray java.nio.ByteBuffer
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.dst:Ljava/nio/ByteBuffer;
            aastore
            putfield jdk.internal.net.http.websocket.TransportImpl.dstArray:[Ljava/nio/ByteBuffer;
         6: .line 71
            aload 0 /* this */
            new jdk.internal.net.http.websocket.Frame$Reader
            dup
            invokespecial jdk.internal.net.http.websocket.Frame$Reader.<init>:()V
            putfield jdk.internal.net.http.websocket.TransportImpl.reader:Ljdk/internal/net/http/websocket/Frame$Reader;
         7: .line 73
            aload 0 /* this */
            new jdk.internal.net.http.common.Demand
            dup
            invokespecial jdk.internal.net.http.common.Demand.<init>:()V
            putfield jdk.internal.net.http.websocket.TransportImpl.demand:Ljdk/internal/net/http/common/Demand;
         8: .line 76
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield jdk.internal.net.http.websocket.TransportImpl.closeLock:Ljava/lang/Object;
         9: .line 77
            aload 0 /* this */
            new jdk.internal.net.http.websocket.TransportImpl$WriteEvent
            dup
            aload 0 /* this */
            invokespecial jdk.internal.net.http.websocket.TransportImpl$WriteEvent.<init>:(Ljdk/internal/net/http/websocket/TransportImpl;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.writeEvent:Ljdk/internal/net/http/websocket/RawChannel$RawEvent;
        10: .line 78
            aload 0 /* this */
            new jdk.internal.net.http.websocket.TransportImpl$ReadEvent
            dup
            aload 0 /* this */
            invokespecial jdk.internal.net.http.websocket.TransportImpl$ReadEvent.<init>:(Ljdk/internal/net/http/websocket/TransportImpl;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.readEvent:Ljdk/internal/net/http/websocket/RawChannel$RawEvent;
        11: .line 79
            aload 0 /* this */
        12: .line 80
            new java.util.concurrent.atomic.AtomicReference
            dup
            getstatic jdk.internal.net.http.websocket.TransportImpl$ChannelState.UNREGISTERED:Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.writeState:Ljava/util/concurrent/atomic/AtomicReference;
        13: .line 82
            aload 0 /* this */
            getstatic jdk.internal.net.http.websocket.TransportImpl$ChannelState.UNREGISTERED:Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;
            putfield jdk.internal.net.http.websocket.TransportImpl.readState:Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;
        14: .line 88
            aload 0 /* this */
            aload 1 /* queue */
            putfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
        15: .line 89
            aload 0 /* this */
            aload 2 /* consumer */
            putfield jdk.internal.net.http.websocket.TransportImpl.messageConsumer:Ljdk/internal/net/http/websocket/MessageStreamConsumer;
        16: .line 90
            aload 0 /* this */
            aload 3 /* channel */
            putfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
        17: .line 91
            aload 0 /* this */
            new jdk.internal.net.http.websocket.MessageDecoder
            dup
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.messageConsumer:Ljdk/internal/net/http/websocket/MessageStreamConsumer;
            invokespecial jdk.internal.net.http.websocket.MessageDecoder.<init>:(Ljdk/internal/net/http/websocket/MessageStreamConsumer;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.decoder:Ljdk/internal/net/http/websocket/MessageDecoder;
        18: .line 92
            aload 0 /* this */
            aload 3 /* channel */
            invokeinterface jdk.internal.net.http.websocket.RawChannel.initialByteBuffer:()Ljava/nio/ByteBuffer;
            putfield jdk.internal.net.http.websocket.TransportImpl.data:Ljava/nio/ByteBuffer;
        19: .line 96
            aload 0 /* this */
            new jdk.internal.net.http.common.SequentialScheduler
            dup
            new jdk.internal.net.http.websocket.TransportImpl$ReceiveTask
            dup
            aload 0 /* this */
            invokespecial jdk.internal.net.http.websocket.TransportImpl$ReceiveTask.<init>:(Ljdk/internal/net/http/websocket/TransportImpl;)V
            invokespecial jdk.internal.net.http.common.SequentialScheduler.<init>:(Ljdk/internal/net/http/common/SequentialScheduler$RestartableTask;)V
            putfield jdk.internal.net.http.websocket.TransportImpl.receiveScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
        20: .line 97
            return
        end local 3 // jdk.internal.net.http.websocket.RawChannel channel
        end local 2 // jdk.internal.net.http.websocket.MessageStreamConsumer consumer
        end local 1 // jdk.internal.net.http.websocket.MessageQueue queue
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   21     0      this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   21     1     queue  Ljdk/internal/net/http/websocket/MessageQueue;
            0   21     2  consumer  Ljdk/internal/net/http/websocket/MessageStreamConsumer;
            0   21     3   channel  Ljdk/internal/net/http/websocket/RawChannel;
    MethodParameters:
          Name  Flags
      queue     
      consumer  
      channel   

  private java.nio.ByteBuffer createWriteBuffer();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
         0: .line 100
            ldc "jdk.httpclient.websocket.writeBufferSize"
            astore 1 /* name */
        start local 1 // java.lang.String name
         1: .line 101
            aload 1 /* name */
            sipush 16384
            invokestatic jdk.internal.net.http.common.Utils.getIntegerNetProperty:(Ljava/lang/String;I)I
            istore 2 /* capacity */
        start local 2 // int capacity
         2: .line 102
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         3: .line 103
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "write buffer capacity %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 2 /* capacity */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 107
      StackMap locals: java.lang.String int
      StackMap stack:
            iload 2 /* capacity */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            areturn
        end local 2 // int capacity
        end local 1 // java.lang.String name
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Ljdk/internal/net/http/websocket/TransportImpl;
            1    5     1      name  Ljava/lang/String;
            2    5     2  capacity  I

  private boolean write();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=1
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
         0: .line 111
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 2
         1: .line 112
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "writing to the channel"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
         2: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.dstArray:[Ljava/nio/ByteBuffer;
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.dstArray:[Ljava/nio/ByteBuffer;
            arraylength
            invokeinterface jdk.internal.net.http.websocket.RawChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 1 /* count */
        start local 1 // long count
         3: .line 115
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 5
         4: .line 116
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "%s bytes written"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            lload 1 /* count */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 118
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.dstArray:[Ljava/nio/ByteBuffer;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 10
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl long top int int java.nio.ByteBuffer[]
      StackMap stack:
         6: aload 6
            iload 4
            aaload
            astore 3 /* b */
        start local 3 // java.nio.ByteBuffer b
         7: .line 119
            aload 3 /* b */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 9
         8: .line 120
            iconst_0
            ireturn
        end local 3 // java.nio.ByteBuffer b
         9: .line 118
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        10: iload 4
            iload 5
            if_icmplt 6
        11: .line 123
            iconst_1
            ireturn
        end local 1 // long count
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Ljdk/internal/net/http/websocket/TransportImpl;
            3   12     1  count  J
            7    9     3      b  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException

  public <T> java.util.concurrent.CompletableFuture<T> sendText(java.lang.CharSequence, boolean, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (Ljava/lang/CharSequence;ZLjava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=10, args_size=5
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // java.lang.CharSequence message
        start local 2 // boolean isLast
        start local 3 // java.lang.Object attachment
        start local 4 // java.util.function.BiConsumer action
         0: .line 131
            lconst_0
            lstore 5 /* id */
        start local 5 // long id
         1: .line 132
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 133
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 5 /* id */
         3: .line 134
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send text %s message.length=%s last=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 135
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 1 /* message */
            invokeinterface java.lang.CharSequence.length:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 2 /* isLast */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
         5: .line 134
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 145
      StackMap locals: long
      StackMap stack:
            aload 1 /* message */
            invokestatic java.nio.CharBuffer.wrap:(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;
            astore 7 /* text */
        start local 7 // java.nio.CharBuffer text
         7: .line 146
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 8 /* f */
        start local 8 // jdk.internal.net.http.common.MinimalFuture f
         8: .line 148
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            aload 7 /* text */
            iload 2 /* isLast */
            aload 3 /* attachment */
            aload 4 /* action */
            aload 8 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addText:(Ljava/nio/CharBuffer;ZLjava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         9: .line 149
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
        10: .line 150
            goto 14
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.lang.CharSequence int java.lang.Object java.util.function.BiConsumer long java.nio.CharBuffer jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        11: astore 9 /* e */
        start local 9 // java.io.IOException e
        12: .line 151
            aload 4 /* action */
            aconst_null
            aload 9 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 152
            aload 8 /* f */
            aload 9 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 9 // java.io.IOException e
        14: .line 154
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 16
        15: .line 155
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send text %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 8 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        16: .line 157
      StackMap locals:
      StackMap stack:
            aload 8 /* f */
            areturn
        end local 8 // jdk.internal.net.http.common.MinimalFuture f
        end local 7 // java.nio.CharBuffer text
        end local 5 // long id
        end local 4 // java.util.function.BiConsumer action
        end local 3 // java.lang.Object attachment
        end local 2 // boolean isLast
        end local 1 // java.lang.CharSequence message
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   17     1     message  Ljava/lang/CharSequence;
            0   17     2      isLast  Z
            0   17     3  attachment  TT;
            0   17     4      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   17     5          id  J
            7   17     7        text  Ljava/nio/CharBuffer;
            8   17     8           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           12   14     9           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    10      11  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/CharSequence;ZTT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      message     
      isLast      
      attachment  
      action      

  public <T> java.util.concurrent.CompletableFuture<T> sendBinary(java.nio.ByteBuffer, boolean, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (Ljava/nio/ByteBuffer;ZLjava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // java.nio.ByteBuffer message
        start local 2 // boolean isLast
        start local 3 // java.lang.Object attachment
        start local 4 // java.util.function.BiConsumer action
         0: .line 165
            lconst_0
            lstore 5 /* id */
        start local 5 // long id
         1: .line 166
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 167
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 5 /* id */
         3: .line 168
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send binary %s message.remaining=%s last=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 169
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 1 /* message */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 2 /* isLast */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
         5: .line 168
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 171
      StackMap locals: long
      StackMap stack:
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 7 /* f */
        start local 7 // jdk.internal.net.http.common.MinimalFuture f
         7: .line 173
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            aload 1 /* message */
            iload 2 /* isLast */
            aload 3 /* attachment */
            aload 4 /* action */
            aload 7 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addBinary:(Ljava/nio/ByteBuffer;ZLjava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         8: .line 174
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         9: .line 175
            goto 13
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.nio.ByteBuffer int java.lang.Object java.util.function.BiConsumer long jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        10: astore 8 /* e */
        start local 8 // java.io.IOException e
        11: .line 176
            aload 4 /* action */
            aconst_null
            aload 8 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 177
            aload 7 /* f */
            aload 8 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 8 // java.io.IOException e
        13: .line 179
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 180
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send binary %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 7 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 182
      StackMap locals:
      StackMap stack:
            aload 7 /* f */
            areturn
        end local 7 // jdk.internal.net.http.common.MinimalFuture f
        end local 5 // long id
        end local 4 // java.util.function.BiConsumer action
        end local 3 // java.lang.Object attachment
        end local 2 // boolean isLast
        end local 1 // java.nio.ByteBuffer message
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   16     1     message  Ljava/nio/ByteBuffer;
            0   16     2      isLast  Z
            0   16     3  attachment  TT;
            0   16     4      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   16     5          id  J
            7   16     7           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           11   13     8           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     9      10  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;ZTT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      message     
      isLast      
      attachment  
      action      

  public <T> java.util.concurrent.CompletableFuture<T> sendPing(java.nio.ByteBuffer, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // java.nio.ByteBuffer message
        start local 2 // java.lang.Object attachment
        start local 3 // java.util.function.BiConsumer action
         0: .line 189
            lconst_0
            lstore 4 /* id */
        start local 4 // long id
         1: .line 190
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 191
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 4 /* id */
         3: .line 192
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send ping %s message.remaining=%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 193
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 1 /* message */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         5: .line 192
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 195
      StackMap locals: long
      StackMap stack:
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 6 /* f */
        start local 6 // jdk.internal.net.http.common.MinimalFuture f
         7: .line 197
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            aload 1 /* message */
            aload 2 /* attachment */
            aload 3 /* action */
            aload 6 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addPing:(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         8: .line 198
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         9: .line 199
            goto 13
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.nio.ByteBuffer java.lang.Object java.util.function.BiConsumer long jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        10: astore 7 /* e */
        start local 7 // java.io.IOException e
        11: .line 200
            aload 3 /* action */
            aconst_null
            aload 7 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 201
            aload 6 /* f */
            aload 7 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 7 // java.io.IOException e
        13: .line 203
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 204
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send ping %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 6 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 206
      StackMap locals:
      StackMap stack:
            aload 6 /* f */
            areturn
        end local 6 // jdk.internal.net.http.common.MinimalFuture f
        end local 4 // long id
        end local 3 // java.util.function.BiConsumer action
        end local 2 // java.lang.Object attachment
        end local 1 // java.nio.ByteBuffer message
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   16     1     message  Ljava/nio/ByteBuffer;
            0   16     2  attachment  TT;
            0   16     3      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   16     4          id  J
            7   16     6           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           11   13     7           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     9      10  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;TT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      message     
      attachment  
      action      

  public <T> java.util.concurrent.CompletableFuture<T> sendPong(java.nio.ByteBuffer, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // java.nio.ByteBuffer message
        start local 2 // java.lang.Object attachment
        start local 3 // java.util.function.BiConsumer action
         0: .line 213
            lconst_0
            lstore 4 /* id */
        start local 4 // long id
         1: .line 214
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 215
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 4 /* id */
         3: .line 216
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send pong %s message.remaining=%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 217
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 1 /* message */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         5: .line 216
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 219
      StackMap locals: long
      StackMap stack:
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 6 /* f */
        start local 6 // jdk.internal.net.http.common.MinimalFuture f
         7: .line 221
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            aload 1 /* message */
            aload 2 /* attachment */
            aload 3 /* action */
            aload 6 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addPong:(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         8: .line 222
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         9: .line 223
            goto 13
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.nio.ByteBuffer java.lang.Object java.util.function.BiConsumer long jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        10: astore 7 /* e */
        start local 7 // java.io.IOException e
        11: .line 224
            aload 3 /* action */
            aconst_null
            aload 7 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 225
            aload 6 /* f */
            aload 7 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 7 // java.io.IOException e
        13: .line 227
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 228
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send pong %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 6 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 230
      StackMap locals:
      StackMap stack:
            aload 6 /* f */
            areturn
        end local 6 // jdk.internal.net.http.common.MinimalFuture f
        end local 4 // long id
        end local 3 // java.util.function.BiConsumer action
        end local 2 // java.lang.Object attachment
        end local 1 // java.nio.ByteBuffer message
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   16     1     message  Ljava/nio/ByteBuffer;
            0   16     2  attachment  TT;
            0   16     3      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   16     4          id  J
            7   16     6           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           11   13     7           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     9      10  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;TT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      message     
      attachment  
      action      

  public <T> java.util.concurrent.CompletableFuture<T> sendPong(java.util.function.Supplier<? extends java.nio.ByteBuffer>, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (Ljava/util/function/Supplier;Ljava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // java.util.function.Supplier message
        start local 2 // java.lang.Object attachment
        start local 3 // java.util.function.BiConsumer action
         0: .line 237
            lconst_0
            lstore 4 /* id */
        start local 4 // long id
         1: .line 238
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 239
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 4 /* id */
         3: .line 240
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send pong %s supplier=%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 241
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 1 /* message */
            aastore
         5: .line 240
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 243
      StackMap locals: long
      StackMap stack:
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 6 /* f */
        start local 6 // jdk.internal.net.http.common.MinimalFuture f
         7: .line 245
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            aload 1 /* message */
            aload 2 /* attachment */
            aload 3 /* action */
            aload 6 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addPong:(Ljava/util/function/Supplier;Ljava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         8: .line 246
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         9: .line 247
            goto 13
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.util.function.Supplier java.lang.Object java.util.function.BiConsumer long jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        10: astore 7 /* e */
        start local 7 // java.io.IOException e
        11: .line 248
            aload 3 /* action */
            aconst_null
            aload 7 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 249
            aload 6 /* f */
            aload 7 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 7 // java.io.IOException e
        13: .line 251
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 252
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send pong %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 4 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 6 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 254
      StackMap locals:
      StackMap stack:
            aload 6 /* f */
            areturn
        end local 6 // jdk.internal.net.http.common.MinimalFuture f
        end local 4 // long id
        end local 3 // java.util.function.BiConsumer action
        end local 2 // java.lang.Object attachment
        end local 1 // java.util.function.Supplier message
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   16     1     message  Ljava/util/function/Supplier<+Ljava/nio/ByteBuffer;>;
            0   16     2  attachment  TT;
            0   16     3      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   16     4          id  J
            7   16     6           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           11   13     7           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     9      10  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/util/function/Supplier<+Ljava/nio/ByteBuffer;>;TT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      message     
      attachment  
      action      

  public <T> java.util.concurrent.CompletableFuture<T> sendClose(int, java.lang.String, T, java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
    descriptor: (ILjava/lang/String;Ljava/lang/Object;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // int statusCode
        start local 2 // java.lang.String reason
        start local 3 // java.lang.Object attachment
        start local 4 // java.util.function.BiConsumer action
         0: .line 262
            lconst_0
            lstore 5 /* id */
        start local 5 // long id
         1: .line 263
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 6
         2: .line 264
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 5 /* id */
         3: .line 265
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "enter send close %s statusCode=%s reason.length=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 266
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            iload 1 /* statusCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* reason */
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         5: .line 265
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 268
      StackMap locals: long
      StackMap stack:
            new jdk.internal.net.http.common.MinimalFuture
            dup
            invokespecial jdk.internal.net.http.common.MinimalFuture.<init>:()V
            astore 7 /* f */
        start local 7 // jdk.internal.net.http.common.MinimalFuture f
         7: .line 270
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.queue:Ljdk/internal/net/http/websocket/MessageQueue;
            iload 1 /* statusCode */
            aload 2 /* reason */
            invokestatic java.nio.CharBuffer.wrap:(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;
            aload 3 /* attachment */
            aload 4 /* action */
            aload 7 /* f */
            invokevirtual jdk.internal.net.http.websocket.MessageQueue.addClose:(ILjava/nio/CharBuffer;Ljava/lang/Object;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture;)V
         8: .line 271
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         9: .line 272
            goto 13
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl int java.lang.String java.lang.Object java.util.function.BiConsumer long jdk.internal.net.http.common.MinimalFuture
      StackMap stack: java.io.IOException
        10: astore 8 /* e */
        start local 8 // java.io.IOException e
        11: .line 273
            aload 4 /* action */
            aconst_null
            aload 8 /* e */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 274
            aload 7 /* f */
            aload 8 /* e */
            invokevirtual jdk.internal.net.http.common.MinimalFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        end local 8 // java.io.IOException e
        13: .line 276
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 277
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "exit send close %s returned %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 5 /* id */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            aload 7 /* f */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 279
      StackMap locals:
      StackMap stack:
            aload 7 /* f */
            areturn
        end local 7 // jdk.internal.net.http.common.MinimalFuture f
        end local 5 // long id
        end local 4 // java.util.function.BiConsumer action
        end local 3 // java.lang.Object attachment
        end local 2 // java.lang.String reason
        end local 1 // int statusCode
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljdk/internal/net/http/websocket/TransportImpl;
            0   16     1  statusCode  I
            0   16     2      reason  Ljava/lang/String;
            0   16     3  attachment  TT;
            0   16     4      action  Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;
            1   16     5          id  J
            7   16     7           f  Ljdk/internal/net/http/common/MinimalFuture<TT;>;
           11   13     8           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     9      10  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(ILjava/lang/String;TT;Ljava/util/function/BiConsumer<-TT;-Ljava/lang/Throwable;>;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
            Name  Flags
      statusCode  
      reason      
      attachment  
      action      

  public void request(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
        start local 1 // long n
         0: .line 284
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 2
         1: .line 285
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "request %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            lload 1 /* n */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.demand:Ljdk/internal/net/http/common/Demand;
            lload 1 /* n */
            invokevirtual jdk.internal.net.http.common.Demand.increase:(J)Z
            ifeq 4
         3: .line 288
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.receiveScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
         4: .line 290
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long n
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/internal/net/http/websocket/TransportImpl;
            0    5     1     n  J
    MethodParameters:
      Name  Flags
      n     

  public void acknowledgeReception();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
         0: .line 294
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.demand:Ljdk/internal/net/http/common/Demand;
            invokevirtual jdk.internal.net.http.common.Demand.tryDecrement:()Z
            istore 1 /* decremented */
        start local 1 // boolean decremented
         1: .line 295
            iload 1 /* decremented */
            ifne 3
         2: .line 296
            new java.lang.InternalError
            dup
            invokespecial java.lang.InternalError.<init>:()V
            athrow
         3: .line 298
      StackMap locals: int
      StackMap stack:
            return
        end local 1 // boolean decremented
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Ljdk/internal/net/http/websocket/TransportImpl;
            1    4     1  decremented  Z

  public void closeOutput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
         0: .line 302
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 2
         1: .line 303
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "closeOutput"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
         2: .line 305
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.closeLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 306
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.outputClosed:Z
            ifne 13
         4: .line 307
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.TransportImpl.outputClosed:Z
         5: .line 309
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.shutdownOutput:()V
         6: .line 310
            goto 11
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.lang.Object
      StackMap stack: java.lang.Throwable
         7: astore 2
         8: .line 311
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.inputClosed:Z
            ifeq 10
         9: .line 312
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.close:()V
        10: .line 314
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
        11: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.inputClosed:Z
            ifeq 13
        12: .line 312
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.close:()V
        13: .line 305
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.writeState:Ljava/util/concurrent/atomic/AtomicReference;
            getstatic jdk.internal.net.http.websocket.TransportImpl$ChannelState.CLOSED:Ljdk/internal/net/http/websocket/TransportImpl$ChannelState;
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
        18: .line 318
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.sendScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
        19: .line 319
            return
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Ljdk/internal/net/http/websocket/TransportImpl;
      Exception table:
        from    to  target  type
           5     7       7  any
           3    14      15  any
          15    16      15  any
    Exceptions:
      throws java.io.IOException

  public void closeInput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // jdk.internal.net.http.websocket.TransportImpl this
         0: .line 327
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 2
         1: .line 328
            getstatic jdk.internal.net.http.websocket.TransportImpl.debug:Ljdk/internal/net/http/common/Logger;
            ldc "closeInput"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
         2: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.closeLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 331
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.inputClosed:Z
            ifne 14
         4: .line 332
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.TransportImpl.inputClosed:Z
         5: .line 334
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.receiveScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
            invokevirtual jdk.internal.net.http.common.SequentialScheduler.stop:()V
         6: .line 335
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.shutdownInput:()V
         7: .line 336
            goto 12
      StackMap locals: jdk.internal.net.http.websocket.TransportImpl java.lang.Object
      StackMap stack: java.lang.Throwable
         8: astore 2
         9: .line 337
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.outputClosed:Z
            ifeq 11
        10: .line 338
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.close:()V
        11: .line 340
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
        12: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.outputClosed:Z
            ifeq 14
        13: .line 338
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.TransportImpl.channel:Ljdk/internal/net/http/websocket/RawChannel;
            invokeinterface jdk.internal.net.http.websocket.RawChannel.close:()V
        14: .line 330
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 1
            monitorexit
        17: athrow
        18: .line 343
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.internal.net.http.websocket.TransportImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Ljdk/internal/net/http/websocket/TransportImpl;
      Exception table:
        from    to  target  type
           5     8       8  any
           3    15      16  any
          16    17      16  any
    Exceptions:
      throws java.io.IOException
}
SourceFile: "TransportImpl.java"
NestMembers:
  jdk.internal.net.http.websocket.TransportImpl$ChannelState  jdk.internal.net.http.websocket.TransportImpl$ReadEvent  jdk.internal.net.http.websocket.TransportImpl$ReceiveTask  jdk.internal.net.http.websocket.TransportImpl$SendTask  jdk.internal.net.http.websocket.TransportImpl$SendTask$1  jdk.internal.net.http.websocket.TransportImpl$SendTask$2  jdk.internal.net.http.websocket.TransportImpl$WriteEvent
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract RestartableTask = jdk.internal.net.http.common.SequentialScheduler$RestartableTask of jdk.internal.net.http.common.SequentialScheduler
  final Reader = jdk.internal.net.http.websocket.Frame$Reader of jdk.internal.net.http.websocket.Frame
  public abstract RawEvent = jdk.internal.net.http.websocket.RawChannel$RawEvent of jdk.internal.net.http.websocket.RawChannel
  final ChannelState = jdk.internal.net.http.websocket.TransportImpl$ChannelState of jdk.internal.net.http.websocket.TransportImpl
  private ReadEvent = jdk.internal.net.http.websocket.TransportImpl$ReadEvent of jdk.internal.net.http.websocket.TransportImpl
  private ReceiveTask = jdk.internal.net.http.websocket.TransportImpl$ReceiveTask of jdk.internal.net.http.websocket.TransportImpl
  private SendTask = jdk.internal.net.http.websocket.TransportImpl$SendTask of jdk.internal.net.http.websocket.TransportImpl
  private WriteEvent = jdk.internal.net.http.websocket.TransportImpl$WriteEvent of jdk.internal.net.http.websocket.TransportImpl