V (Object key) { final V value = myKeyToValueMap.remove(key); final List<K> ks = myValueToKeysMap.get(value); if (ks != null) { if (ks.size() > 1) { ks.remove(key); } else { myValueToKeysMap.remove(value); } } return value; }