docs: private void handlePacket(SelectableChannel channel, IncomingPacket incomingPacket) {
      String typeName = incomingPacket.unpackString();
      REQID rid = incomingPacket.unpackREQID();
      Message.Builder bldr = requestMap.get(typeName);
      boolean isRequest = false;
      if (bldr != null) {
        // This is a request
        isRequest = true;
      } else {
        bldr = messageMap.get(typeName);
      }
      if (bldr != null) {
        // Clear the earlier state of Message.Builder
        // Otherwise it would merge new Message with old state
        bldr.clear();
  
        incomingPacket.unpackMessage(bldr);
        if (bldr.isInitialized()) {
          Message msg = bldr.build();
          if (isRequest) {
            onRequest(rid, (SocketChannel) channel, msg);
          } else {
            onMessage((SocketChannel) channel, msg);
          }
        } else {
          // Message failed to be deser
          LOG.severe("Could not deserialize protobuf of type " + typeName);
          handleError(channel);
        }
        return;
      } else {
        LOG.severe("Unexpected protobuf type received " + typeName);
        handleError(channel);
      }
    }