Bug 159190 [Viewers] multiple dispose listeners for elements in VIRTUAL tree viewer
3.3 Each time an element is mapped in a VIRTUAL tree viewer, a dispose listener is hooked to its item to properly unmap it. However, elements are mapped to the same item more than once (each time it is updated via doUpdateItem(Widget widget, Object element, boolean fullMap)). This results in many dispose listeners for each element to unmap it, which is a potential performance issue. The debugger subclasses the tree viewer and updates (clears) filtered children when an element is unmapped. It ends up doing the operation many times (once for each dispose callback), instead of once.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
*            the list of column properties
	 * @since 3.1
	 */
	public void setColumnProperties(String[] columnProperties) {
		treeViewerImpl.setColumnProperties(columnProperties);
	}
	/*
	 * (non-Javadoc) Method declared in AbstractTreeViewer.
	 */
	protected void setExpanded(Item node, boolean expand) {
		((TreeItem) node).setExpanded(expand);
		if (getContentProvider() instanceof ILazyTreeContentProvider) {
			
			getControl().update();
		}
	}
	/**
	 * The tree viewer implementation of this <code>Viewer</code> framework
	 * method ensures that the given label provider is an instance of either
	 * <code>ITableLabelProvider</code> or <code>ILabelProvider</code>.
	 * <p>
	 * If the label provider is an {@link ITableLabelProvider}, then it
	 * provides a separate label text and image for each column. Implementers of
	 * <code>ITableLabelProvider</code> may also implement
	 * {@link ITableColorProvider} and/or {@link ITableFontProvider} to provide
	 * colors and/or fonts. Note that the underlying {@link Tree} must be
	 * configured with {@link TreeColumn} objects in this case.
	 * </p>
	 * <p>
	 * If the label provider is an <code>ILabelProvider</code>, then it