docs: @Override
      public void handleMessage(final Channel channel, final DataInput input, final ManagementProtocolHeader header) throws IOException {
          final byte type = header.getType();
          if(type == ManagementProtocol.TYPE_RESPONSE) {
              // Handle response to local requests
              final ManagementResponseHeader response =  (ManagementResponseHeader) header;
              final ActiveRequest<?, ?> request = requests.remove(response.getResponseId());
              if(request == null) {
                  ProtocolLogger.CONNECTION_LOGGER.noSuchRequest(response.getResponseId(), channel);
                  safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(response.getResponseId()));
              } else if(response.getError() != null) {
                  request.handleFailed(response);
              } else {
                  handleRequest(channel, input, header, request);
              }
          } else {
              // Handle requests (or other messages)
              try {
                  final ManagementRequestHeader requestHeader = validateRequest(header);
                  final ManagementRequestHandler<?, ?> handler = getRequestHandler(requestHeader);
                  if(handler == null) {
                      safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(requestHeader.getBatchId()));
                  } else {
                      handleMessage(channel, input, requestHeader, handler);
                  }
              } catch (Exception e) {
                  safeWriteErrorResponse(channel, header, e);
              }
          }
      }