TrackingMultimap extends AbstractMap<K, Set<V>> { @Override public Set<Entry<K, Set<V>>> entrySet() { return data.entrySet(); } protected  TrackingMultimap(Map<K, Set<V>> delegate,
            @Nullable Comparator<K> comparator); boolean containsDataType(DataType type); long count(); boolean delete(K key, V value); double distinctiveness(); @Override Set<Entry<K, Set<V>>> entrySet(); @SuppressWarnings("unchecked") @Override boolean equals(Object obj); @Override Set<V> get(Object key); @Override int hashCode(); boolean hasValue(V value); boolean insert(K key, V value); K max(); Set<V> merge(K key, Set<V> values); K min(); double percentKeyDataType(DataType type); double proportion(K element); @Override Set<V> put(K key, Set<V> value); @SuppressWarnings("unchecked") @Override Set<V> remove(Object key); double spread(); @Override String toString(); double uniqueness(); VariableType variableType();  }
@Test public void testEntrySet() { List<String> keys = new ArrayList<String>(); List<Set<Integer>> values = new ArrayList<Set<Integer>>(); for (int i = 0; i < Random.getScaleCount(); i++) { String key = Random.getString(); Set<Integer> value = randomValueSet(); keys.add(key); values.add(value); map.put(key, value); } for (Entry<String, Set<Integer>> entry : map.entrySet()) { Assert.assertTrue(keys.contains(entry.getKey())); Assert.assertTrue(values.contains(entry.getValue())); } Assert.assertTrue(keys.size() == map.entrySet().size()); Assert.assertTrue(values.size() == map.entrySet().size()); }