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
* 
     * @param item
     *           the item
     * @return the number of children
     */
    protected abstract int getItemCount(Item item);
    /**
     * Returns the child items of the given SWT item.
     * 
     * @param item
     *           the item
     * @return the child items
     */
    protected abstract Item[] getItems(Item item);
    /**
     * Returns the item after the given item in the tree, or <code>null</code>
     * if there is no next item.
     * 
     * @param item
     *           the item
     * @param includeChildren
     *           <code>true</code> if the children are considered in
     *           determining which item is next, and <code>false</code> if
     *           subtrees are ignored
     * @return the next item, or <code>null</code> if none
     */
    protected Item getNextItem(Item item, boolean includeChildren) {
        if (item == null) {
            return null;
        }