class DefaultResourceManager implements ResourceManager {
    private final Map<String, ResourceProvider> providers = new ConcurrentHashMap<>();

    public DefaultResourceManager() {
    }

    public void addProvider(ResourceProvider provider) {
        providers.put(provider.getType(), provider);
    }

    @Override
    public Flux<Resource> getResources(String type) {
        return getResources(type, null);
    }

    @Override
    public Flux<Resource> getResources(String type, Collection<String> id) {<FILL_FUNCTION_BODY>}

    private Mono<ResourceProvider> getProvider(String type) {
        return Mono.justOrEmpty(providers.get(type));
    }

}

        return this
            .getProvider(type)
            .flatMapMany(provider -> CollectionUtils.isEmpty(id) ? provider.getResources() : provider.getResources(id));
    
<no_super_class>