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
* Gets the expanded elements that are visible
	 * to the user. An expanded element is only
	 * visible if the parent is expanded.
	 * 
	 * @return the visible expanded elements
	 * @since 2.0
	 */
	public Object[] getVisibleExpandedElements() {
		ArrayList v = new ArrayList();
		internalCollectVisibleExpanded(v, getControl());
		return v.toArray();
	}
	private void internalCollectVisibleExpanded(
		ArrayList result,
		Widget widget) {
		Item[] items = getChildren(widget);
		for (int i = 0; i < items.length; i++) {
			Item item = items[i];
			if (getExpanded(item)) {
				Object data = item.getData();
				if (data != null)
					result.add(data);
				
				
				internalCollectVisibleExpanded(result, item);
			}
		}
	}
}