code: @Override
    public void onNext(final T event) {
      LOG.log(Level.FINEST, "Invoked for event: {0}", event);
      lock.readLock().lock();
      final List<EventHandler<? extends T>> list;
      try {
        list = clazzToListOfHandlersMap.get(event.getClass());
        if (list == null) {
          throw new WakeRuntimeException("No event " + event.getClass() + " handler");
        }
        for (final EventHandler<? extends T> handler : list) {
          LOG.log(Level.FINEST, "Invoking {0}", handler);
          ((EventHandler<T>) handler).onNext(event);
        }
      } finally {
        lock.readLock().unlock();
      }
    }
docs: Invokes subscribed handlers for the event class type.
  
  @param event an event
  @throws WakeRuntimeException