code: @Override
    public T decode(final byte[] data) {
      final WakeTuplePBuf tuple;
      try {
        tuple = WakeTuplePBuf.parseFrom(data);
      } catch (final InvalidProtocolBufferException e) {
        e.printStackTrace();
        throw new RemoteRuntimeException(e);
      }
  
      final String className = tuple.getClassName();
      final byte[] message = tuple.getData().toByteArray();
      final Class<?> clazz;
      try {
        clazz = Class.forName(className);
      } catch (final ClassNotFoundException e) {
        e.printStackTrace();
        throw new RemoteRuntimeException(e);
      }
      return clazzToDecoderMap.get(clazz).decode(message);
    }
docs: Decodes byte array.
  
  @param data class name and byte payload