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
/**
	 * Creates a new item.
	 *
	 * @param parent the parent widget
	 * @param style SWT style bits
	 * @param index if non-negative, indicates the position to insert the item 
	 *    into its parent
	 * @return the newly-created item 
	 */
	protected abstract Item newItem(Widget parent, int style, int index);
	/**
	 * Removes the given elements from this viewer.
	 * The selection is updated if required.
	 * <p>
	 * This method should be called (by the content provider) when elements 
	 * have been removed from the model, in order to cause the viewer to accurately
	 * reflect the model. This method only affects the viewer, not the model.
	 * </p>
	 *
	 * @param elements the elements to remove
	 */
	public void remove(final Object[] elements) {
		preservingSelection(new Runnable() {
			public void run() {
				internalRemove(elements);
			}
		});
	}
	/**
	 * Removes the given element from the viewer.