docs: protected void fireEventHandler(List<I_CmsEventListener> listeners, CmsEvent event) {
  
          if (!LOG.isDebugEnabled()) {
              // no logging required
              if ((listeners != null) && (listeners.size() > 0)) {
                  // handle all event listeners that listen to this event type
                  I_CmsEventListener[] list = listeners.toArray(EVENT_LIST);
                  // loop through all registered event listeners
                  for (int i = 0; i < list.length; i++) {
                      try {
                          // fire the event
                          list[i].cmsEvent(event);
                      } catch (Throwable t) {
                          LOG.error(
                              Messages.get().getBundle().key(
                                  Messages.ERR_CALLING_EVENT_LISTENER_FAILED_2,
                                  list[i].getClass().getName(),
                                  event.toString()),
                              t);
                      }
                  }
              }
          } else {
              // add lots of event debug output (this should usually be disabled)
              // repeat event handling code to avoid multiple "is log enabled" checks in normal operation
              LOG.debug(Messages.get().getBundle().key(Messages.LOG_DEBUG_EVENT_1, event.toString()));
              if ((listeners != null) && (listeners.size() > 0)) {
                  // handle all event listeners that listen to this event type
                  I_CmsEventListener[] list = listeners.toArray(EVENT_LIST);
                  // log the event data
                  if (event.getData() != null) {
                      Iterator<String> i = event.getData().keySet().iterator();
                      while (i.hasNext()) {
                          String key = i.next();
                          Object value = event.getData().get(key);
                          LOG.debug(
                              Messages.get().getBundle().key(
                                  Messages.LOG_DEBUG_EVENT_VALUE_3,
                                  key,
                                  value,
                                  event.toString()));
                      }
                  } else {
                      LOG.debug(Messages.get().getBundle().key(Messages.LOG_DEBUG_NO_EVENT_VALUE_1, event.toString()));
                  }
                  // log all the registered event listeners
                  for (int j = 0; j < list.length; j++) {
                      LOG.debug(
                          Messages.get().getBundle().key(
                              Messages.LOG_DEBUG_EVENT_LISTENERS_3,
                              list[j],
                              new Integer(j),
                              event.toString()));
                  }
                  // loop through all registered event listeners
                  for (int i = 0; i < list.length; i++) {
                      LOG.debug(
                          Messages.get().getBundle().key(
                              Messages.LOG_DEBUG_EVENT_START_LISTENER_3,
                              list[i],
                              new Integer(i),
                              event.toString()));
                      try {
                          // fire the event
                          list[i].cmsEvent(event);
                      } catch (Throwable t) {
                          LOG.error(
                              Messages.get().getBundle().key(
                                  Messages.ERR_CALLING_EVENT_LISTENER_FAILED_2,
                                  list[i].getClass().getName(),
                                  event.toString()),
                              t);
                      }
                      LOG.debug(
                          Messages.get().getBundle().key(
                              Messages.LOG_DEBUG_EVENT_END_LISTENER_3,
                              list[i],
                              new Integer(i),
                              event.toString()));
                  }
              } else {
                  LOG.debug(Messages.get().getBundle().key(Messages.LOG_DEBUG_EVENT_NO_LISTENER_1, event.toString()));
              }
              LOG.debug(Messages.get().getBundle().key(Messages.LOG_DEBUG_EVENT_COMPLETE_1, event.toString()));
          }
      }