@Override
	public void update() {
		
		fireTimedEvents();
		
		do {
			List<Event> events = this.currentEvents;
			swapEventList();
			for (Event event : events) {
				fireEvent(event);
				event.release();
			}
			events.clear();
		} while (this.fastEventDispatch && !this.currentEvents.isEmpty());
	}