ScrapMap implements ConcurrentMap<K,List<?>>, ScrapConsumer<K,Object> { @Override public void putAll(Map<? extends K, ? extends List<?>> m) { throw new RuntimeException("Method putAll is not available in this context"); } ScrapMap();  ScrapMap(ConcurrentMap<K,List<?>> map);  ScrapMap(Supplier<ConcurrentMap<K,List<?>>> map); @Override int size(); @Override boolean isEmpty(); @Override boolean containsKey(Object key); @Override boolean containsValue(Object value); @Override List<?> get(Object key); @Override List<?> put(K key, List<?> value); @Override List<?> remove(Object key); @Override void putAll(Map<? extends K, ? extends List<?>> m); @Override void clear(); @Override Set<K> keySet(); @Override Collection<List<?>> values(); @Override Set<java.util.Map.Entry<K, List<?>>> entrySet(); @Override List<?> putIfAbsent(K key, List<?> value); @Override boolean remove(Object key, Object value); @Override boolean replace(K key, List<?> oldValue, List<?> newValue); @Override List<?> replace(K key, List<?> value); ConcurrentMap<K,List<?>> unwrap(); @Override void accept(ScrapBin<K, Object> bin); static ScrapMap<K> of(Conveyor<K,?,?> conv); static ScrapMap<K> of(Conveyor<K,?,?> conv, ConcurrentMap<K,List<?>> map); static ScrapMap<K> of(Conveyor<K,?,?> conv, Supplier<ConcurrentMap<K,List<?>>> mapS); @Override String toString();  }
@Test(expected = RuntimeException.class) public void failPutAllTest() { sm.putAll(new HashMap<>()); }