Source:
public static Injector makeInjectorWithModules(final Injector baseInjector, Iterable<? extends Module> modules) { final ModuleList defaultModules = new ModuleList(baseInjector); defaultModules.addModules( new DruidAuthModule(), new Log4jShutterDownerModule(), new LifecycleModule(), EmitterModule.class, HttpClientModule.global(), new HttpClientModule("druid.broker.http", Client.class), new CuratorModule(), new AnnouncerModule(), new DruidProcessingModule(), new AWSModule(), new MetricsModule(), new ServerModule(), new StorageNodeModule(), new JettyServerModule(), new QueryableModule(), new QueryRunnerFactoryModule(), new DiscoveryModule(), new ServerViewModule(), new MetadataConfigModule(), new DerbyMetadataStorageDruidModule(), new JacksonConfigManagerModule(), new IndexingServiceDiscoveryModule(), new CoordinatorDiscoveryModule(), new LocalDataStorageDruidModule(), new FirehoseModule(), new ParsersModule() ); ModuleList actualModules = new ModuleList(baseInjector); actualModules.addModule(DruidSecondaryModule.class); for (Object module : modules) { actualModules.addModule(module); } Module intermediateModules = Modules.override(defaultModules.getModules()).with(actualModules.getModules()); ModuleList extensionModules = new ModuleList(baseInjector); final ExtensionsConfig config = baseInjector.getInstance(ExtensionsConfig.class); for (DruidModule module : Initialization.getFromExtensions(config, DruidModule.class)) { extensionModules.addModule(module); } return Guice.createInjector(Modules.override(intermediateModules).with(extensionModules.getModules())); }

Target:
public static Injector makeInjectorWithModules(final Injector baseInjector, Iterable<? extends Module> modules) { final ModuleList defaultModules = new ModuleList(baseInjector); defaultModules.addModules( new Log4jShutterDownerModule(), new DruidAuthModule(), new LifecycleModule(), EmitterModule.class, HttpClientModule.global(), new HttpClientModule("druid.broker.http", Client.class), new CuratorModule(), new AnnouncerModule(), new DruidProcessingModule(), new AWSModule(), new MetricsModule(), new ServerModule(), new StorageNodeModule(), new JettyServerModule(), new QueryableModule(), new QueryRunnerFactoryModule(), new DiscoveryModule(), new ServerViewModule(), new MetadataConfigModule(), new DerbyMetadataStorageDruidModule(), new JacksonConfigManagerModule(), new IndexingServiceDiscoveryModule(), new CoordinatorDiscoveryModule(), new LocalDataStorageDruidModule(), new FirehoseModule(), new ParsersModule(), new JavaScriptModule(), new StartupLoggingModule() ); ModuleList actualModules = new ModuleList(baseInjector); actualModules.addModule(DruidSecondaryModule.class); for (Object module : modules) { actualModules.addModule(module); } Module intermediateModules = Modules.override(defaultModules.getModules()).with(actualModules.getModules()); ModuleList extensionModules = new ModuleList(baseInjector); final ExtensionsConfig config = baseInjector.getInstance(ExtensionsConfig.class); for (DruidModule module : Initialization.getFromExtensions(config, DruidModule.class)) { extensionModules.addModule(module); } return Guice.createInjector(Modules.override(intermediateModules).with(extensionModules.getModules())); }