code: @Override
      public T deserialize(String messageJson) {
          VersionedMessage<T> versionedMessage = gson.fromJson(messageJson, versionedMessageType);
  
          // older style messages not wrapped with VersionedMessage
          if (versionedMessage.getVersion() == null) {
              Type t = ((ParameterizedType) versionedMessageType).getActualTypeArguments()[0];
              versionedMessage = new VersionedMessage<>(MessageVersion.NO_VERSION, gson.<T>fromJson(messageJson, t));
          }
          checkVersion(versionedMessage, messageJson);
  
          return versionedMessage.getMessage();
      }
docs: ----- MessageDeserializer ---------------------------------------------