public void dispatchEvent(CCEventObject e)
		{
			lock(this)
			{
				NSEvent evt = e.evt;
				Action<NSEvent> selector = e.selector;
				
				// Dispatch events
				if( _dispatchEvents ) {
					_locked = true;
					selector(evt);
					_locked = false;
				}

				
				// FIRST: Remove possible delegates
				utNode<tListDeletedEntry> dEntry, tTmp;
				dEntry = _delegatesToBeRemoved.head;
				while(dEntry != null){
					tTmp = dEntry.next;
					removeDelegate(dEntry.obj.aDelegate, dEntry.obj.listToBeDeleted);
					_delegatesToBeRemoved.DL_DELETE(dEntry);
					dEntry = tTmp;
				}

				
				// LATER: Add possible delegates
				utNode<tListAddedEntry> entry, tmp;
				entry = _delegatesToBeAdded.head;
				while(entry != null){
					tmp = entry.next;
					
					addDelegate(entry.obj.aDelegate, entry.obj.priority, entry.obj.listToBeAdded);
					_delegatesToBeAdded.DL_DELETE(entry);

					entry = tmp;
				}
			}
		}