### Question:
LazyMap extends WrappedMap<K, V> { @Override public void putAll(Map<? extends K, ? extends V> m) { synchronized (getMap()) { super.putAll(m); } } 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 testPutAll() { Map<Integer, String> map = new HashMap<>(); map.put(null, NULL_VALUE2); map.put(Integer.valueOf(1), ONE); map.put(Integer.valueOf(2), TWO); map.put(Integer.valueOf(3), THREE); myLazyMap.putAll(map); Assert.assertEquals(NULL_VALUE2, myLazyMap.get(null)); Assert.assertEquals(ONE, myLazyMap.get(Integer.valueOf(1))); Assert.assertEquals(TWO, myLazyMap.get(Integer.valueOf(2))); Assert.assertEquals(THREE, myLazyMap.get(Integer.valueOf(3))); }