class ProtocolAutoConfiguration {

//    @Bean
//    public ProtocolSupportManager protocolSupportManager(ClusterManager clusterManager) {
//        return new ClusterProtocolSupportManager(clusterManager);
//    }

    @Bean
    public ServiceContext serviceContext(ApplicationContext applicationContext) {
        return new SpringServiceContext(applicationContext);
    }

    @Bean
    public LazyInitManagementProtocolSupports managementProtocolSupports(EventBus eventBus,
                                                                         ClusterManager clusterManager,
                                                                         ProtocolSupportLoader loader) {
        return new LazyInitManagementProtocolSupports(eventBus, clusterManager, loader);
    }

    @Bean
    @Primary
    public LazyProtocolSupports protocolSupports() {
        return new LazyProtocolSupports();
    }

    @Bean
    public AutoDownloadJarProtocolSupportLoader autoDownloadJarProtocolSupportLoader(WebClient.Builder builder, FileManager fileManager) {
        return new AutoDownloadJarProtocolSupportLoader(builder, fileManager);
    }

    @Bean
    public ProtocolSupportLoader protocolSupportLoader(EventBus eventBus,
                                                       ObjectProvider<ProtocolSupportLoaderProvider> providers) {
        SpringProtocolSupportLoader loader = new SpringProtocolSupportLoader(eventBus);
        providers.forEach(loader::register);
        return loader;
    }

    @Bean
    public ProtocolSupports inSpringProtocolSupports(EventBus eventBus,
                                                     ObjectProvider<ProtocolSupport> supports) {<FILL_FUNCTION_BODY>}

    @Bean
    @Profile("dev")
    public LocalProtocolSupportLoader localProtocolSupportLoader(ServiceContext context) {
        return new LocalProtocolSupportLoader(context);
    }
}

        StaticProtocolSupports protocolSupports = new StaticProtocolSupports();
        for (ProtocolSupport protocol : supports) {
            protocolSupports.register(
                new RenameProtocolSupport(
                    protocol.getId(),
                    protocol.getName(),
                    protocol.getDescription(),
                    protocol,
                    eventBus
                )
            );
        }
        return protocolSupports;
    
<no_super_class>