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
private void disassociateChildren(Item item) {
		Item[] items = getChildren(item);
		for (int i = 0; i < items.length; i++) {
			if (items[i].getData() != null)
				disassociate(items[i]);
		}
	}
	/* (non-Javadoc)
	 * Method declared on StructuredViewer.
	 */
	protected Widget doFindInputItem(Object element) {
		
		Object root = getRoot();
		if (root == null)
			return null;
		if (equals(root, element))
			return getControl();
		return null;
	}
	/* (non-Javadoc)
	 * Method declared on StructuredViewer.
	 */
	protected Widget doFindItem(Object element) {
		
		Object root = getRoot();
		if (root == null)
			return null;
		Item[] items = getChildren(getControl());
		if (items != null) {
			for (int i = 0; i < items.length; i++) {