docs: public CacheConfigurationBuilder<K, V> add(ServiceConfiguration<?> configuration) {
      CacheConfigurationBuilder<K, V> otherBuilder = new CacheConfigurationBuilder<>(this);
  
      if (getExistingServiceConfiguration(configuration.getClass()) != null) {
        if (configuration instanceof DefaultCopierConfiguration) {
          DefaultCopierConfiguration<?> copierConfiguration = (DefaultCopierConfiguration<?>) configuration;
          otherBuilder.removeExistingCopierConfigFor(copierConfiguration.getType());
        } else if (configuration instanceof DefaultSerializerConfiguration) {
          DefaultSerializerConfiguration<?> serializerConfiguration = (DefaultSerializerConfiguration<?>) configuration;
          otherBuilder.removeExistingSerializerConfigFor(serializerConfiguration.getType());
        } else if (!(configuration instanceof DefaultCacheEventListenerConfiguration)) {
          throw new IllegalStateException("Cannot add a generic service configuration when another one already exists. " +
                                          "Rely on specific with* methods or make sure your remove other configuration first.");
        }
      }
      otherBuilder.serviceConfigurations.add(configuration);
      return otherBuilder;
    }