docs: public <T> DefaultSerializationProviderConfiguration addSerializerFor(Class<T> serializableClass, Class<? extends Serializer<T>> serializerClass, boolean overwrite) {
      if (serializableClass == null) {
        throw new NullPointerException("Serializable class cannot be null");
      }
      if (serializerClass == null) {
        throw new NullPointerException("Serializer class cannot be null");
      }
  
      if(!isConstructorPresent(serializerClass, ClassLoader.class)) {
        throw new IllegalArgumentException("The serializer: " + serializerClass.getName() + " does not have a constructor that takes in a ClassLoader.");
      }
  
      if (isConstructorPresent(serializerClass, ClassLoader.class, FileBasedPersistenceContext.class)) {
        LOGGER.warn(serializerClass.getName() + " class has a constructor that takes in a FileBasedPersistenceContext. " +
                    "Support for this constructor has been removed since version 3.2. Consider removing it.");
      }
  
      if (defaultSerializers.containsKey(serializableClass) && !overwrite) {
        throw new IllegalArgumentException("Duplicate serializer for class : " + serializableClass.getName());
      } else {
        defaultSerializers.put(serializableClass, serializerClass);
      }
  
      return this;
    }