Source:
<code>public void start() { channelFactory = new ChannelFactory(); if (marshaller == null) { marshaller = configuration.marshaller(); if (marshaller == null) { Class<? extends Marshaller> clazz = configuration.marshallerClass(); if (!configuration.serialWhitelist().isEmpty()) { <START> marshaller = Util.newInstanceOrNull(clazz, configuration.getClassWhiteList()); <END> } if (marshaller == null) { marshaller = Util.getInstance(clazz); } } } marshallerRegistry.registerMarshaller(BytesOnlyJBossLikeMarshaller.INSTANCE); marshallerRegistry.registerMarshaller(BytesOnlyMarshaller.INSTANCE); marshallerRegistry.registerMarshaller(new UTF8StringMarshaller()); marshallerRegistry.registerMarshaller(marshaller); codec = CodecFactory.getCodec(configuration.version()); listenerNotifier = new ClientListenerNotifier(codec, marshaller, channelFactory, configuration.getClassWhiteList()); ExecutorFactory executorFactory = configuration.asyncExecutorFactory().factory(); if (executorFactory == null) { executorFactory = Util.getInstance(configuration.asyncExecutorFactory().factoryClass()); } ExecutorService asyncExecutorService = executorFactory.getExecutor(configuration.asyncExecutorFactory().properties()); channelFactory.start(codec, configuration, defaultCacheTopologyId, marshaller, asyncExecutorService, listenerNotifier, Collections.singletonList(listenerNotifier::failoverListeners), marshallerRegistry); counterManager.start(channelFactory, codec, configuration, listenerNotifier); synchronized (cacheName2RemoteCache) { for (RemoteCacheHolder rcc : cacheName2RemoteCache.values()) { startRemoteCache(rcc); } } log.version(RemoteCacheManager.class.getPackage().getImplementationVersion()); warnAboutUberJarDuplicates(); started = true; }</code><technical_language>+1 rethrow exceptions. a bit concerned constructor is selected multiple overloads regular Java resolution, WDYT newInstanceOrNull(clazz, new Class[]{ClassWhiteList.class}, configuration.getClassWhiteList())</technical_language>

Target:
public void start() { channelFactory = new ChannelFactory(); if (marshaller == null) { marshaller = configuration.marshaller(); if (marshaller == null) { Class<? extends Marshaller> clazz = configuration.marshallerClass(); if (!configuration.serialWhitelist().isEmpty()) { marshaller = Util.newInstanceOrNull(clazz, new Class[] {ClassWhiteList.class}, configuration.getClassWhiteList()); } if (marshaller == null) { marshaller = Util.getInstance(clazz); } } } marshallerRegistry.registerMarshaller(BytesOnlyJBossLikeMarshaller.INSTANCE); marshallerRegistry.registerMarshaller(BytesOnlyMarshaller.INSTANCE); marshallerRegistry.registerMarshaller(new UTF8StringMarshaller()); marshallerRegistry.registerMarshaller(marshaller); codec = CodecFactory.getCodec(configuration.version()); listenerNotifier = new ClientListenerNotifier(codec, marshaller, channelFactory, configuration.getClassWhiteList()); ExecutorFactory executorFactory = configuration.asyncExecutorFactory().factory(); if (executorFactory == null) { executorFactory = Util.getInstance(configuration.asyncExecutorFactory().factoryClass()); } ExecutorService asyncExecutorService = executorFactory.getExecutor(configuration.asyncExecutorFactory().properties()); channelFactory.start(codec, configuration, defaultCacheTopologyId, marshaller, asyncExecutorService, listenerNotifier, Collections.singletonList(listenerNotifier::failoverListeners), marshallerRegistry); counterManager.start(channelFactory, codec, configuration, listenerNotifier); synchronized (cacheName2RemoteCache) { for (RemoteCacheHolder rcc : cacheName2RemoteCache.values()) { startRemoteCache(rcc); } } log.version(RemoteCacheManager.class.getPackage().getImplementationVersion()); warnAboutUberJarDuplicates(); started = true; }