class CopyModule extends AbstractModule {

    List<CopyPlugin> copyPlugins;

    public CopyModule(List<CopyPlugin> copyPlugins) {
        this.copyPlugins = copyPlugins;
    }

    @Override
    protected void configure() {<FILL_FUNCTION_BODY>}
}

        MapBinder<String, FileInputFactory> fileInputFactoryMapBinder = MapBinder.newMapBinder(binder(), String.class, FileInputFactory.class);
        MapBinder<String, FileOutputFactory> fileOutputFactoryMapBinder = MapBinder.newMapBinder(binder(), String.class, FileOutputFactory.class);

        fileInputFactoryMapBinder.addBinding(LocalFsFileInputFactory.NAME).to(LocalFsFileInputFactory.class).asEagerSingleton();
        fileOutputFactoryMapBinder.addBinding(LocalFsFileOutputFactory.NAME).to(LocalFsFileOutputFactory.class).asEagerSingleton();

        for (var copyPlugin : copyPlugins) {
            for (var e : copyPlugin.getFileInputFactories().entrySet()) {
                fileInputFactoryMapBinder.addBinding(e.getKey()).toInstance(e.getValue());
            }
            for (var e : copyPlugin.getFileOutputFactories().entrySet()) {
                fileOutputFactoryMapBinder.addBinding(e.getKey()).toInstance(e.getValue());
            }
        }
    
<methods>public non-sealed void <init>() ,public final synchronized void configure(org.elasticsearch.common.inject.Binder) <variables>org.elasticsearch.common.inject.Binder binder