Bug 32254 [Viewers] AbstractTreeViewer uses HashSet to remember expansion state
I20030216 The custom hash table should be used instead. Otherwise expansion state may be lost due to a different equals implementation of the element and the IElementComparer.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
if (cp != null) {
				Object[] result = cp.getChildren(parent);
				if (result != null)
					return result;
			}
		}
		return new Object[0];
	}
	/**
	 * Returns all selected items for the given SWT control.
	 * 
	 * @param control
	 *           the control
	 * @return the list of selected items
	 */
	protected abstract Item[] getSelection(Control control);
	
	protected List getSelectionFromWidget() {
		Widget[] items = getSelection(getControl());
		ArrayList list = new ArrayList(items.length);
		for (int i = 0; i < items.length; i++) {
			Widget item = items[i];
			Object e = item.getData();
			if (e != null)
				list.add(e);
		}
		return list;
	}
	/**
	 * Handles a tree collapse event from the SWT widget.