@Override
  public boolean remove(@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();
    }
  }
@Override
  public boolean remove(@NotNull Object key, @NotNull Object value)