code: private FullBinaryMemcacheRequest helloRequest(int connId) throws Exception {
          byte[] key = generateAgentJson(
              ctx.environment().userAgent(),
              ctx.coreId(),
              connId
          );
          short keyLength = (short) key.length;
  
          ByteBuf wanted = Unpooled.buffer(features.size() * 2);
          for (ServerFeatures feature : features) {
              wanted.writeShort(feature.value());
          }
  
          LOGGER.debug("Requesting supported features: {}", features);
          FullBinaryMemcacheRequest request = new DefaultFullBinaryMemcacheRequest(key, Unpooled.EMPTY_BUFFER, wanted);
          request.setOpcode(HELLO_CMD);
          request.setKeyLength(keyLength);
          request.setTotalBodyLength(keyLength + wanted.readableBytes());
          return request;
      }
docs: Creates the HELLO request to ask for certain supported features.
  
  @param connId the connection id
  @return the request to send over the wire