postProjectStateChanged(internalGetParent(parent));
postProjectStateChanged(internalGetParent(parent), runnables);
	private boolean processResourceDelta(IResourceDelta delta, Object parent) {		int status= delta.getKind();		int flags= delta.getFlags();				IResource resource= delta.getResource();		// filter out changes affecting the output folder		if (resource == null)			return false;						// this could be optimized by handling all the added children in the parent		if ((status & IResourceDelta.REMOVED) != 0) {			if (parent instanceof IPackageFragment) {				// refresh one level above to deal with empty package filtering properly				postRefresh(internalGetParent(parent), PARENT, parent);				return true;			} else 				postRemove(resource);		}		if ((status & IResourceDelta.ADDED) != 0) {			if (parent instanceof IPackageFragment) {				// refresh one level above to deal with empty package filtering properly				postRefresh(internalGetParent(parent), PARENT, parent);					return true;			} else				postAdd(parent, resource);		}		// open/close state change of a project		if ((flags & IResourceDelta.OPEN) != 0) {			postProjectStateChanged(internalGetParent(parent));			return true;				}		processResourceDeltas(delta.getAffectedChildren(), resource);		return false;	}