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
item = getParentItem(item);
                        	}
                        	for(Iterator it = toExpandList.iterator(); it.hasNext();) {
                        		Item toExpand = (Item) it.next();
                        		setExpanded(toExpand, true);
                        	}
                        }
                    }
                }
            }
        }
        return w;
    }
    /**
     * If the argument is a tree path, returns its last segment, otherwise
     * return the argument
     * @param elementOrPath an element or a tree path
     * @return the element, or the last segment of the tree path
     */
	private Object internalToElement(Object elementOrPath) {
		if (elementOrPath instanceof TreePath) {
			return ((TreePath)elementOrPath).getLastSegment();
		}
		return elementOrPath;
	}
    /**
	 * This method takes a tree path or an element. If the argument is not a
	 * tree path, returns the parent of the given element or <code>null</code>
	 * if the parent is not known. If the argument is a tree path with more than
	 * one segment, returns its parent tree path, otherwise returns