@Override public Comparator getComparator(Class<?> cl) {
        Comparator ret = comparators.get(cl);
        if (ret == null) {
            if (cl == String.class) {
                ret = getStringComparator(ignoreCase);
            } else if (Comparable.class.isAssignableFrom(cl)) {
                ret = Comparator.naturalOrder();
            } else {
                ret = DEFAULT_COMPARATOR;
            }
        }

        return ret;
    }
@Override public Comparator getComparator(Class<?> cl)