Bug 38782 TreeViewer add calls a refresh
Our implementation of TreeViewer.add is naive and can all a refresh of the entire tree. It should be more like TableViewer.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
/**
	 * Removes the given elements from this viewer.
	 *
	 * @param elements the elements to remove
	 */
	private void internalRemove(Object[] elements) {
		Object input = getInput();
		HashSet parentItems = new HashSet(5);
		for (int i = 0; i < elements.length; ++i) {
			if (equals(elements[i], input)) {
				setInput(null);
				return;
			}
			Widget childItem = findItem(elements[i]);
			if (childItem instanceof Item) {
				Item parentItem = getParentItem((Item) childItem);
				if (parentItem != null) {
					parentItems.add(parentItem);
				}
				disassociate((Item) childItem);
				childItem.dispose();
			}
		}
		Control tree = getControl();
		for (Iterator i = parentItems.iterator(); i.hasNext();) {
			Item parentItem = (Item) i.next();
			if (!getExpanded(parentItem) && getItemCount(parentItem) == 0) {
				
				if (isExpandable(parentItem.getData())) {
					newItem(parentItem, SWT.NULL, -1);