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
Item item = items[i];
			Object data = item.getData();
			if (data != null) {
				
				
				boolean expanded = expandedElements.remove(data);
				if (expanded != getExpanded(item)) {
					if (expanded) {
						createChildren(item);
					}
					setExpanded(item, expanded);
				}
			}
			internalSetExpanded(expandedElements, item);
		}
	}
	/**
	 * Return whether the tree node representing the given element can be
	 * expanded.
	 * <p>
	 * The default implementation of this framework method calls <code>hasChildren</code>
	 * on this viewer's content provider. It may be overridden if necessary.
	 * </p>
	 * 
	 * @param element
	 *           the element
	 * @return <code>true</code> if the tree node representing the given
	 *         element can be expanded, or <code>false</code> if not
	 */
	public boolean isExpandable(Object element) {