public void put(final CIKey ciKey, final V value) {
        Objects.requireNonNull(ciKey);
        final String key = ciKey.get();
        caseSensitiveMap.put(key, value);
        final Map<String, V> subMap = caseinsensitiveMap.computeIfAbsent(ciKey, k -> new HashMap<>());
        if (subMap.isEmpty()) {
            subMap.put(key, value);
        } else {
            if (subMap.containsValue(value)) {
                // Already have this value so don't bother adding it
                LOGGER.debug("Dup value {} for key {}", value, key);
            } else {
                subMap.put(key, value);
            }
        }
    }
A map that allows you to perform a lookup in both a case-sensitive and case-insensitive way
<p>
Not thread safe.
</p>
stroom-util/src/main/java/stroom/util/collections/MultiCaseMap.java