Bug 147545 [DataBinding] When attempting to fire a stale event AbstractObservable throws ClassCastException
The code in AbstractObservable for the firing of stale events appears to be incomplete. When listeners are added they're added as type IStaleListener but when retrieved they're cast to IChangeListener. I'm assuming that code was copied from the change listener code but not completed. Attaching patch...
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/observable/AbstractObservable.java
staleListeners = listener;
			if (!hadListeners) {
				firstListenerAdded();
			}
			return;
		}
		Collection listenerList;
		if (staleListeners instanceof IStaleListener) {
			IStaleListener l = (IStaleListener) staleListeners;
			listenerList = new ArrayList();
			listenerList.add(l);
		} else {
			listenerList = (Collection) staleListeners;
		}
		listenerList.add(listener);
	}
	public void removeStaleListener(IStaleListener listener) {
		if (staleListeners == listener) {
			staleListeners = null;
			if (!hasListeners()) {
				lastListenerRemoved();
			}
			return;
		}
		if (staleListeners instanceof Collection) {
			Collection listenerList = (Collection) staleListeners;
			listenerList.remove(listener);
			if (listenerList.isEmpty()) {
				staleListeners = null;
				if (!hasListeners()) {