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
entry.key = key; 
			entry.value = value;
			return result;
		} else throw new NullPointerException();
	}
	/**
	 * Increases the capacity of this Hashtable. This method is sent when
	 * the size of this Hashtable exceeds the load factor.
	 */
	private void rehash() {
		int length = elementData.length<<1;
		if (length == 0) length = 1;
		firstSlot = length;
		lastSlot = -1;
		HashMapEntry[] newData = new HashMapEntry[length];
		for (int i=elementData.length; --i >= 0;) {
			HashMapEntry entry = elementData[i];
			while (entry != null) {
				int index = (hashCode(entry.key) & 0x7FFFFFFF) % length;
				if(index < firstSlot) firstSlot = index;
				if(index > lastSlot) lastSlot = index;
				HashMapEntry next = entry.next;
				entry.next = newData[index];
				newData[index] = entry;
				entry = next;
			}
		}
		elementData = newData;
		computeMaxSize();
	}