@Override
 public void unsubscribe(final Object listener) {
   logger.trace("Unsubscribing listener [{}] from event bus [{}]", listener, this);
   listeners.removeAll(
       new ListenerCollection.ListenerFilter() {
         @Override
         public boolean passes(ListenerCollection.Listener l) {
           return (l instanceof AbstractListenerWrapper)
               && (((AbstractListenerWrapper) l).getListenerTarget() == listener);
         }
       });
 }