void () { UnmodifiableHashMap<Integer, String> map = UnmodifiableHashMap.empty(); for (int i = 0; i < 50; i++) { String value = String.valueOf(i); map = map.with(i, value); assertEquals(i + 1, map.size()); assertEquals(value, map.get(i)); assertTrue(map.containsKey(i)); assertTrue(map.containsValue(value)); assertFalse(map.containsValue(String.valueOf(i + 1))); assertNull(map.get(i + 1)); UnmodifiableHashMap<Integer, String> map1 = map.with(i, value); assertSame(map1, map); UnmodifiableHashMap<Integer, String> map2 = map.with(i, String.valueOf(i + 1)); assertNotSame(map2, map); assertEquals(map.size(), map2.size()); assertEquals(map.keySet(), map2.keySet()); assertTrue(map2.containsValue(String.valueOf(i + 1))); assertFalse(map2.containsValue(value)); } }