boolean (@NotNull Object key, @NotNull Object value) { HardKey<K, V> hardKey = createHardKey(key); try { ValueReference<K, V> valueReference = myMap.get(hardKey); V v = valueReference == null ? null : valueReference.get(); return value.equals(v) && myMap.remove(hardKey, valueReference); } finally { hardKey.clear(); processQueues(); } }