public void fireEvent(Event event) {
    if (event == null) throw new IllegalArgumentException("event == null");
    Set<Listener> set = listeners.get(event.getId());

    if (set != null) {
      for (Listener l : set.toArray(new Listener[set.size()])) {
        l.eventOccured(event);
      }
    }
  }