@Override
   public boolean equals(Object obj) {
      if (obj instanceof AbstractProxySubscriber) {
         AbstractProxySubscriber bps = (AbstractProxySubscriber) obj;
         if (referenceStrength != bps.referenceStrength) {
            return false;
         }
         if (subscriptionMethod != bps.subscriptionMethod) {
            return false;
         }
         if (ReferenceStrength.WEAK == referenceStrength) {
            if (((WeakReference)proxiedSubscriber).get() != ((WeakReference)bps.proxiedSubscriber).get()) {
               return false;
            }            
         } else {
            if (proxiedSubscriber != bps.proxiedSubscriber) {
               return false;
            }
         }
         if (veto != bps.veto) {
            return false;
         }
         if (eventService != bps.eventService) {
            return false;
         }
         return true;
      } else {
         return false;
      }
   }