@Test
    public void removeRetainsKey2() {
        assumeThat(map, is(instanceOf(NonBlockingHashMap.class)));
        assumeThat(key, is(TEST_KEY_0));

        String key1 = "Aa";
        String key2 = "BB";
        NonBlockingHashMap<String, String> map = new NonBlockingHashMap<>();
        assertEquals(key1.hashCode(), key2.hashCode());
        assertNotEquals(key1, key2);
        assertFalse(key1 == key2);
        // key1 and key2 are different instances with same hash, but different equals
        map.put(key1, "a");
        map.remove(key1);
        map.put(key2, "a");
        // key1 remains in the map
        Set<String> keySet = map.keySet();
        assertEquals(keySet.size(), 1);
        assertEquals(keySet.toArray()[0], key2);
        Object[] raw_array = map.raw_array();
        assertTrue(contains(raw_array, key1));
        assertTrue(contains(raw_array, key2));
    }
This test demonstrates a retention issue in the NBHM implementation which keeps old keys around until a resize
event.
See https://github.com/JCTools/JCTools/issues/354
jctools-core/src/test/java/org/jctools/maps/NBHMRemoveTest.java