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[] items = getChildren(parent);
		for (int i = 0; i < items.length; i++) {
			Item item = items[i];
			Widget o = internalFindItem(item, element);
			if (o != null)
				return o;
		}
		return null;
	}
	/* (non-Javadoc)
	 * Method declared on StructuredViewer.
	 */
	protected void internalRefresh(Object element) {
		internalRefresh(element, true);
	}
	/* (non-Javadoc)
	 * Method declared on StructuredViewer.
	 */
	protected void internalRefresh(Object element, boolean updateLabels) {
		
		if (element == null) {
			internalRefresh(getControl(), getRoot(), true, updateLabels);
			return;
		}
		Widget item = findItem(element);
		if (item != null) {
			
			internalRefresh(item, element, true, updateLabels);
		}