Bug 127861 [DataBinding] Mark API provisional
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/UpdatableTracker.java
* the outer getter doesn't need to call the method since the inner one will.
 * </p>
 * 
 * <p>
 * If you want to determine what updatables were used in a particular block of
 * code, call runAndMonitor(Runnable, IUpdatableListener). This will execute
 * the given runnable and notify the IUpdatableListener whenever the runnable reads from
 * an updatable.
 * </p>
 * 
 * <p>
 * This can be used to automatically attach listeners. For example, imagine
 * you have a block of code that updates some widget by reading from a bunch of updatables. 
 * Whenever one of those updatables changes, you want to re-run the code
 * and cause the widget to be refreshed. You could do this in the traditional manner by attaching
 * one listener to each updatable and re-running your widget update code whenever one of them changes, but
 * this code is repetitive and requires updating the listener code whenever you refactor the widget updating
 * code.
 * </p>
 * 
 * <p>
 * Alternatively, you could use a utility class that runs the code in a runAndMonitor
 * block and automatically attach listeners to any updatable used in updating the widget. The advantage
 * of the latter approach is that it, eliminates the code for attaching and detaching listeners and will
 * always stay in synch with changes to the widget update logic.
 * </p>
 * 
 * @since 3.2
 */
public class UpdatableTracker {