Bug 239015 [Databinding] ObservableListTreeContentProvider adds the value passed to TreeViewer#setInput() to the known-elements
The input element is never shown in the viewer so it should no get part of the knownElements further more it restricts the usability of the content-provider because the input-element itself already has to provide the required Observable-Attribute(s).
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ObservableCollectionTreeContentProvider.java
oldNodes[i].dispose();
			elementNodes.clear();
			elementNodes = null;
		}
		setViewer(viewer);
	}
	private void setViewer(Viewer viewer) {
		viewerUpdater = createViewerUpdater(viewer);
		comparer = getElementComparer(viewer);
		elementNodes = ViewerElementMap.withComparer(comparer);
		viewerObservable.setValue(viewer); 
	}
	private static IElementComparer getElementComparer(Viewer viewer) {
		if (viewer instanceof StructuredViewer)
			return ((StructuredViewer) viewer).getComparer();
		return null;
	}
	private static TreeViewerUpdater createViewerUpdater(Viewer viewer) {
		if (viewer instanceof AbstractTreeViewer)
			return new TreeViewerUpdater((AbstractTreeViewer) viewer);
		throw new IllegalArgumentException(
				"This content provider only works with AbstractTreeViewer"); 
	}
	public Object getParent(Object element) {
		if (structureAdvisor != null) {
			Object parentFromAdvisor = structureAdvisor.getParent(element);
			if (parentFromAdvisor != null) {
				return parentFromAdvisor;
			}
		}