public class jdk.internal.net.http.websocket.MessageEncoder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.net.http.websocket.MessageEncoder
  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.security.SecureRandom maskingKeySource;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private final java.nio.charset.CharsetEncoder charsetEncoder;
    descriptor: Ljava/nio/charset/CharsetEncoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

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

  private long headerCount;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private int actualLen;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int expectedLen;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 53
            ldc "[Output]"
            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 52
            putstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
         2: .line 53
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield jdk.internal.net.http.websocket.MessageEncoder.maskingKeySource:Ljava/security/SecureRandom;
         2: .line 56
            aload 0 /* this */
            new jdk.internal.net.http.websocket.Frame$HeaderWriter
            dup
            invokespecial jdk.internal.net.http.websocket.Frame$HeaderWriter.<init>:()V
            putfield jdk.internal.net.http.websocket.MessageEncoder.headerWriter:Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
         3: .line 57
            aload 0 /* this */
            new jdk.internal.net.http.websocket.Frame$Masker
            dup
            invokespecial jdk.internal.net.http.websocket.Frame$Masker.<init>:()V
            putfield jdk.internal.net.http.websocket.MessageEncoder.payloadMasker:Ljdk/internal/net/http/websocket/Frame$Masker;
         4: .line 58
            aload 0 /* this */
         5: .line 59
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.newEncoder:()Ljava/nio/charset/CharsetEncoder;
         6: .line 60
            getstatic java.nio.charset.CodingErrorAction.REPORT:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetEncoder.onMalformedInput:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
         7: .line 61
            getstatic java.nio.charset.CodingErrorAction.REPORT:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetEncoder.onUnmappableCharacter:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
            putfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
         8: .line 70
            aload 0 /* this */
            aload 0 /* this */
         9: .line 71
            bipush 125
        10: .line 70
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.createIntermediateBuffer:(I)Ljava/nio/ByteBuffer;
            putfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
        11: .line 72
            aload 0 /* this */
        12: .line 73
            bipush 14
        13: .line 72
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            putfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
        14: .line 77
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.moreText:Z
        15: .line 80
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
        16: .line 50
            return
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Ljdk/internal/net/http/websocket/MessageEncoder;

  protected java.nio.ByteBuffer createIntermediateBuffer(int);
    descriptor: (I)Ljava/nio/ByteBuffer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // int minSize
         0: .line 110
            ldc "jdk.httpclient.websocket.intermediateBufferSize"
            sipush 16384
         1: .line 109
            invokestatic jdk.internal.net.http.common.Utils.getIntegerNetProperty:(Ljava/lang/String;I)I
            istore 2 /* capacity */
        start local 2 // int capacity
         2: .line 111
            iload 1 /* minSize */
            iload 2 /* capacity */
            invokestatic java.lang.Math.max:(II)I
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            areturn
        end local 2 // int capacity
        end local 1 // int minSize
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0    3     1   minSize  I
            2    3     2  capacity  I
    MethodParameters:
         Name  Flags
      minSize  

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
         0: .line 117
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
         1: .line 118
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.flushing:Z
         2: .line 119
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.moreText:Z
         3: .line 120
            aload 0 /* this */
            lconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.headerCount:J
         4: .line 121
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
         5: .line 122
            return
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/internal/net/http/websocket/MessageEncoder;

  public boolean encodeText(java.nio.CharBuffer, boolean, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/CharBuffer;ZLjava/nio/ByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=4
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.CharBuffer src
        start local 2 // boolean last
        start local 3 // java.nio.ByteBuffer dst
         0: .line 131
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         1: .line 132
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encode text src=[pos=%s lim=%s cap=%s] last=%s dst=%s"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 133
            aload 1 /* src */
            invokevirtual java.nio.CharBuffer.position:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 1 /* src */
            invokevirtual java.nio.CharBuffer.limit:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 1 /* src */
            invokevirtual java.nio.CharBuffer.capacity:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            iload 2 /* last */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_4
            aload 3 /* dst */
            aastore
         3: .line 132
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
            ifeq 6
         5: .line 136
            new java.io.IOException
            dup
            ldc "Output closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
            ifne 13
         7: .line 139
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousText:Z
            ifne 9
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
            ifne 9
         8: .line 141
            new java.lang.IllegalStateException
            dup
            ldc "Unexpected text message"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
        10: .line 144
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer: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;
            pop
        11: .line 145
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer: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;
            pop
        12: .line 146
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
            invokevirtual java.nio.charset.CharsetEncoder.reset:()Ljava/nio/charset/CharsetEncoder;
            pop
        13: .line 149
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 15
        14: .line 150
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "put"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
        15: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.putAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
            ifne 17
        16: .line 153
            iconst_0
            ireturn
        17: .line 155
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 19
        18: .line 156
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "mask"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
        19: .line 158
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.maskAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            ifge 21
        20: .line 159
            iconst_0
            ireturn
        21: .line 161
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 23
        22: .line 162
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "moreText"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
        23: .line 164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.moreText:Z
            ifne 27
        24: .line 165
            aload 0 /* this */
            iload 2 /* last */
            putfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
        25: .line 166
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.previousText:Z
        26: .line 167
            iconst_1
            ireturn
        27: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
            pop
        28: .line 170
            aconst_null
            astore 4 /* r */
        start local 4 // java.nio.charset.CoderResult r
        29: .line 171
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.flushing:Z
            ifne 33
        30: .line 172
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
            aload 1 /* src */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            iconst_1
            invokevirtual java.nio.charset.CharsetEncoder.encode:(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 4 /* r */
        31: .line 173
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 33
        32: .line 174
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.flushing:Z
        33: .line 177
      StackMap locals: java.nio.charset.CoderResult
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.flushing:Z
            ifeq 37
        34: .line 178
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.charset.CharsetEncoder.flush:(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
            astore 4 /* r */
        35: .line 179
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 37
        36: .line 180
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.moreText:Z
        37: .line 183
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifeq 42
        38: .line 185
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        39: .line 186
            goto 42
      StackMap locals:
      StackMap stack: java.nio.charset.CharacterCodingException
        40: astore 5 /* e */
        start local 5 // java.nio.charset.CharacterCodingException e
        41: .line 187
            new java.io.IOException
            dup
            ldc "Malformed text message"
            aload 5 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.nio.charset.CharacterCodingException e
        42: .line 190
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 44
        43: .line 191
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "frame #%s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerCount:J
            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
        44: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        45: .line 194
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
            ifeq 47
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerCount:J
            lconst_0
            lcmp
            ifne 47
        46: .line 195
            getstatic jdk.internal.net.http.websocket.Frame$Opcode.TEXT:Ljdk/internal/net/http/websocket/Frame$Opcode;
            goto 48
      StackMap locals:
      StackMap stack:
        47: getstatic jdk.internal.net.http.websocket.Frame$Opcode.CONTINUATION:Ljdk/internal/net/http/websocket/Frame$Opcode;
        48: .line 194
      StackMap locals:
      StackMap stack: jdk.internal.net.http.websocket.Frame$Opcode
            astore 5 /* opcode */
        start local 5 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        49: .line 196
            iload 2 /* last */
            ifeq 50
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.moreText:Z
            ifne 50
            iconst_1
            goto 51
      StackMap locals: jdk.internal.net.http.websocket.Frame$Opcode
      StackMap stack:
        50: iconst_0
      StackMap locals:
      StackMap stack: int
        51: istore 6 /* fin */
        start local 6 // boolean fin
        52: .line 197
            aload 0 /* this */
            aload 5 /* opcode */
            iload 6 /* fin */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            i2l
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.setupHeader:(Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
        53: .line 198
            aload 0 /* this */
            dup
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerCount:J
            lconst_1
            ladd
            putfield jdk.internal.net.http.websocket.MessageEncoder.headerCount:J
        end local 6 // boolean fin
        end local 5 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        end local 4 // java.nio.charset.CoderResult r
        54: .line 148
            goto 13
        end local 3 // java.nio.ByteBuffer dst
        end local 2 // boolean last
        end local 1 // java.nio.CharBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   55     0    this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   55     1     src  Ljava/nio/CharBuffer;
            0   55     2    last  Z
            0   55     3     dst  Ljava/nio/ByteBuffer;
           29   54     4       r  Ljava/nio/charset/CoderResult;
           41   42     5       e  Ljava/nio/charset/CharacterCodingException;
           49   54     5  opcode  Ljdk/internal/net/http/websocket/Frame$Opcode;
           52   54     6     fin  Z
      Exception table:
        from    to  target  type
          38    39      40  Class java.nio.charset.CharacterCodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      last  
      dst   

  private boolean putAvailable(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 203
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 3 /* available */
        start local 3 // int available
         1: .line 204
            iload 3 /* available */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            if_icmplt 4
         2: .line 205
            aload 2 /* dst */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         3: .line 206
            iconst_1
            ireturn
         4: .line 208
      StackMap locals: int
      StackMap stack:
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 4 /* lim */
        start local 4 // int lim
         5: .line 209
            aload 1 /* src */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 3 /* available */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
         6: .line 210
            aload 2 /* dst */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         7: .line 211
            aload 1 /* src */
            iload 4 /* lim */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
         8: .line 212
            iconst_0
            ireturn
        end local 4 // int lim
        end local 3 // int available
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0    9     1        src  Ljava/nio/ByteBuffer;
            0    9     2        dst  Ljava/nio/ByteBuffer;
            1    9     3  available  I
            5    9     4        lim  I
    MethodParameters:
      Name  Flags
      src   
      dst   

  public boolean encodeBinary(java.nio.ByteBuffer, boolean, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;ZLjava/nio/ByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // boolean last
        start local 3 // java.nio.ByteBuffer dst
         0: .line 219
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         1: .line 220
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encode binary src=%s last=%s dst=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 221
            aload 1 /* src */
            aastore
            dup
            iconst_1
            iload 2 /* last */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
            aload 3 /* dst */
            aastore
         3: .line 220
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
            ifeq 6
         5: .line 224
            new java.io.IOException
            dup
            ldc "Output closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
            ifne 17
         7: .line 227
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousText:Z
            ifeq 9
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
            ifne 9
         8: .line 229
            new java.lang.IllegalStateException
            dup
            ldc "Unexpected binary message"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            putfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
        10: .line 232
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
            ifeq 11
            getstatic jdk.internal.net.http.websocket.Frame$Opcode.BINARY:Ljdk/internal/net/http/websocket/Frame$Opcode;
            goto 12
      StackMap locals:
      StackMap stack:
        11: getstatic jdk.internal.net.http.websocket.Frame$Opcode.CONTINUATION:Ljdk/internal/net/http/websocket/Frame$Opcode;
      StackMap locals:
      StackMap stack: jdk.internal.net.http.websocket.Frame$Opcode
        12: astore 4 /* opcode */
        start local 4 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        13: .line 233
            aload 0 /* this */
            aload 4 /* opcode */
            iload 2 /* last */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            i2l
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.setupHeader:(Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
        14: .line 234
            aload 0 /* this */
            iload 2 /* last */
            putfield jdk.internal.net.http.websocket.MessageEncoder.previousFin:Z
        15: .line 235
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.websocket.MessageEncoder.previousText:Z
        16: .line 236
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
        end local 4 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        17: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.putAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
            ifne 19
        18: .line 239
            iconst_0
            ireturn
        19: .line 241
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.maskAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 4 /* count */
        start local 4 // int count
        20: .line 242
            aload 0 /* this */
            dup
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            iload 4 /* count */
            invokestatic java.lang.Math.abs:(I)I
            iadd
            putfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
        21: .line 243
            iload 4 /* count */
            iflt 23
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            if_icmpeq 23
        22: .line 244
            new java.io.IOException
            dup
            ldc "Concurrent message modification"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 246
      StackMap locals: int
      StackMap stack:
            iload 4 /* count */
            iflt 24
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        24: iconst_0
            ireturn
        end local 4 // int count
        end local 3 // java.nio.ByteBuffer dst
        end local 2 // boolean last
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   25     0    this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   25     1     src  Ljava/nio/ByteBuffer;
            0   25     2    last  Z
            0   25     3     dst  Ljava/nio/ByteBuffer;
           13   17     4  opcode  Ljdk/internal/net/http/websocket/Frame$Opcode;
           20   25     4   count  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      last  
      dst   

  private int maskAvailable(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 250
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 3 /* r0 */
        start local 3 // int r0
         1: .line 251
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.payloadMasker:Ljdk/internal/net/http/websocket/Frame$Masker;
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual jdk.internal.net.http.websocket.Frame$Masker.transferMasking:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljdk/internal/net/http/websocket/Frame$Masker;
            pop
         2: .line 252
            iload 3 /* r0 */
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            isub
            istore 4 /* masked */
        start local 4 // int masked
         3: .line 253
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 4
            iload 4 /* masked */
            ineg
            goto 5
      StackMap locals: int int
      StackMap stack:
         4: iload 4 /* masked */
      StackMap locals:
      StackMap stack: int
         5: ireturn
        end local 4 // int masked
        end local 3 // int r0
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0    6     1     src  Ljava/nio/ByteBuffer;
            0    6     2     dst  Ljava/nio/ByteBuffer;
            1    6     3      r0  I
            3    6     4  masked  I
    MethodParameters:
      Name  Flags
      src   
      dst   

  public boolean encodePing(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 259
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 2
         1: .line 260
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encode ping src=%s dst=%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* src */
            aastore
            dup
            iconst_1
            aload 2 /* dst */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
            ifeq 4
         3: .line 263
            new java.io.IOException
            dup
            ldc "Output closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 265
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
            ifne 10
         5: .line 266
            aload 0 /* this */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            putfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
         6: .line 267
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            bipush 125
            if_icmple 8
         7: .line 268
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Long message: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic jdk.internal.net.http.websocket.Frame$Opcode.PING:Ljdk/internal/net/http/websocket/Frame$Opcode;
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            i2l
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.setupHeader:(Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
         9: .line 271
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
        10: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            aload 2 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.putAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
            ifne 12
        11: .line 274
            iconst_0
            ireturn
        12: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.maskAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 3 /* count */
        start local 3 // int count
        13: .line 277
            aload 0 /* this */
            dup
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            iload 3 /* count */
            invokestatic java.lang.Math.abs:(I)I
            iadd
            putfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
        14: .line 278
            iload 3 /* count */
            iflt 16
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            if_icmpeq 16
        15: .line 279
            new java.io.IOException
            dup
            ldc "Concurrent message modification"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 281
      StackMap locals: int
      StackMap stack:
            iload 3 /* count */
            iflt 17
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        17: iconst_0
            ireturn
        end local 3 // int count
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   18     1    src  Ljava/nio/ByteBuffer;
            0   18     2    dst  Ljava/nio/ByteBuffer;
           13   18     3  count  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      dst   

  public boolean encodePong(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 287
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         1: .line 288
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encode pong src=%s dst=%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 289
            aload 1 /* src */
            aastore
            dup
            iconst_1
            aload 2 /* dst */
            aastore
         3: .line 288
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
            ifeq 6
         5: .line 292
            new java.io.IOException
            dup
            ldc "Output closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
            ifne 12
         7: .line 295
            aload 0 /* this */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            putfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
         8: .line 296
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            bipush 125
            if_icmple 10
         9: .line 297
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Long message: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 299
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic jdk.internal.net.http.websocket.Frame$Opcode.PONG:Ljdk/internal/net/http/websocket/Frame$Opcode;
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            i2l
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.setupHeader:(Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
        11: .line 300
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
        12: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            aload 2 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.putAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
            ifne 14
        13: .line 303
            iconst_0
            ireturn
        14: .line 305
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.maskAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 3 /* count */
        start local 3 // int count
        15: .line 306
            aload 0 /* this */
            dup
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            iload 3 /* count */
            invokestatic java.lang.Math.abs:(I)I
            iadd
            putfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
        16: .line 307
            iload 3 /* count */
            iflt 18
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.actualLen:I
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.expectedLen:I
            if_icmpeq 18
        17: .line 308
            new java.io.IOException
            dup
            ldc "Concurrent message modification"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 310
      StackMap locals: int
      StackMap stack:
            iload 3 /* count */
            iflt 19
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        19: iconst_0
            ireturn
        end local 3 // int count
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   20     0   this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   20     1    src  Ljava/nio/ByteBuffer;
            0   20     2    dst  Ljava/nio/ByteBuffer;
           15   20     3  count  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      dst   

  public boolean encodeClose(int, java.nio.CharBuffer, java.nio.ByteBuffer);
    descriptor: (ILjava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // int statusCode
        start local 2 // java.nio.CharBuffer reason
        start local 3 // java.nio.ByteBuffer dst
         0: .line 316
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         1: .line 317
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encode close statusCode=%s reason=[pos=%s lim=%s cap=%s] dst=%s"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 318
            iload 1 /* statusCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.position:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.limit:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.capacity:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            aload 3 /* dst */
            aastore
         3: .line 317
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
            ifeq 6
         5: .line 321
            new java.io.IOException
            dup
            ldc "Output closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 323
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
            ifne 35
         7: .line 324
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 11
         8: .line 325
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "reason [pos=%s lim=%s cap=%s]"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         9: .line 326
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.position:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.limit:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* reason */
            invokevirtual java.nio.CharBuffer.capacity:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        10: .line 325
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 328
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            bipush 125
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
        12: .line 329
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            iload 1 /* statusCode */
            i2c
            invokevirtual java.nio.ByteBuffer.putChar:(C)Ljava/nio/ByteBuffer;
            pop
        13: .line 330
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
            invokevirtual java.nio.charset.CharsetEncoder.reset:()Ljava/nio/charset/CharsetEncoder;
            aload 2 /* reason */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            iconst_1
            invokevirtual java.nio.charset.CharsetEncoder.encode:(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 4 /* r */
        start local 4 // java.nio.charset.CoderResult r
        14: .line 331
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 18
        15: .line 332
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 17
        16: .line 333
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "flushing"
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
        17: .line 335
      StackMap locals: java.nio.charset.CoderResult
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.charsetEncoder:Ljava/nio/charset/CharsetEncoder;
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.charset.CharsetEncoder.flush:(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
            astore 4 /* r */
        18: .line 337
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 20
        19: .line 338
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "encoding result: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* r */
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        20: .line 340
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifeq 25
        21: .line 342
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        22: .line 343
            goto 29
      StackMap locals:
      StackMap stack: java.nio.charset.CharacterCodingException
        23: astore 5 /* e */
        start local 5 // java.nio.charset.CharacterCodingException e
        24: .line 344
            new java.io.IOException
            dup
            ldc "Malformed reason"
            aload 5 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.nio.charset.CharacterCodingException e
        25: .line 346
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isOverflow:()Z
            ifeq 27
        26: .line 348
            new java.io.IOException
            dup
            ldc "Long reason"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 349
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifne 29
        28: .line 350
            new java.lang.InternalError
            dup
            invokespecial java.lang.InternalError.<init>:()V
            athrow
        29: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        30: .line 353
            aload 0 /* this */
            getstatic jdk.internal.net.http.websocket.Frame$Opcode.CLOSE:Ljdk/internal/net/http/websocket/Frame$Opcode;
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            i2l
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.setupHeader:(Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
        31: .line 354
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.started:Z
        32: .line 355
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.websocket.MessageEncoder.closed:Z
        33: .line 356
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 35
        34: .line 357
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "intermediateBuffer=%s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            aastore
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 4 // java.nio.charset.CoderResult r
        35: .line 360
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.putAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
            ifne 37
        36: .line 361
            iconst_0
            ireturn
        37: .line 363
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.intermediateBuffer:Ljava/nio/ByteBuffer;
            aload 3 /* dst */
            invokevirtual jdk.internal.net.http.websocket.MessageEncoder.maskAvailable:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            iflt 38
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        38: iconst_0
            ireturn
        end local 3 // java.nio.ByteBuffer dst
        end local 2 // java.nio.CharBuffer reason
        end local 1 // int statusCode
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   39     0        this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   39     1  statusCode  I
            0   39     2      reason  Ljava/nio/CharBuffer;
            0   39     3         dst  Ljava/nio/ByteBuffer;
           14   35     4           r  Ljava/nio/charset/CoderResult;
           24   25     5           e  Ljava/nio/charset/CharacterCodingException;
      Exception table:
        from    to  target  type
          21    22      23  Class java.nio.charset.CharacterCodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      statusCode  
      reason      
      dst         

  private void setupHeader(jdk.internal.net.http.websocket.Frame$Opcode, boolean, long);
    descriptor: (Ljdk/internal/net/http/websocket/Frame$Opcode;ZJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // jdk.internal.net.http.websocket.MessageEncoder this
        start local 1 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        start local 2 // boolean fin
        start local 3 // long payloadLen
         0: .line 367
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            invokeinterface jdk.internal.net.http.common.Logger.on:()Z
            ifeq 4
         1: .line 368
            getstatic jdk.internal.net.http.websocket.MessageEncoder.debug:Ljdk/internal/net/http/common/Logger;
            ldc "frame opcode=%s fin=%s len=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 369
            aload 1 /* opcode */
            aastore
            dup
            iconst_1
            iload 2 /* fin */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
            lload 3 /* payloadLen */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
         3: .line 368
            invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
            pop
         5: .line 372
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.maskingKeySource:Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextInt:()I
            istore 5 /* mask */
        start local 5 // int mask
         6: .line 373
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerWriter:Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
            iload 2 /* fin */
            invokevirtual jdk.internal.net.http.websocket.Frame$HeaderWriter.fin:(Z)Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
         7: .line 374
            aload 1 /* opcode */
            invokevirtual jdk.internal.net.http.websocket.Frame$HeaderWriter.opcode:(Ljdk/internal/net/http/websocket/Frame$Opcode;)Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
         8: .line 375
            lload 3 /* payloadLen */
            invokevirtual jdk.internal.net.http.websocket.Frame$HeaderWriter.payloadLen:(J)Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
         9: .line 376
            iload 5 /* mask */
            invokevirtual jdk.internal.net.http.websocket.Frame$HeaderWriter.mask:(I)Ljdk/internal/net/http/websocket/Frame$HeaderWriter;
        10: .line 377
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            invokevirtual jdk.internal.net.http.websocket.Frame$HeaderWriter.write:(Ljava/nio/ByteBuffer;)V
        11: .line 378
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.headerBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        12: .line 379
            aload 0 /* this */
            getfield jdk.internal.net.http.websocket.MessageEncoder.payloadMasker:Ljdk/internal/net/http/websocket/Frame$Masker;
            iload 5 /* mask */
            invokevirtual jdk.internal.net.http.websocket.Frame$Masker.mask:(I)Ljdk/internal/net/http/websocket/Frame$Masker;
            pop
        13: .line 380
            return
        end local 5 // int mask
        end local 3 // long payloadLen
        end local 2 // boolean fin
        end local 1 // jdk.internal.net.http.websocket.Frame$Opcode opcode
        end local 0 // jdk.internal.net.http.websocket.MessageEncoder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Ljdk/internal/net/http/websocket/MessageEncoder;
            0   14     1      opcode  Ljdk/internal/net/http/websocket/Frame$Opcode;
            0   14     2         fin  Z
            0   14     3  payloadLen  J
            6   14     5        mask  I
    MethodParameters:
            Name  Flags
      opcode      
      fin         
      payloadLen  
}
SourceFile: "MessageEncoder.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  final HeaderWriter = jdk.internal.net.http.websocket.Frame$HeaderWriter of jdk.internal.net.http.websocket.Frame
  final Masker = jdk.internal.net.http.websocket.Frame$Masker of jdk.internal.net.http.websocket.Frame
  final Opcode = jdk.internal.net.http.websocket.Frame$Opcode of jdk.internal.net.http.websocket.Frame