ResultMap implements Map<K,V>, ResultConsumer<K,V> { public ResultMap() { this.inner = new ConcurrentHashMap<>(); } ResultMap();  ResultMap(Map<K,V> map);  ResultMap(Supplier<Map<K,V>> map); @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<java.util.Map.Entry<K, V>> entrySet(); Map<K,V> unwrap(); @Override void accept(ProductBin<K, V> bin); static ResultMap<K,V> of(Conveyor<K,?,V> conv); static ResultMap<K,V> of(Conveyor<K,?,V> conv, Map<K,V> map); static ResultMap<K,V> of(Conveyor<K,?,V> conv, Supplier<Map<K,V>> mapS); @Override String toString();  }
@Test public void resultMapTest() { ResultMap<Integer,String> rm1 = new ResultMap<>(); ResultMap<Integer,String> rm2 = new ResultMap<>(new HashMap<>()); ResultMap<Integer,String> rm3 = new ResultMap<>(HashMap::new); assertTrue(rm1.isEmpty()); assertFalse(rm1.containsValue("test")); assertFalse(rm1.containsKey(1)); assertNotNull(rm1.unwrap()); rm1.accept(ResultConsumerTest.getProductBin(1,"test")); assertNotNull(rm1.keySet()); assertNotNull(rm1.values()); assertNotNull(rm1.entrySet()); }