docs: @Override
      public WsByteBuffer[] marshallBinaryFirstLine() {
          WsByteBuffer[] firstLine = new WsByteBuffer[1];
          firstLine[0] = allocateBuffer(getOutgoingBufferSize());
          byte[] data = null;
  
          // marshall the binary protocol version first
          firstLine = putByte(HttpInternalConstants.BINARY_TRANSPORT_V1, firstLine);
  
          if (getMethodValue().isUndefined()) {
              // unknown method....marshall (masked(len)+Str)
              data = this.myMethod.getByteArray();
              firstLine = putInt(data.length | GenericConstants.KNOWN_MASK, firstLine);
              firstLine = putBytes(data, firstLine);
          } else {
              // known method...marshall methodID
              firstLine = putInt(this.myMethod.getOrdinal(), firstLine);
          }
  
          // URI(len + str)
          byte[] uri = getResource();
          firstLine = putInt(uri.length, firstLine);
          firstLine = putBytes(uri, firstLine);
  
          if (getVersionValue().isUndefined()) {
              // unknown version....marshall (masked(len)+Str)
              data = getVersionValue().getByteArray();
              firstLine = putInt(data.length | GenericConstants.KNOWN_MASK, firstLine);
              firstLine = putBytes(data, firstLine);
          } else {
              // known version...marshall versionID
              firstLine = putInt(getVersionValue().getOrdinal(), firstLine);
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
              String url = GenericUtils.nullOutPasswords(getMarshalledSecondToken(), (byte) '&');
              Tr.event(tc, "Marshalling binary first line: " + getMethod() + " " + url + " " + getVersion());
          }
          // don't flip the last buffer as headers get tacked on the end
          return firstLine;
      }