@Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        final CIStringHashMap that = (CIStringHashMap) o;
        return Objects.equals(map, that.map);
    }
DOESN'T adhere to the contract of {@link Map#keySet()}, so any changes
to the returned {@link Set} will NOT affect this map.
stroom-meta/stroom-meta-api/src/main/java/stroom/meta/api/CIStringHashMap.java