can't have map if you have upgrade from read to write?
sharedmutex<hashmap<k, v>>
get lock as SharedMutexReadLock (contains &UnsafeCell<HashMap<K, V>>)
map to V, now contains &UnsafeCell<V>? that doesn't sound right
wait mutex map is broken in the presence of condvar generally speaking
get lock around &mut V, which is pointer into the hashmap
wait in one thread, in the other clear hashmap, bang use-after-free