public WeakIdentityMap()
{
for (int i = 0; i < keys.length; i++)
{
keys[i] = new WeakReference(null, true);
// NOTE we suppress finalization, to make sure the WeakReference continues to work
// while the AppDomain is finalizing for unload (note that for this to work,
// the code that instantiates us also has to call SuppressFinalize on us.)
GC.SuppressFinalize(keys[i]);
}