Bug 198906 [DataBinding] SelectionProviderSingleSelectionObservableValue doesn't remove selectionChangedListener on dispose
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValue.java
AbstractObservableValue {
	private final ISelectionProvider selectionProvider;
	private boolean updating = false;
	private Object currentSelection;
	/**
	 * Constructs a new instance associated with the provided
	 * <code>selectionProvider</code>. In order to initialize itself properly
	 * the constructor invokes {@link #doGetValue()}. This could be dangerous
	 * for subclasses, see {@link #doGetValue()} for an explanation.
	 * @param realm 
	 * 
	 * @param selectionProvider
	 * @see #doGetValue()
	 */
	public SelectionProviderSingleSelectionObservableValue(Realm realm,
			ISelectionProvider selectionProvider) {
		super(realm);
		if (selectionProvider == null) {
			throw new IllegalArgumentException(
					"The 'selectionProvider' parameter is null."); 
		}
		this.selectionProvider = selectionProvider;
		this.currentSelection = doGetValue();
		selectionProvider
				.addSelectionChangedListener(new ISelectionChangedListener() {
					public void selectionChanged(SelectionChangedEvent event) {
						if (!updating) {
							Object oldSelection = currentSelection;