public void fireWaitingEvents() {
		synchronized (waitingEventLists) {
			for (Entry<MouseEventType, Collection<IMouseEventable>> kvp : waitingEventLists.entrySet()) {
				for (IMouseEventable eventableObject : kvp.getValue()) {
					kvp.getKey().fireEvent(eventableObject);
				}
			}

			// Clear all of the waiting event lists as we have just fired them
			for (Collection<IMouseEventable> eventHolderList : waitingEventLists.values()) {
				eventHolderList.clear();
			}
		}
	}