Bug 125272 [Viewers] AbstractTreeViewer needs remove(Object parentElement, Object[] childElements)
There is an add(Object parentElement, Object[] childElements) but no corresponding remove(). Without this method, if you have an element that appears under multiple parents, the only way to get model and viewer in sync after removing the element from just one of its parents is calling refresh().
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
*           levels of the tree
     */
    public void setAutoExpandLevel(int level) {
        expandToLevel = level;
    }
    /**
     * The <code>AbstractTreeViewer</code> implementation of this method
     * checks to ensure that the content provider is an <code>ITreeContentProvider</code>.
     */
    public void setContentProvider(IContentProvider provider) {
    	
        super.setContentProvider(provider);
    }
    
	protected void assertContentProviderType(IContentProvider provider) {
		Assert.isTrue(provider instanceof ITreeContentProvider);
	}
    /**
     * Sets the expand state of the given item.
     * 
     * @param item
     *           the item
     * @param expand
     *           the expand state of the item
     */
    protected abstract void setExpanded(Item item, boolean expand);
    /**
     * Sets which nodes are expanded in this viewer's tree. The given list
     * contains the elements that are to be expanded; all other nodes are to be
     * collapsed.