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 (children != null) {
			for (int i = 0; i < children.length; i++) {
				Widget item = children[i];
				Object data = item.getData();
				if (data != null)
					internalRefreshStruct(item, data, updateLabels);
			}
		}
	}
	/**
	 * Removes the given elements from this viewer.
	 * 
	 * @param elements
	 *           the elements to remove
	 */
	private void internalRemove(Object[] elements) {
		Object input = getInput();
		HashSet parentItems = new HashSet(5);
		for (int i = 0; i < elements.length; ++i) {
			if (equals(elements[i], input)) {
				setInput(null);
				return;
			}
			Widget childItem = findItem(elements[i]);
			if (childItem instanceof Item) {
				Item parentItem = getParentItem((Item) childItem);
				if (parentItem != null) {
					parentItems.add(parentItem);
				}
				disassociate((Item) childItem);