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
if (useRedraw)
					tree.setRedraw(true);
			}
		});
	}
	/**
	 * Recursively collapses the subtree rooted at the given widget to the
	 * given level.
	 * <p>
	 * </p>
	 * Note that the default implementation of this method does not call
	 * <code>setRedraw</code>.
	 *
	 * @param widget the widget
	 * @param level non-negative level, or <code>ALL_LEVELS</code> to collapse
	 *  all levels of the tree
	 */
	protected void internalCollapseToLevel(Widget widget, int level) {
		if (level == ALL_LEVELS || level > 0) {
			if (widget instanceof Item)
				setExpanded((Item) widget, false);
			if (level == ALL_LEVELS || level > 1) {
				Item[] children = getChildren(widget);
				if (children != null) {
					int nextLevel =
						(level == ALL_LEVELS ? ALL_LEVELS : level - 1);
					for (int i = 0; i < children.length; i++)
						internalCollapseToLevel(children[i], nextLevel);
				}
			}