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
protected TreeNode getExistingNode(Object element) {
		TreeNode node = (TreeNode) elementNodes.get(element);
		return node;
	}
	protected boolean isViewerDisposed() {
		Viewer viewer = (Viewer) viewerObservable.getValue();
		return viewer == null || viewer.getControl() == null
				|| viewer.getControl().isDisposed();
	}
	public void dispose() {
		if (elementNodes != null) {
			if (!elementNodes.isEmpty()) {
				TreeNode[] nodes = new TreeNode[elementNodes.size()];
				elementNodes.values().toArray(nodes);
				for (int i = 0; i < nodes.length; i++) {
					nodes[i].dispose();
				}
				elementNodes.clear();
			}
			elementNodes = null;
		}
		if (viewerObservable != null) {
			viewerObservable.setValue(null);
			viewerObservable.dispose();
			viewerObservable = null;
		}
		viewerUpdater = null;
		comparer = null;
		knownElements = null;
		unmodifiableKnownElements = null;