docs: synchronized void addListener(final AbstractEventListener<?> listener) {
          if (null == listener) {
              throw new NullPointerException();
          }
  
          final String eventType = listener.getEventType();
          if (null == eventType) {
              throw new NullPointerException();
          }
  
          List<AbstractEventListener<?>> listenerList = listeners.get(eventType);
          if (null == listenerList) {
              listenerList = new ArrayList<>();
              listeners.put(eventType, listenerList);
          }
  
          listenerList.add(listener);
      }