V (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(); }