public static CIKey ofIgnoringCase(final String key) {
        if (key == null) {
            return null;
        } else if (key.isEmpty()) {
            return EMPTY_STRING;
        } else {
            final String lowerKey = toLowerCase(key);
            return NullSafe.requireNonNullElseGet(
                    CIKeys.getCommonKeyByLowerCase(lowerKey),
                    () -> CIKey.ofLowerCase(lowerKey));
        }
    }
If ciKey matches a common {@link CIKey} (ignoring case) then return the common
{@link CIKey} else return ciKey. Use this if you don't care about the case of the
wrapped string, e.g. if key is 'FOO', you could get back a {@link CIKey} that wraps
'foo', 'FOO', 'Foo', etc.
<p>
Is null safe. If key is null, returns null.
</p>
stroom-util-shared/src/main/java/stroom/util/shared/string/CIKey.java