### Question:
LRUMap implements Map<K, V> { @Override public V remove(Object key) { Entry<K, V> entry = map.remove(key); modificationID++; if (entry != null) { removeEntry(entry); return entry.value; } return null; } LRUMap(int cacheSize); @Override int size(); @Override boolean isEmpty(); @Override boolean containsKey(Object key); @Override boolean containsValue(Object value); @Override V get(Object key); @Override V put(K key, V value); @Override V remove(Object key); @Override void putAll(Map<? extends K, ? extends V> m); @Override void clear(); @Override Set<K> keySet(); @Override Collection<V> values(); @Override Set<Map.Entry<K, V>> entrySet(); @Override String toString();  }### Answer:
@Test public void testRemove() { map.remove("key2"); assertEquals(2, map.size()); assertTrue(map.containsKey("key1")); assertTrue(map.containsKey("key3")); assertTrue(!map.containsKey("key2")); }