private void registerClusterListenerCallablesToInstall(
     Set<Object> enlistedAlready,
     Set<DistributedCallable> callables,
     List<CacheEntryListenerInvocation<K, V>> listenerInvocations) {
   for (CacheEntryListenerInvocation<K, V> listener : listenerInvocations) {
     if (!enlistedAlready.contains(listener.getTarget())) {
       // If clustered means it is local - so use our address
       if (listener.isClustered()) {
         callables.add(
             new ClusterListenerReplicateCallable(
                 listener.getIdentifier(),
                 cache.getCacheManager().getAddress(),
                 listener.getFilter(),
                 listener.getConverter(),
                 listener.isSync()));
         enlistedAlready.add(listener.getTarget());
       } else if (listener.getTarget() instanceof RemoteClusterListener) {
         RemoteClusterListener lcl = (RemoteClusterListener) listener.getTarget();
         callables.add(
             new ClusterListenerReplicateCallable(
                 lcl.getId(),
                 lcl.getOwnerAddress(),
                 listener.getFilter(),
                 listener.getConverter(),
                 listener.isSync()));
         enlistedAlready.add(listener.getTarget());
       }
     }
   }
 }