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
* <p>
	 * </p>
	 * Note that the default implementation of this method does not call <code>setRedraw</code>.
	 * 
	 * @param widget
	 *           the widget
	 * @param level
	 *           non-negative level, or <code>ALL_LEVELS</code> to collapse
	 *           all levels of the tree
	 */
	protected void internalCollapseToLevel(Widget widget, int level) {
		if (level == ALL_LEVELS || level > 0) {
			if (widget instanceof Item)
				setExpanded((Item) widget, false);
			if (level == ALL_LEVELS || level > 1) {
				Item[] children = getChildren(widget);
				if (children != null) {
					int nextLevel =
						(level == ALL_LEVELS ? ALL_LEVELS : level - 1);
					for (int i = 0; i < children.length; i++)
						internalCollapseToLevel(children[i], nextLevel);
				}
			}
		}
	}
	/**
	 * Recursively collects all expanded elements from the given widget.
	 * 
	 * @param result
	 *           a list (element type: <code>Object</code>) into which to