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
}
	}
	/**
	 * Return whether the tree node representing the given element
	 * can be expanded.
	 * <p>
	 * The default implementation of this framework method calls 
	 * <code>hasChildren</code> on this viewer's content provider.
	 * It may be overridden if necessary.
	 * </p>
	 *
	 * @param element the element
	 * @return <code>true</code> if the tree node representing
	 * the given element can be expanded, or <code>false</code> if not
	 */
	public boolean isExpandable(Object element) {
		ITreeContentProvider cp = (ITreeContentProvider) getContentProvider();
		return cp != null && cp.hasChildren(element);
	}
	/* (non-Javadoc)
	 * Method declared on Viewer.
	 */
	protected void labelProviderChanged() {
		
		Control tree = getControl();
		tree.setRedraw(false);
		
		internalRefresh(tree, getRoot(), false, true);
		tree.setRedraw(true);
	}