Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/provisional/databinding/IUpdatableFunction.java
* updatable function will only fire a CHANGE event on an object that 
 * object was previously used as the argument to computeResult. 
 * This is permits functions to optimize their listeners. If the function
 * is attaching a listener to each domain object, it only needs to attach
 * the listener the first time it is asked about that object and it can
 * remove the listener whenever it fires a CHANGE event for the object.
 * </p>
 * 
 * Fires event types: CHANGE_MANY, STALE  
 * 
 * <p>
 * Not intended to be implemented by clients. Clients should subclass 
 * UpdatableFunction.
 * </p>
 * 
 * @see IUpdatableFunctionFactory
 * @since 3.2
 */
public interface IUpdatableFunction extends IReadable {
	/**
	 * Evaluates the function on the given domain element
	 * 
	 * @TrackedGetter This method will notify UpdateTracker that the reciever has been read from
	 * 
	 * @param input domain element to evaluate the function on
	 * @return result of the function 
	 */
    public abstract Object calculate(Object input);
}