@NotNull
  KeyReference<K,V> createKeyReference(@NotNull K k, final @NotNull V v) {
    final ValueReference<K, V> valueReference = createValueReference(v, myValueQueue);
    KeyReference<K,V> keyReference = new WeakKey<>(k, valueReference, myHashingStrategy, myKeyQueue);
    if (valueReference instanceof SoftValue) {
      ((SoftValue<K, V>)valueReference).myKeyReference = keyReference;
    }
    ObjectUtilsRt.reachabilityFence(k);
    return keyReference;
  }
@NotNull
  KeyReference<K,V> createKeyReference(@NotNull K k, final @NotNull V v)