Bug 161086 [Viewers] performance problem in AbstractTreeViewer.internalExpandToLevel
If you expand to ALL_LEVELS, internalExpandToLevel will call createChildren even if the element has no children, i.e. it does not check if the element is expandable. Found this while experimenting with the Quick Access feature (enter "con", then delete all three characters one at a time).
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
return cp != null && cp.hasChildren(path);
		}
		return isExpandable(element);
	}
	
	protected void labelProviderChanged() {
		
		Control tree = getControl();
		tree.setRedraw(false);
		
		internalRefresh(tree, getRoot(), false, true);
		tree.setRedraw(true);
	}
	/**
	 * Creates a new item.
	 * 
	 * @param parent
	 *            the parent widget
	 * @param style
	 *            SWT style bits
	 * @param index
	 *            if non-negative, indicates the position to insert the item
	 *            into its parent
	 * @return the newly-created item
	 */
	protected abstract Item newItem(Widget parent, int style, int index);
	/**
	 * Removes the given elements from this viewer. The selection is updated if
	 * required.
	 * <p>