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
Item[] children = getChildren(widget);
			if (children != null) {
				for (int i = 0; i < children.length; i++) {
					Widget item = children[i];
					Object data = item.getData();
					if (data != null)
						internalRefresh(item, data, doStruct, updateLabels);
				}
			}
		}
	}
	/**
	 * Update the structure and recurse.
	 * Items are updated in updateChildren, as needed.
	 */
	private void internalRefreshStruct(
		Widget widget,
		Object element,
		boolean updateLabels) {
		updateChildren(widget, element, null, updateLabels);
		Item[] children = getChildren(widget);
		if (children != null) {
			for (int i = 0; i < children.length; i++) {
				Widget item = children[i];
				Object data = item.getData();
				if (data != null)
					internalRefreshStruct(item, data, updateLabels);
			}
		}
	}