protected Object getRealSubscriberAndCleanStaleSubscriberIfNecessary(Iterator iterator, Object existingSubscriber) {
      ProxySubscriber existingProxySubscriber = null;
      if (existingSubscriber instanceof WeakReference) {
         existingSubscriber = ((WeakReference) existingSubscriber).get();
         if (existingSubscriber == null) {
            iterator.remove();
            decWeakRefPlusProxySubscriberCount();
         }         
      }
      if (existingSubscriber instanceof ProxySubscriber) {
         existingProxySubscriber = (ProxySubscriber) existingSubscriber;
         existingSubscriber = existingProxySubscriber.getProxiedSubscriber();
         if (existingProxySubscriber == null) {
            removeProxySubscriber(existingProxySubscriber, iterator);
         }
      }
      return existingSubscriber;
   }