Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/provisional/databinding/Updatable.java
if (changeListeners.isEmpty()) {
			lastListenerRemoved();
		}
	}
	protected final ChangeEvent fireChangeEvent(int changeType, Object oldValue,
			Object newValue) {
		return fireChangeEvent(changeType, oldValue, newValue, ChangeEvent.POSITION_UNKNOWN);
	}
	
	protected final ChangeEvent fireChangeEvent(int changeType, Object oldValue, Object newValue,  int position) {
		return fireChangeEvent(changeType, oldValue, newValue, null, position);
	}
	protected final ChangeEvent fireChangeEvent(int changeType, Object oldValue, Object newValue, Object parent, int position) {
		
		ChangeEvent changeEvent = null;
		
		
		if (changeType == ChangeEvent.STALE) {
			if (oldValue == null && newValue instanceof Boolean) {
				changeEvent = createStaleEvent(((Boolean)newValue).booleanValue());
			}
		}
		
		if (changeEvent == null) {
			changeEvent = new ChangeEvent(this, changeType, oldValue,
					newValue, parent, position);
		}
		fireChangeEvent(changeEvent);
		return changeEvent;