public <C> void addListener(Object listener, KeyValueFilter<? super K, ? super V> filter,
Converter<? super K, ? super V, C> converter, ClassLoader classLoader) {
Listener l = testListenerClassValidity(listener.getClass());
UUID generatedId = UUID.randomUUID();
CacheInvocationBuilder builder = new CacheInvocationBuilder();
builder.setClustered(l.clustered()).setOnlyPrimary(l.clustered() ? true : l.primaryOnly()).setFilter(filter).setConverter(converter)
.setIdentifier(generatedId).setIncludeCurrentState(l.includeCurrentState()).setClassLoader(classLoader);
boolean foundMethods = validateAndAddListenerInvocation(listener, builder);
if (foundMethods && l.clustered()) {
if (config.clustering().cacheMode().isInvalidation()) {