abstract class jdk.incubator.http.internal.websocket.OutgoingMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: jdk.incubator.http.internal.websocket.OutgoingMessage
  super_class: java.lang.Object
{
  private static final java.security.SecureRandom maskingKeys;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected java.nio.ByteBuffer[] frame;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0004) ACC_PROTECTED

  protected int offset;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 61
            ldc Ljdk/incubator/http/internal/websocket/OutgoingMessage;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic jdk.incubator.http.internal.websocket.OutgoingMessage.$assertionsDisabled:Z
         3: .line 64
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putstatic jdk.incubator.http.internal.websocket.OutgoingMessage.maskingKeys:Ljava/security/SecureRandom;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/internal/websocket/OutgoingMessage;

  protected boolean contextualize(jdk.incubator.http.internal.websocket.OutgoingMessage$Context);
    descriptor: (Ljdk/incubator/http/internal/websocket/OutgoingMessage$Context;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
        start local 1 // jdk.incubator.http.internal.websocket.OutgoingMessage$Context context
         0: .line 77
            aload 1 /* context */
            invokevirtual jdk.incubator.http.internal.websocket.OutgoingMessage$Context.isCloseSent:()Z
            ifeq 2
         1: .line 78
            new java.lang.IllegalStateException
            dup
            ldc "Close sent"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 80
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // jdk.incubator.http.internal.websocket.OutgoingMessage$Context context
        end local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Ljdk/incubator/http/internal/websocket/OutgoingMessage;
            0    3     1  context  Ljdk/incubator/http/internal/websocket/OutgoingMessage$Context;
    MethodParameters:
         Name  Flags
      context  

  protected boolean sendTo(jdk.incubator.http.internal.websocket.RawChannel);
    descriptor: (Ljdk/incubator/http/internal/websocket/RawChannel;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
        start local 1 // jdk.incubator.http.internal.websocket.RawChannel channel
         0: .line 84
            goto 4
         1: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* channel */
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.frame:[Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.offset:I
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.frame:[Ljava/nio/ByteBuffer;
            arraylength
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.offset:I
            isub
            invokeinterface jdk.incubator.http.internal.websocket.RawChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 2 /* n */
        start local 2 // long n
         2: .line 86
            lload 2 /* n */
            lconst_0
            lcmp
            ifne 4
         3: .line 87
            iconst_0
            ireturn
        end local 2 // long n
         4: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.websocket.OutgoingMessage.nextUnwrittenIndex:()I
            dup_x1
            putfield jdk.incubator.http.internal.websocket.OutgoingMessage.offset:I
            iconst_m1
            if_icmpne 1
         5: .line 90
            iconst_1
            ireturn
        end local 1 // jdk.incubator.http.internal.websocket.RawChannel channel
        end local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Ljdk/incubator/http/internal/websocket/OutgoingMessage;
            0    6     1  channel  Ljdk/incubator/http/internal/websocket/RawChannel;
            2    4     2        n  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  

  private int nextUnwrittenIndex();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
         0: .line 94
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.offset:I
            istore 1 /* i */
        start local 1 // int i
         1: goto 5
         2: .line 95
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.frame:[Ljava/nio/ByteBuffer;
            iload 1 /* i */
            aaload
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 4
         3: .line 96
            iload 1 /* i */
            ireturn
         4: .line 94
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 1 /* i */
            aload 0 /* this */
            getfield jdk.incubator.http.internal.websocket.OutgoingMessage.frame:[Ljava/nio/ByteBuffer;
            arraylength
            if_icmplt 2
        end local 1 // int i
         6: .line 99
            iconst_m1
            ireturn
        end local 0 // jdk.incubator.http.internal.websocket.OutgoingMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/incubator/http/internal/websocket/OutgoingMessage;
            1    6     1     i  I

  private static java.nio.ByteBuffer[] getControlMessageBuffers(jdk.incubator.http.internal.websocket.Frame$Opcode, java.nio.ByteBuffer);
    descriptor: (Ljdk/incubator/http/internal/websocket/Frame$Opcode;Ljava/nio/ByteBuffer;)[Ljava/nio/ByteBuffer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // jdk.incubator.http.internal.websocket.Frame$Opcode opcode
        start local 1 // java.nio.ByteBuffer payload
         0: .line 213
            getstatic jdk.incubator.http.internal.websocket.OutgoingMessage.$assertionsDisabled:Z
            ifne 1
            aload 0 /* opcode */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$Opcode.isControl:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            aload 0 /* opcode */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 214
      StackMap locals:
      StackMap stack:
            aload 1 /* payload */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* remaining */
        start local 2 // int remaining
         2: .line 215
            iload 2 /* remaining */
            bipush 125
            if_icmple 6
         3: .line 216
            new java.lang.IllegalArgumentException
            dup
         4: .line 217
            new java.lang.StringBuilder
            dup
            ldc "Long message: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* remaining */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 216
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 219
      StackMap locals: int
      StackMap stack:
            bipush 14
            iload 2 /* remaining */
            iadd
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 3 /* frame */
        start local 3 // java.nio.ByteBuffer frame
         7: .line 220
            getstatic jdk.incubator.http.internal.websocket.OutgoingMessage.maskingKeys:Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextInt:()I
            istore 4 /* mask */
        start local 4 // int mask
         8: .line 221
            new jdk.incubator.http.internal.websocket.Frame$HeaderWriter
            dup
            invokespecial jdk.incubator.http.internal.websocket.Frame$HeaderWriter.<init>:()V
         9: .line 222
            iconst_1
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.fin:(Z)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        10: .line 223
            aload 0 /* opcode */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.opcode:(Ljdk/incubator/http/internal/websocket/Frame$Opcode;)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        11: .line 224
            iload 2 /* remaining */
            i2l
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.payloadLen:(J)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        12: .line 225
            iload 4 /* mask */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.mask:(I)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        13: .line 226
            aload 3 /* frame */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.write:(Ljava/nio/ByteBuffer;)V
        14: .line 227
            aload 1 /* payload */
            aload 3 /* frame */
            iload 4 /* mask */
            invokestatic jdk.incubator.http.internal.websocket.Frame$Masker.transferMasking:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;I)V
        15: .line 228
            aload 3 /* frame */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        16: .line 229
            iconst_1
            anewarray java.nio.ByteBuffer
            dup
            iconst_0
            aload 3 /* frame */
            aastore
            areturn
        end local 4 // int mask
        end local 3 // java.nio.ByteBuffer frame
        end local 2 // int remaining
        end local 1 // java.nio.ByteBuffer payload
        end local 0 // jdk.incubator.http.internal.websocket.Frame$Opcode opcode
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0     opcode  Ljdk/incubator/http/internal/websocket/Frame$Opcode;
            0   17     1    payload  Ljava/nio/ByteBuffer;
            2   17     2  remaining  I
            7   17     3      frame  Ljava/nio/ByteBuffer;
            8   17     4       mask  I
    MethodParameters:
         Name  Flags
      opcode   
      payload  

  private static java.nio.ByteBuffer[] getDataMessageBuffers(jdk.incubator.http.internal.websocket.Frame$Opcode, boolean, boolean, java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljdk/incubator/http/internal/websocket/Frame$Opcode;ZZLjava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)[Ljava/nio/ByteBuffer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // jdk.incubator.http.internal.websocket.Frame$Opcode type
        start local 1 // boolean isPreviousLast
        start local 2 // boolean isLast
        start local 3 // java.nio.ByteBuffer payloadSrc
        start local 4 // java.nio.ByteBuffer payloadDst
         0: .line 237
            getstatic jdk.incubator.http.internal.websocket.OutgoingMessage.$assertionsDisabled:Z
            ifne 2
            aload 0 /* type */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$Opcode.isControl:()Z
            ifne 1
            aload 0 /* type */
            getstatic jdk.incubator.http.internal.websocket.Frame$Opcode.CONTINUATION:Ljdk/incubator/http/internal/websocket/Frame$Opcode;
            if_acmpne 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            aload 0 /* type */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 238
      StackMap locals:
      StackMap stack:
            bipush 14
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 5 /* header */
        start local 5 // java.nio.ByteBuffer header
         3: .line 239
            getstatic jdk.incubator.http.internal.websocket.OutgoingMessage.maskingKeys:Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextInt:()I
            istore 6 /* mask */
        start local 6 // int mask
         4: .line 240
            new jdk.incubator.http.internal.websocket.Frame$HeaderWriter
            dup
            invokespecial jdk.incubator.http.internal.websocket.Frame$HeaderWriter.<init>:()V
         5: .line 241
            iload 2 /* isLast */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.fin:(Z)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
         6: .line 242
            iload 1 /* isPreviousLast */
            ifeq 7
            aload 0 /* type */
            goto 8
      StackMap locals: jdk.incubator.http.internal.websocket.Frame$Opcode int int java.nio.ByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int
      StackMap stack: jdk.incubator.http.internal.websocket.Frame$HeaderWriter
         7: getstatic jdk.incubator.http.internal.websocket.Frame$Opcode.CONTINUATION:Ljdk/incubator/http/internal/websocket/Frame$Opcode;
      StackMap locals: jdk.incubator.http.internal.websocket.Frame$Opcode int int java.nio.ByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int
      StackMap stack: jdk.incubator.http.internal.websocket.Frame$HeaderWriter jdk.incubator.http.internal.websocket.Frame$Opcode
         8: invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.opcode:(Ljdk/incubator/http/internal/websocket/Frame$Opcode;)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
         9: .line 243
            aload 4 /* payloadDst */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            i2l
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.payloadLen:(J)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        10: .line 244
            iload 6 /* mask */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.mask:(I)Ljdk/incubator/http/internal/websocket/Frame$HeaderWriter;
        11: .line 245
            aload 5 /* header */
            invokevirtual jdk.incubator.http.internal.websocket.Frame$HeaderWriter.write:(Ljava/nio/ByteBuffer;)V
        12: .line 246
            aload 5 /* header */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        13: .line 247
            aload 3 /* payloadSrc */
            aload 4 /* payloadDst */
            iload 6 /* mask */
            invokestatic jdk.incubator.http.internal.websocket.Frame$Masker.transferMasking:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;I)V
        14: .line 248
            aload 4 /* payloadDst */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        15: .line 249
            iconst_2
            anewarray java.nio.ByteBuffer
            dup
            iconst_0
            aload 5 /* header */
            aastore
            dup
            iconst_1
            aload 4 /* payloadDst */
            aastore
            areturn
        end local 6 // int mask
        end local 5 // java.nio.ByteBuffer header
        end local 4 // java.nio.ByteBuffer payloadDst
        end local 3 // java.nio.ByteBuffer payloadSrc
        end local 2 // boolean isLast
        end local 1 // boolean isPreviousLast
        end local 0 // jdk.incubator.http.internal.websocket.Frame$Opcode type
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0            type  Ljdk/incubator/http/internal/websocket/Frame$Opcode;
            0   16     1  isPreviousLast  Z
            0   16     2          isLast  Z
            0   16     3      payloadSrc  Ljava/nio/ByteBuffer;
            0   16     4      payloadDst  Ljava/nio/ByteBuffer;
            3   16     5          header  Ljava/nio/ByteBuffer;
            4   16     6            mask  I
    MethodParameters:
                Name  Flags
      type            
      isPreviousLast  
      isLast          
      payloadSrc      
      payloadDst      
}
SourceFile: "OutgoingMessage.java"
NestMembers:
  jdk.incubator.http.internal.websocket.OutgoingMessage$Binary  jdk.incubator.http.internal.websocket.OutgoingMessage$Close  jdk.incubator.http.internal.websocket.OutgoingMessage$Context  jdk.incubator.http.internal.websocket.OutgoingMessage$Ping  jdk.incubator.http.internal.websocket.OutgoingMessage$Pong  jdk.incubator.http.internal.websocket.OutgoingMessage$Text
InnerClasses:
  final HeaderWriter = jdk.incubator.http.internal.websocket.Frame$HeaderWriter of jdk.incubator.http.internal.websocket.Frame
  final Masker = jdk.incubator.http.internal.websocket.Frame$Masker of jdk.incubator.http.internal.websocket.Frame
  final Opcode = jdk.incubator.http.internal.websocket.Frame$Opcode of jdk.incubator.http.internal.websocket.Frame
  final Binary = jdk.incubator.http.internal.websocket.OutgoingMessage$Binary of jdk.incubator.http.internal.websocket.OutgoingMessage
  final Close = jdk.incubator.http.internal.websocket.OutgoingMessage$Close of jdk.incubator.http.internal.websocket.OutgoingMessage
  public Context = jdk.incubator.http.internal.websocket.OutgoingMessage$Context of jdk.incubator.http.internal.websocket.OutgoingMessage
  final Ping = jdk.incubator.http.internal.websocket.OutgoingMessage$Ping of jdk.incubator.http.internal.websocket.OutgoingMessage
  final Pong = jdk.incubator.http.internal.websocket.OutgoingMessage$Pong of jdk.incubator.http.internal.websocket.OutgoingMessage
  final Text = jdk.incubator.http.internal.websocket.OutgoingMessage$Text of jdk.incubator.http.internal.websocket.OutgoingMessage