WeakIdentityDictionaries behave like IdentityDictionaries,
as long as the keys are still referenced by some
other (non-weak) object.
However, once the last non-weak reference ceases to exist,
the object will be automatically removed from the Weakcollection
(with some delay: it will be removed after the next garbage collect).
This class was added to support keeping track of dependents without
keeping the values alive - values simply become nil when no one else
references it. The original dependency mechanism used a regular Dictionary,
which usually leads to a lot of garbage being kept due to a forgotten
release. Using a WeakDictionary may be incompatible to ST-80 but is much
more comfortable, since no manual release of dependents is needed.

If you use this, be very careful since the collections size changes
'magically' - for example, testing for being nonEmpty and then
removing the first element may fail, since the element may vanish inbetween.
In general, never trust the value as returned by the size/isEmpty messages.