class ExtensionAdderProviders {

    static <O, E extends Extension<O>, B extends ExtensionAdder<O, E>> ExtensionAdderProvider findCachedProvider(
            String name, Class<B> type,
            ConcurrentMap<String, List<ExtensionAdderProvider>> providersMap,
            ConcurrentMap<Pair<String, Class>, ExtensionAdderProvider> cache) {
        return cache.computeIfAbsent(Pair.of(name, type), k -> findProvider(name, type, providersMap));
    }

    private  ExtensionAdderProviders();

}