Trie extends AbstractMap<String, V> { @Override public Set<Entry<String, V>> entrySet() { if (entries == null) { entries = new EntrySet(); } return entries; } Trie(); Set<Entry<String, V>> prefixEntries(String prefix); Set<String> prefixedKeys(String prefix); Collection<V> prefixedValues(String prefix); @Override boolean containsValue(Object value); @Override boolean containsKey(Object key); @Override @Nullable V get(Object key); @Override void putAll(Map<? extends String, ? extends V> map); @Override @Nullable V put(String key, V value); @Override @Nullable V remove(Object key); @Override void clear(); @Override int size(); @Override boolean isEmpty(); @Override Set<Entry<String, V>> entrySet(); @Override Set<String> keySet(); @Override Collection<V> values();  }
@Test void entryset_iterator() { var iterator = populated.entrySet().iterator(); assertTrue(iterator.next() instanceof TrieEntry<?>); }