@Override
    public boolean replace(K key, long expectedOldValue, long newValue) {
        return complete(asyncCounterMap.replace(key, expectedOldValue, newValue));
    }
@Test
    public void testReplace() {
        atomicCounterMap.putIfAbsent(KEY1, VALUE1);

        boolean replaced = atomicCounterMap.replace(KEY1, VALUE1, VALUE1 * 2);
        assertThat(replaced, is(true));
        Long afterReplace = atomicCounterMap.get(KEY1);
        assertThat(afterReplace, is(VALUE1 * 2));

        boolean notReplaced = atomicCounterMap.replace(KEY1, VALUE1, VALUE1 * 2);
        assertThat(notReplaced, is(false));
        Long afterNotReplaced = atomicCounterMap.get(KEY1);
        assertThat(afterNotReplaced, is(VALUE1 * 2));
    }