@Override
    public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
        // if value == null ,HashMap will throw NPE
        if (key == null && value != null) {
            return null;
        }
        return super.merge(key, value, remappingFunction);
    }
@Test
    public void testMerge() {
        Assert.assertEquals(VALUE, map.get(KEY));
        try {
            map.merge(null, null, (key, value) -> "");
            Assert.fail();
        } catch (NullPointerException npe) {
            //ignore
        }
        Assert.assertNull(map.merge(null, "value", (key, value) -> ""));
        Assert.assertEquals("value1", map.merge("key1", "value1", (v1, v2) -> v1 + "" + v2));
        Assert.assertEquals(VALUE + VALUE, map.merge(KEY, VALUE, (v1, v2) -> v1 + "" + v2));
    }