code: public void publish(Event<?> event) {
          Set<Listener> interestedListeners = new HashSet<Listener>();
          synchronized (listeners) {
              addSupportedListenersToSet(listeners, interestedListeners, event);
          }
          synchronized (weakListeners) {
              addSupportedListenersToSet(weakListeners, interestedListeners, event);
          }
          if (interestedListeners.isEmpty()) {
              logger.debug("No listeners supported event [{}]", event);
          } else {
              for (Listener listener : interestedListeners) {
                  logger.trace("Publishing event [{}] to listener [{}]", event, listener);
                  listener.publish(event);
              }
          }
      }
docs: Publishes the specified {@code event} to all
  {@link org.vaadin.spring.events.internal.ListenerCollection.Listener}s that support it.
  
  @param event the event to publish, never {@code null}.
  @see org.vaadin.spring.events.internal.ListenerCollection.Listener#publish(org.vaadin.spring.events.Event)
  @see org.vaadin.spring.events.internal.ListenerCollection.Listener#supports(org.vaadin.spring.events.Event)