final class okhttp3.internal.ws.WebSocketWriter
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: okhttp3.internal.ws.WebSocketWriter
  super_class: java.lang.Object
{
  final boolean isClient;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final java.util.Random random;
    descriptor: Ljava/util/Random;
    flags: (0x0010) ACC_FINAL

  final okio.BufferedSink sink;
    descriptor: Lokio/BufferedSink;
    flags: (0x0010) ACC_FINAL

  final okio.Buffer sinkBuffer;
    descriptor: Lokio/Buffer;
    flags: (0x0010) ACC_FINAL

  boolean writerClosed;
    descriptor: Z
    flags: (0x0000) 

  final okio.Buffer buffer;
    descriptor: Lokio/Buffer;
    flags: (0x0010) ACC_FINAL

  final okhttp3.internal.ws.WebSocketWriter$FrameSink frameSink;
    descriptor: Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
    flags: (0x0010) ACC_FINAL

  boolean activeWriter;
    descriptor: Z
    flags: (0x0000) 

  private final byte[] maskKey;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final okio.Buffer$UnsafeCursor maskCursor;
    descriptor: Lokio/Buffer$UnsafeCursor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(boolean, okio.BufferedSink, java.util.Random);
    descriptor: (ZLokio/BufferedSink;Ljava/util/Random;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // boolean isClient
        start local 2 // okio.BufferedSink sink
        start local 3 // java.util.Random random
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            new okio.Buffer
            dup
            invokespecial okio.Buffer.<init>:()V
            putfield okhttp3.internal.ws.WebSocketWriter.buffer:Lokio/Buffer;
         2: .line 54
            aload 0 /* this */
            new okhttp3.internal.ws.WebSocketWriter$FrameSink
            dup
            aload 0 /* this */
            invokespecial okhttp3.internal.ws.WebSocketWriter$FrameSink.<init>:(Lokhttp3/internal/ws/WebSocketWriter;)V
            putfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
         3: .line 62
            aload 2 /* sink */
            ifnonnull 4
            new java.lang.NullPointerException
            dup
            ldc "sink == null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 63
      StackMap locals: okhttp3.internal.ws.WebSocketWriter int okio.BufferedSink java.util.Random
      StackMap stack:
            aload 3 /* random */
            ifnonnull 5
            new java.lang.NullPointerException
            dup
            ldc "random == null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* isClient */
            putfield okhttp3.internal.ws.WebSocketWriter.isClient:Z
         6: .line 65
            aload 0 /* this */
            aload 2 /* sink */
            putfield okhttp3.internal.ws.WebSocketWriter.sink:Lokio/BufferedSink;
         7: .line 66
            aload 0 /* this */
            aload 2 /* sink */
            invokeinterface okio.BufferedSink.buffer:()Lokio/Buffer;
            putfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
         8: .line 67
            aload 0 /* this */
            aload 3 /* random */
            putfield okhttp3.internal.ws.WebSocketWriter.random:Ljava/util/Random;
         9: .line 70
            aload 0 /* this */
            iload 1 /* isClient */
            ifeq 10
            iconst_4
            newarray 8
            goto 11
      StackMap locals:
      StackMap stack: okhttp3.internal.ws.WebSocketWriter
        10: aconst_null
      StackMap locals: okhttp3.internal.ws.WebSocketWriter int okio.BufferedSink java.util.Random
      StackMap stack: okhttp3.internal.ws.WebSocketWriter byte[]
        11: putfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
        12: .line 71
            aload 0 /* this */
            iload 1 /* isClient */
            ifeq 13
            new okio.Buffer$UnsafeCursor
            dup
            invokespecial okio.Buffer$UnsafeCursor.<init>:()V
            goto 14
      StackMap locals:
      StackMap stack: okhttp3.internal.ws.WebSocketWriter
        13: aconst_null
      StackMap locals: okhttp3.internal.ws.WebSocketWriter int okio.BufferedSink java.util.Random
      StackMap stack: okhttp3.internal.ws.WebSocketWriter okio.Buffer$UnsafeCursor
        14: putfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
        15: .line 72
            return
        end local 3 // java.util.Random random
        end local 2 // okio.BufferedSink sink
        end local 1 // boolean isClient
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lokhttp3/internal/ws/WebSocketWriter;
            0   16     1  isClient  Z
            0   16     2      sink  Lokio/BufferedSink;
            0   16     3    random  Ljava/util/Random;
    MethodParameters:
          Name  Flags
      isClient  
      sink      
      random    

  void writePing(okio.ByteString);
    descriptor: (Lokio/ByteString;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // okio.ByteString payload
         0: .line 76
            aload 0 /* this */
            bipush 9
            aload 1 /* payload */
            invokevirtual okhttp3.internal.ws.WebSocketWriter.writeControlFrame:(ILokio/ByteString;)V
         1: .line 77
            return
        end local 1 // okio.ByteString payload
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lokhttp3/internal/ws/WebSocketWriter;
            0    2     1  payload  Lokio/ByteString;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      payload  

  void writePong(okio.ByteString);
    descriptor: (Lokio/ByteString;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // okio.ByteString payload
         0: .line 81
            aload 0 /* this */
            bipush 10
            aload 1 /* payload */
            invokevirtual okhttp3.internal.ws.WebSocketWriter.writeControlFrame:(ILokio/ByteString;)V
         1: .line 82
            return
        end local 1 // okio.ByteString payload
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lokhttp3/internal/ws/WebSocketWriter;
            0    2     1  payload  Lokio/ByteString;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      payload  

  void writeClose(int, okio.ByteString);
    descriptor: (ILokio/ByteString;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // int code
        start local 2 // okio.ByteString reason
         0: .line 92
            getstatic okio.ByteString.EMPTY:Lokio/ByteString;
            astore 3 /* payload */
        start local 3 // okio.ByteString payload
         1: .line 93
            iload 1 /* code */
            ifne 2
            aload 2 /* reason */
            ifnull 9
         2: .line 94
      StackMap locals: okio.ByteString
      StackMap stack:
            iload 1 /* code */
            ifeq 4
         3: .line 95
            iload 1 /* code */
            invokestatic okhttp3.internal.ws.WebSocketProtocol.validateCloseCode:(I)V
         4: .line 97
      StackMap locals:
      StackMap stack:
            new okio.Buffer
            dup
            invokespecial okio.Buffer.<init>:()V
            astore 4 /* buffer */
        start local 4 // okio.Buffer buffer
         5: .line 98
            aload 4 /* buffer */
            iload 1 /* code */
            invokevirtual okio.Buffer.writeShort:(I)Lokio/Buffer;
            pop
         6: .line 99
            aload 2 /* reason */
            ifnull 8
         7: .line 100
            aload 4 /* buffer */
            aload 2 /* reason */
            invokevirtual okio.Buffer.write:(Lokio/ByteString;)Lokio/Buffer;
            pop
         8: .line 102
      StackMap locals: okio.Buffer
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual okio.Buffer.readByteString:()Lokio/ByteString;
            astore 3 /* payload */
        end local 4 // okio.Buffer buffer
         9: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 8
            aload 3 /* payload */
            invokevirtual okhttp3.internal.ws.WebSocketWriter.writeControlFrame:(ILokio/ByteString;)V
        10: .line 107
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 4
        12: .line 108
            aload 0 /* this */
            iconst_1
            putfield okhttp3.internal.ws.WebSocketWriter.writerClosed:Z
        13: .line 109
            aload 4
            athrow
        14: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield okhttp3.internal.ws.WebSocketWriter.writerClosed:Z
        15: .line 110
            return
        end local 3 // okio.ByteString payload
        end local 2 // okio.ByteString reason
        end local 1 // int code
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lokhttp3/internal/ws/WebSocketWriter;
            0   16     1     code  I
            0   16     2   reason  Lokio/ByteString;
            1   16     3  payload  Lokio/ByteString;
            5    9     4   buffer  Lokio/Buffer;
      Exception table:
        from    to  target  type
           9    11      11  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      code    
      reason  

  private void writeControlFrame(int, okio.ByteString);
    descriptor: (ILokio/ByteString;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // int opcode
        start local 2 // okio.ByteString payload
         0: .line 113
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.writerClosed:Z
            ifeq 1
            new java.io.IOException
            dup
            ldc "closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         1: .line 115
      StackMap locals:
      StackMap stack:
            aload 2 /* payload */
            invokevirtual okio.ByteString.size:()I
            istore 3 /* length */
        start local 3 // int length
         2: .line 116
            iload 3 /* length */
            i2l
            ldc 125
            lcmp
            ifle 6
         3: .line 117
            new java.lang.IllegalArgumentException
            dup
         4: .line 118
            ldc "Payload size must be less than or equal to 125"
         5: .line 117
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 121
      StackMap locals: int
      StackMap stack:
            sipush 128
            iload 1 /* opcode */
            ior
            istore 4 /* b0 */
        start local 4 // int b0
         7: .line 122
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 4 /* b0 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
         8: .line 124
            iload 3 /* length */
            istore 5 /* b1 */
        start local 5 // int b1
         9: .line 125
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.isClient:Z
            ifeq 22
        10: .line 126
            iload 5 /* b1 */
            sipush 128
            ior
            istore 5 /* b1 */
        11: .line 127
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 5 /* b1 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
        12: .line 129
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.random:Ljava/util/Random;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokevirtual java.util.Random.nextBytes:([B)V
        13: .line 130
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokevirtual okio.Buffer.write:([B)Lokio/Buffer;
            pop
        14: .line 132
            iload 3 /* length */
            ifle 24
        15: .line 133
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            invokevirtual okio.Buffer.size:()J
            lstore 6 /* payloadStart */
        start local 6 // long payloadStart
        16: .line 134
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 2 /* payload */
            invokevirtual okio.Buffer.write:(Lokio/ByteString;)Lokio/Buffer;
            pop
        17: .line 136
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            invokevirtual okio.Buffer.readAndWriteUnsafe:(Lokio/Buffer$UnsafeCursor;)Lokio/Buffer$UnsafeCursor;
            pop
        18: .line 137
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            lload 6 /* payloadStart */
            invokevirtual okio.Buffer$UnsafeCursor.seek:(J)I
            pop
        19: .line 138
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokestatic okhttp3.internal.ws.WebSocketProtocol.toggleMask:(Lokio/Buffer$UnsafeCursor;[B)V
        20: .line 139
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            invokevirtual okio.Buffer$UnsafeCursor.close:()V
        end local 6 // long payloadStart
        21: .line 141
            goto 24
        22: .line 142
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 5 /* b1 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
        23: .line 143
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 2 /* payload */
            invokevirtual okio.Buffer.write:(Lokio/ByteString;)Lokio/Buffer;
            pop
        24: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sink:Lokio/BufferedSink;
            invokeinterface okio.BufferedSink.flush:()V
        25: .line 147
            return
        end local 5 // int b1
        end local 4 // int b0
        end local 3 // int length
        end local 2 // okio.ByteString payload
        end local 1 // int opcode
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   26     0          this  Lokhttp3/internal/ws/WebSocketWriter;
            0   26     1        opcode  I
            0   26     2       payload  Lokio/ByteString;
            2   26     3        length  I
            7   26     4            b0  I
            9   26     5            b1  I
           16   21     6  payloadStart  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      opcode   
      payload  

  okio.Sink newMessageSink(int, long);
    descriptor: (IJ)Lokio/Sink;
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // int formatOpcode
        start local 2 // long contentLength
         0: .line 154
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.activeWriter:Z
            ifeq 2
         1: .line 155
            new java.lang.IllegalStateException
            dup
            ldc "Another message writer is active. Did you call close()?"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield okhttp3.internal.ws.WebSocketWriter.activeWriter:Z
         3: .line 160
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
            iload 1 /* formatOpcode */
            putfield okhttp3.internal.ws.WebSocketWriter$FrameSink.formatOpcode:I
         4: .line 161
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
            lload 2 /* contentLength */
            putfield okhttp3.internal.ws.WebSocketWriter$FrameSink.contentLength:J
         5: .line 162
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
            iconst_1
            putfield okhttp3.internal.ws.WebSocketWriter$FrameSink.isFirstFrame:Z
         6: .line 163
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
            iconst_0
            putfield okhttp3.internal.ws.WebSocketWriter$FrameSink.closed:Z
         7: .line 165
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
            areturn
        end local 2 // long contentLength
        end local 1 // int formatOpcode
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lokhttp3/internal/ws/WebSocketWriter;
            0    8     1   formatOpcode  I
            0    8     2  contentLength  J
    MethodParameters:
               Name  Flags
      formatOpcode   
      contentLength  

  void writeMessageFrame(int, long, boolean, boolean);
    descriptor: (IJZZ)V
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=5
        start local 0 // okhttp3.internal.ws.WebSocketWriter this
        start local 1 // int formatOpcode
        start local 2 // long byteCount
        start local 4 // boolean isFirstFrame
        start local 5 // boolean isFinal
         0: .line 170
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.writerClosed:Z
            ifeq 1
            new java.io.IOException
            dup
            ldc "closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         1: .line 172
      StackMap locals:
      StackMap stack:
            iload 4 /* isFirstFrame */
            ifeq 2
            iload 1 /* formatOpcode */
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 6 /* b0 */
        start local 6 // int b0
         4: .line 173
            iload 5 /* isFinal */
            ifeq 6
         5: .line 174
            iload 6 /* b0 */
            sipush 128
            ior
            istore 6 /* b0 */
         6: .line 176
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 6 /* b0 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
         7: .line 178
            iconst_0
            istore 7 /* b1 */
        start local 7 // int b1
         8: .line 179
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.isClient:Z
            ifeq 10
         9: .line 180
            iload 7 /* b1 */
            sipush 128
            ior
            istore 7 /* b1 */
        10: .line 182
      StackMap locals: int
      StackMap stack:
            lload 2 /* byteCount */
            ldc 125
            lcmp
            ifgt 14
        11: .line 183
            iload 7 /* b1 */
            lload 2 /* byteCount */
            l2i
            ior
            istore 7 /* b1 */
        12: .line 184
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 7 /* b1 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
        13: .line 185
            goto 22
      StackMap locals:
      StackMap stack:
        14: lload 2 /* byteCount */
            ldc 65535
            lcmp
            ifgt 19
        15: .line 186
            iload 7 /* b1 */
            bipush 126
            ior
            istore 7 /* b1 */
        16: .line 187
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 7 /* b1 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
        17: .line 188
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            lload 2 /* byteCount */
            l2i
            invokevirtual okio.Buffer.writeShort:(I)Lokio/Buffer;
            pop
        18: .line 189
            goto 22
        19: .line 190
      StackMap locals:
      StackMap stack:
            iload 7 /* b1 */
            bipush 127
            ior
            istore 7 /* b1 */
        20: .line 191
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            iload 7 /* b1 */
            invokevirtual okio.Buffer.writeByte:(I)Lokio/Buffer;
            pop
        21: .line 192
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            lload 2 /* byteCount */
            invokevirtual okio.Buffer.writeLong:(J)Lokio/Buffer;
            pop
        22: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.isClient:Z
            ifeq 33
        23: .line 196
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.random:Ljava/util/Random;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokevirtual java.util.Random.nextBytes:([B)V
        24: .line 197
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokevirtual okio.Buffer.write:([B)Lokio/Buffer;
            pop
        25: .line 199
            lload 2 /* byteCount */
            lconst_0
            lcmp
            ifle 34
        26: .line 200
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            invokevirtual okio.Buffer.size:()J
            lstore 8 /* bufferStart */
        start local 8 // long bufferStart
        27: .line 201
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.buffer:Lokio/Buffer;
            lload 2 /* byteCount */
            invokevirtual okio.Buffer.write:(Lokio/Buffer;J)V
        28: .line 203
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            invokevirtual okio.Buffer.readAndWriteUnsafe:(Lokio/Buffer$UnsafeCursor;)Lokio/Buffer$UnsafeCursor;
            pop
        29: .line 204
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            lload 8 /* bufferStart */
            invokevirtual okio.Buffer$UnsafeCursor.seek:(J)I
            pop
        30: .line 205
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskKey:[B
            invokestatic okhttp3.internal.ws.WebSocketProtocol.toggleMask:(Lokio/Buffer$UnsafeCursor;[B)V
        31: .line 206
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.maskCursor:Lokio/Buffer$UnsafeCursor;
            invokevirtual okio.Buffer$UnsafeCursor.close:()V
        end local 8 // long bufferStart
        32: .line 208
            goto 34
        33: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sinkBuffer:Lokio/Buffer;
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.buffer:Lokio/Buffer;
            lload 2 /* byteCount */
            invokevirtual okio.Buffer.write:(Lokio/Buffer;J)V
        34: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield okhttp3.internal.ws.WebSocketWriter.sink:Lokio/BufferedSink;
            invokeinterface okio.BufferedSink.emit:()Lokio/BufferedSink;
            pop
        35: .line 213
            return
        end local 7 // int b1
        end local 6 // int b0
        end local 5 // boolean isFinal
        end local 4 // boolean isFirstFrame
        end local 2 // long byteCount
        end local 1 // int formatOpcode
        end local 0 // okhttp3.internal.ws.WebSocketWriter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   36     0          this  Lokhttp3/internal/ws/WebSocketWriter;
            0   36     1  formatOpcode  I
            0   36     2     byteCount  J
            0   36     4  isFirstFrame  Z
            0   36     5       isFinal  Z
            4   36     6            b0  I
            8   36     7            b1  I
           27   32     8   bufferStart  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      formatOpcode  
      byteCount     
      isFirstFrame  
      isFinal       
}
SourceFile: "WebSocketWriter.java"
NestMembers:
  okhttp3.internal.ws.WebSocketWriter$FrameSink
InnerClasses:
  final FrameSink = okhttp3.internal.ws.WebSocketWriter$FrameSink of okhttp3.internal.ws.WebSocketWriter
  public final UnsafeCursor = okio.Buffer$UnsafeCursor of okio.Buffer