class MultiMapFactory {

    public static <Key extends Comparable, Value, ListType extends List<Value>> MultiMap<Key, Value, ListType> make(final boolean updatable,
                                                                                                                    final NewSubMapProvider<Value, ListType> newSubMapProvider) {
        if (updatable) {
            return new ChangeHandledMultiMap<>(new RawMultiMap<>(newSubMapProvider));
        } else {
            return new RawMultiMap<>(newSubMapProvider);
        }
    }

}