Bug 89137 [JFace] - API Review - "temporary" API in AbstractTreeViewer
AbstractTreeViewer contains two methods documented as "temporary" internalRefresh(Widget, Object) internalAdd(Widget, Object, Object [])
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
internalAdd(widget, parentElement, childElements);
    }
	/**
     * XXX: temporary API in support of Dirk's explorations
     * into grouping by working sets, which requires viewers
     * to support multiple equal elements.
     *
     * @since 3.1
     */
    protected void internalAdd(Widget widget, Object parentElement, Object[] childElements) {
		Control tree = getControl();
        
        
        if (widget instanceof Item) {
            Item ti = (Item) widget;
            if (!getExpanded(ti)) {
                boolean needDummy = isExpandable(parentElement);
                boolean haveDummy = false;
                
                Item[] items = getItems(ti);
                for (int i = 0; i < items.length; i++) {
                    if (items[i].getData() != null) {
                        disassociate(items[i]);
                        items[i].dispose();
                    } else {
                        if (needDummy && !haveDummy) {
                            haveDummy = true;
                        } else {
                            items[i].dispose();
                        }