LdapIdentityProperties extends HashMap<String, Object> { @Override public Object remove(Object key) { keyMapping.remove(convert(key)); return super.remove(key); } LdapIdentityProperties(int initialCapacity, float loadFactor);  LdapIdentityProperties(int initialCapacity);  LdapIdentityProperties();  LdapIdentityProperties(Map<? extends String, ?> m); @Override Object put(String key, Object value); @Override Object remove(Object key); @Override Object get(Object key); @Override boolean containsKey(Object key); @Override void putAll(Map<? extends String, ?> m); @Override void clear();  }
@Test public void testRemove() { assertEquals("value2", properties.remove("A")); assertEquals(1, properties.size()); assertEquals("value", properties.remove("a")); assertTrue(properties.isEmpty()); }