### Question:
LazyMap extends WrappedMap<K, V> { @Override public V get(Object key) throws IllegalStateException { Factory<? super K, ? extends V> factory = getFactory(); if (factory == null) { throw new IllegalStateException("No factory installed."); } return get(key, factory); } LazyMap(Map<K, V> map, Class<? extends K> keyType);  LazyMap(Map<K, V> map, Class<? extends K> keyType, Factory<? super K, ? extends V> factory); static LazyMap<K, Collection<E>> create(Map<K, Collection<E>> map, Class<K> keyType,
            CollectionProvider<E> provider); static LazyMap<K, List<E>> create(Map<K, List<E>> map, Class<K> keyType, ListProvider<E> provider); static LazyMap<K, Set<E>> create(Map<K, Set<E>> map, Class<K> keyType, SetProvider<E> provider); static LazyMap<K, V> create(Map<K, V> map, Class<? extends K> keyType); static LazyMap<K, V> create(Map<K, V> map, Class<? extends K> keyType, Factory<? super K, ? extends V> factory); static Factory<Object, Collection<V>> providerToFactory(final CollectionProvider<V> provider); static Factory<Object, List<V>> providerToFactory(final ListProvider<V> provider); static Factory<Object, Set<V>> providerToFactory(final SetProvider<V> provider); @Override V get(Object key); V get(Object key, Factory<? super K, ? extends V> factory); V getIfExists(Object key); @Override V put(K key, V value); @Override void putAll(Map<? extends K, ? extends V> m);  }### Answer:
@Test public void testContainsKey() { Assert.assertTrue(myLazyMap.containsKey(null)); Assert.assertTrue(myLazyMap.containsKey(Integer.valueOf(1))); Assert.assertFalse(myLazyMap.containsKey(Integer.valueOf(0))); myLazyMap.get(Integer.valueOf(0)); Assert.assertTrue(myLazyMap.containsKey(Integer.valueOf(0))); }
@Test public void testContainsValue() { Assert.assertTrue(myLazyMap.containsValue(NULL_VALUE1)); Assert.assertTrue(myLazyMap.containsValue("1")); Assert.assertFalse(myLazyMap.containsValue("0")); myLazyMap.get(Integer.valueOf(0)); Assert.assertTrue(myLazyMap.containsValue("0")); }
@SuppressWarnings("unlikely-arg-type") @Test public void testGet() { Assert.assertEquals(NULL_VALUE1, myLazyMap.get(null)); Assert.assertEquals("1", myLazyMap.get(Integer.valueOf(1))); Assert.assertEquals("2", myLazyMap.get(Integer.valueOf(2))); Assert.assertEquals("3", myLazyMap.get(Integer.valueOf(3))); Assert.assertEquals(FOUR, myLazyMap.get(Integer.valueOf(4))); Assert.assertEquals("5", myLazyMap.get(Integer.valueOf(5))); Assert.assertNull(myLazyMap.get(new Object())); Assert.assertNull(myLazyMap.get(Float.valueOf(1f))); }