KeyMap implements Iterable<KeyMap.Entry<K, V>> { public int getCurrentTableCapacity() { return table.length; } KeyMap();  KeyMap(int expectedNumberOfElements); final V put(K key, V value); final V putIfAbsent(K key, LazyFactory<V> factory); final V putOrAggregate(K key, V value, ReduceFunction<V> aggregator); V get(K key); @Override Iterator<Entry<K, V>> iterator(); int size(); boolean isEmpty(); int getCurrentTableCapacity(); int getLog2TableCapacity(); int getRehashThreshold(); int getShift(); static void traverseMaps(
					final KeyMap<K, V>[] maps,
					final TraversalEvaluator<K, V> visitor,
					final long touchedTag);  }
@Test public void testSizeComparator() { try { KeyMap<String, String> map1 = new KeyMap<>(5); KeyMap<String, String> map2 = new KeyMap<>(80); assertTrue(map1.getCurrentTableCapacity() < map2.getCurrentTableCapacity()); assertTrue(KeyMap.CapacityDescendingComparator.INSTANCE.compare(map1, map1) == 0); assertTrue(KeyMap.CapacityDescendingComparator.INSTANCE.compare(map2, map2) == 0); assertTrue(KeyMap.CapacityDescendingComparator.INSTANCE.compare(map1, map2) > 0); assertTrue(KeyMap.CapacityDescendingComparator.INSTANCE.compare(map2, map1) < 0); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }