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/CustomHashtable.java
* Constructs a new hash table with the given capacity and the given
	 * element comparer.
	 * 
	 * @param capacity the maximum number of elements that can be added without
	 *   rehashing
	 * @param comparer the element comparer to use to compare keys and obtain
	 *   hash codes for keys, or <code>null</code>  to use the normal 
	 *   <code>equals</code> and <code>hashCode</code> methods
	 */
	public CustomHashtable(int capacity, IElementComparer comparer) {
		if (capacity >= 0) {
			elementCount = 0;
			elementData = new HashMapEntry[capacity == 0 ? 1 : capacity];
			firstSlot = elementData.length;
			loadFactor = 0.75f;
			computeMaxSize();
		} else throw new IllegalArgumentException();
		this.comparer = comparer;
	}
	/**
	 * Constructs a new hash table with enough capacity to hold all keys in the
	 * given hash table, then adds all key/value pairs in the given hash table
	 * to the new one, using the given element comparer.
	 * 
	 * @param capacity the maximum number of elements that can be added without
	 *   rehashing
	 * @param comparer the element comparer to use to compare keys and obtain
	 *   hash codes for keys, or <code>null</code>  to use the normal 
	 *   <code>equals</code> and <code>hashCode</code> methods
	 */