@Override
  public V put(K key, V value) {
    KeyReference<K, V> keyReference = createKeyReference(key, value);
    ValueReference<K,V> valueReference = keyReference.getValueReference();
    ValueReference<K, V> prevValReference = myMap.put(keyReference, valueReference);
    processQueues();
    return prevValReference == null ? null : prevValReference.get();
  }
@Override
  public V put(K key, V value)