public MultiMap<Value, T, List<T>> search() {

        if (matcher.isNegate()) {

            if (map.containsKey(matcher.getValue())) {

                return MultiMap.merge(map.subMap(map.firstKey(), true,
                                                 matcher.getValue(), false),
                                      map.subMap(matcher.getValue(), false,
                                                 map.lastKey(), true));
            } else {
                return map;
            }
        } else {
            return map.subMap(matcher.getValue(), true,
                              matcher.getValue(), true);
        }
    }
@Test
    void testNullSearch() throws Exception {
        search = new ExactMatcherSearch<>(new ExactMatcher(KeyDefinition.newKeyDefinition().withId("value").build(),
                        null),
                map);
        MultiMap<Value, Object, List<Object>> search1 = search.search();
        
        assertThat(search1.get(new Value(null)).get(0)).isEqualTo("I am null");

    }