code: public <E extends Event> void publish(E event) {
          if (!eventListenerMap.isEmpty()) {
              EventListener<E> eventListener = getEventListener(event);
              if (eventListener != null) {
                  eventListener.on(event);
              }
          }
      }
docs: Publish an {@link Event} to all listeners
  
  @param event event
  @param <E> Event generic type