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
/**
	 * Recursively expands the subtree rooted at the given widget to the given
	 * level.
	 * <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 internalExpandToLevel(Widget widget, int level) {
		if (level == ALL_LEVELS || level > 0) {
			createChildren(widget);
			if (widget instanceof Item)
				setExpanded((Item) widget, true);
			if (level == ALL_LEVELS || level > 1) {
				Item[] children = getChildren(widget);
				if (children != null) {
					int newLevel =
						(level == ALL_LEVELS ? ALL_LEVELS : level - 1);
					for (int i = 0; i < children.length; i++)
						internalExpandToLevel(children[i], newLevel);
				}
			}
		}
	}
	/**