code: public void add(EventQueueEntry entry) {
  		List<EventQueueEntry> container = queue.get(entry.getPriority());
  		if (container == null) {
  			// we'll need to synchronize on the inner list, but the outer list
  			// should be safe
  			// multiple threads calling add(), remove(), and push() should only
  			// cause waits as they operate on the inner lists
  			container = Collections.synchronizedList(
  					new LinkedList<EventQueueEntry>());
  			queue.put(entry.getPriority(), container);
  		}
  		
  		container.add(entry);
  	}
docs: Registers the given entry for events. This may cause minor blocking on
  priority-specific lists when used concurrently with
  {@link #remove(EventQueueEntry)}, {@link #removeAll(Object)}, and
  {@link #push(Event)}.
  @param entry the entry to add to the notification queue