@Override
    public NavigableMap<String, V> subMap(String upperKey,
                                          String lowerKey,
                                          boolean inclusiveUpper,
                                          boolean inclusiveLower) {
        return complete(treeMap.subMap(upperKey, lowerKey,
                                       inclusiveUpper, inclusiveLower));
    }
@Test
    public void testSubMap() {
        treeMap.putIfAbsent(KEY4, VALUE4);
        treeMap.putIfAbsent(KEY5, VALUE5);

        Map<String, String> subMap = treeMap.subMap(KEY2, KEY4, true, true);
        assertThat(subMap.entrySet(), hasSize(3));
        assertThat(subMap.values(), hasItems(VALUE2, VALUE3, VALUE4));
        assertThat(subMap.keySet(), hasItems(KEY2, KEY3, KEY4));
    }