@Override
	public synchronized boolean unregisterListener(EventListener observer)
	{
		boolean res = false;
		
		if(observers != null) {
			synchronized (observers) {
				// are we currently in a list iteration process?
				if(loopCounter > 0) {
					// yes! -> remove observer later
					res = observers.contains(observer);
					if(res) {
						//Logging.getInstance().trace(this, "Store delayed removal " +observer);
						
						if(observersDeletion == null) observersDeletion = new LinkedList<EventSource.EventListener>();
						
						observersDeletion.add(observer);
					}
				} else {
					// no! -> remove it immediately
					res = observers.remove(observer);
				}
			}
		}

		return res;
	}