Bug 167323 [Viewers]Open AbstractTreeViewer for external widget implementors
As reported by Ross Camara AbstractTreeViewer would work for nebula if we would open the API a bit. Boris and I decided that we will do this in 2 steps: 1. open the API 2. moving the Virtual-Support bits from TreeViewer to AbstractTreeViewer when the nebula grid provides virtual support.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
*            the elements to remove
	 * @since 3.1
	 */
	protected void internalRemove(Object parent, Object[] elements) {
		CustomHashtable toRemove = new CustomHashtable(getComparer());
		for (int i = 0; i < elements.length; i++) {
			toRemove.put(elements[i], elements[i]);
		}
		
		
		CustomHashtable parentItems = new CustomHashtable(5);
		
		Widget[] parentItemArray = findItems(parent);
		for (int i = 0; i < parentItemArray.length; i++) {
			Widget parentItem = parentItemArray[i];
			if (parentItem instanceof Item) {
				parentItems.put(parentItem, parentItem);
			}
			
			Item[] children = getChildren(parentItem);
			for (int j = 0; j < children.length; j++) {
				Item child = children[j];
				Object data = child.getData();
				if (data != null && toRemove.containsKey(data)) {
					disassociate(child);
					child.dispose();
				}
			}
		}
		internalReconcileParentItems(parentItems);