anchor.diff:            if (_masked) {
               _unmask(index, payloadLength, buffer);
             }
  -          // Control frame and data frame share _payload builder.
  -          _payload.add(new Uint8List.view(buffer.buffer, index, payloadLength));
  +          // Control frame and data frame share _payloads.
  +          _payloads.add(
  +              new Uint8List.view(buffer.buffer, index, payloadLength));
             index += payloadLength;
             if (_isControlFrame()) {
               if (_remainingPayloadBytes == 0) _controlFrameEnd();
  
positive.code:     switch (_opcode) {
        case _WebSocketOpcode.CLOSE:
          closeCode = WebSocketStatus.NO_STATUS_RECEIVED;
          if (_payload.length > 0) {
            var bytes = _payload.takeBytes();
            if (bytes.length == 1) {
              throw new WebSocketException("Protocol error");
            }
            closeCode = bytes[0] << 8 | bytes[1];
            if (closeCode == WebSocketStatus.NO_STATUS_RECEIVED) {
              throw new WebSocketException("Protocol error");
            }
            if (bytes.length > 2) {
              closeReason = UTF8.decode(bytes.sublist(2));
            }
          }
          _state = CLOSED;
  
negative.code:         break;
  
        case _WebSocketOpcode.PING:
          _eventSink.add(new _WebSocketPing(_takePayload()));
          break;
  
        case _WebSocketOpcode.PONG:
          _eventSink.add(new _WebSocketPong(_takePayload()));
          break;
      }
      _prepareForNextFrame();
  