class URLRepositoryPlugin extends Plugin implements RepositoryPlugin {

    @Override
    public List<Setting<?>> getSettings() {
        return Arrays.asList(
            URLRepository.ALLOWED_URLS_SETTING,
            URLRepository.REPOSITORIES_URL_SETTING,
            URLRepository.SUPPORTED_PROTOCOLS_SETTING
        );
    }

    @Override
    public Map<String, Repository.Factory> getRepositories(Environment env,
                                                           NamedXContentRegistry namedXContentRegistry,
                                                           ClusterService clusterService,
                                                           RecoverySettings recoverySettings) {<FILL_FUNCTION_BODY>}
}

        return Collections.singletonMap(
            URLRepository.TYPE,
            new Repository.Factory() {

                @Override
                public TypeSettings settings() {
                    return new TypeSettings(URLRepository.mandatorySettings(), List.of());
                }

                @Override
                public Repository create(RepositoryMetadata metadata) throws Exception {
                    return new URLRepository(metadata, env, namedXContentRegistry, clusterService, recoverySettings);
                }
            }
        );
    
<methods>public non-sealed void <init>() ,public org.elasticsearch.common.settings.Settings additionalSettings() ,public void close() throws java.io.IOException,public Collection<java.lang.Object> createComponents(org.elasticsearch.client.Client, org.elasticsearch.cluster.service.ClusterService, org.elasticsearch.threadpool.ThreadPool, org.elasticsearch.common.xcontent.NamedXContentRegistry, org.elasticsearch.env.Environment, org.elasticsearch.env.NodeEnvironment, org.elasticsearch.common.io.stream.NamedWriteableRegistry, Supplier<org.elasticsearch.repositories.RepositoriesService>) ,public Collection<org.elasticsearch.common.inject.Module> createGuiceModules() ,public List<org.elasticsearch.bootstrap.BootstrapCheck> getBootstrapChecks() ,public UnaryOperator<Map<java.lang.String,org.elasticsearch.cluster.metadata.Metadata.Custom>> getCustomMetadataUpgrader() ,public Collection<Class<? extends org.elasticsearch.common.component.LifecycleComponent>> getGuiceServiceClasses() ,public BiFunction<org.elasticsearch.cluster.metadata.IndexMetadata,org.elasticsearch.cluster.metadata.IndexTemplateMetadata,org.elasticsearch.cluster.metadata.IndexMetadata> getIndexMetadataUpgrader() ,public UnaryOperator<Map<java.lang.String,org.elasticsearch.cluster.metadata.IndexTemplateMetadata>> getIndexTemplateMetadataUpgrader() ,public List<org.elasticsearch.common.io.stream.NamedWriteableRegistry.Entry> getNamedWriteables() ,public List<org.elasticsearch.common.xcontent.NamedXContentRegistry.Entry> getNamedXContent() ,public Set<org.elasticsearch.cluster.node.DiscoveryNodeRole> getRoles() ,public List<SettingUpgrader<?>> getSettingUpgraders() ,public List<Setting<?>> getSettings() ,public void onIndexModule(org.elasticsearch.index.IndexModule) <variables>