@Override
	public boolean isEmpty() {
		return weakHashStorage.isEmpty();
	}
A set that avoids {@link ConcurrentModificationException}s by copying the internal storage
<b>for every mutation operation</b>.  Thus, this data structure is only efficient when the
number of event notification operations significantly out numbers mutations to this structure
(e.g., adding and removing items.
<p>
An example use case where using this class is a good fit would be a listener list where
listeners are added during initialization, but not after that.   Further, this hypothetical
list is used to fire a large number of events.
<p>
A bad use of this class would be as a container to store widgets where the container the
contents are changed often, but iterated very little.
<p>
Finally, if this structure is only ever used from a single thread, like the Swing thread, then
you do not need the overhead of this class, as the Swing thread synchronous access guarantees
that the structure cannot be mutated while it is being iterated.  See
{@link WeakDataStructureFactory#createSingleThreadAccessWeakSet()}.

@param <T> the type
@see WeakSet
Ghidra/Framework/Generic/src/main/java/ghidra/util/datastruct/CopyOnWriteWeakSet.java