Bug 127861 [DataBinding] Mark API provisional
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/UpdatableTracker.java
/**
	 * Threadlocal storage pointing to the current Set of IUpdatables, or null if none.
	 * Note that this is actually the top of a stack. Whenever a method changes the
	 * current value, it remembers the old value as a local variable and restores the
	 * old value when the method exits.
	 */
    private static ThreadLocal currentListener = new ThreadLocal() {
        protected synchronized Object initialValue() {
            return null;
        }
    };
    
	/**
	 * Invokes the given runnable, and returns the set of IUpdatables that were read
	 * by the runnable. If the runnable calls this method recursively, the result
	 * will not contain IUpdatables that were used within the inner runnable.
	 * 
	 * @param runnable runnable to execute
	 * @param listener listener to notify about updatables used in the runnable
	 */
	public static Set runAndMonitor(Runnable runnable) {
		
		Set lastValue = (Set)currentListener.get();
		
		Set nextValue = new HashSet();