Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/provisional/databinding/Updatable.java
protected void firstListenerAdded() {
		
	}
	/**
	 * Called when the last listener is removed from the updatable. Some updatables
	 * may optimize themselves by removing their own listeners from other objects when
	 * nobody is listening to them. Such updatables may use this method to detect
	 * situations when they can stop tracking changes.
	 *
	 * <p>
	 * Important: implementations of this method must not change the current
	 * value of the updatable or fire any property changes. Even though the updatable
	 * is not required to listen to or fire property changes, it is still required to
	 * report the correct, most up-to-date value when asked. 
	 * </p>
	 */
	protected void lastListenerRemoved() {
	}
	
	protected final boolean hasListeners() {
		return changeListeners != null && !changeListeners.isEmpty();
	}
	public void removeChangeListener(IChangeListener changeListener) {
		Assert.isNotNull(changeListener);
		
		if (changeListeners == null) {
			return;
		}
		
		changeListeners.remove(changeListener);