for (Iterator it = listeners.iterator(); it.hasNext();) { final IResourceStateChangeListener listener = (IResourceStateChangeListener) it .next();
IResourceStateChangeListener[] toNotify; synchronized(listeners) { toNotify = (IResourceStateChangeListener[])listeners.toArray(new IResourceStateChangeListener[listeners.size()]); }  for (int i = 0; i < toNotify.length; ++i) { final IResourceStateChangeListener listener = toNotify[i];
	protected static void broadcastProjectDeconfigured(final IProject project) {		for (Iterator it = listeners.iterator(); it.hasNext();) {			final IResourceStateChangeListener listener = (IResourceStateChangeListener) it					.next();			ISafeRunnable code = new ISafeRunnable() {				public void run() throws Exception {					listener.projectDeconfigured(project);				}				public void handleException(Throwable e) {					// don't log the exception....it is already being logged in					// Platform#run				}			};			SafeRunner.run(code);		}	}