@Test public void shouldRemoveDuplicates() { final DuplicateDetectionWrapper duplicateDetection = new DuplicateDetectionWrapper(); Guice.createInjector(new AbstractModule() { @Override protected void configure() { install(duplicateDetection.wrap(new Module1())); install(duplicateDetection.wrap(new Module1())); install(Elements.getModule(Elements.getElements(duplicateDetection.wrap(new Module1())))); } }); }
public Module wrap(final Module module) { if (module instanceof PrivateModule) { return new PrivateModule() { @Override protected void configure() { if (modules.add(module)) { module.configure(createForwardingBinder(binder())); install(ProviderMethodsModule.forModule(module)); } } }; } return (Binder binder) -> { if (modules.add(module)) { module.configure(createForwardingBinder(binder)); binder.install(ProviderMethodsModule.forModule(module)); } }; }
DuplicateDetectionWrapper { public Module wrap(final Module module) { if (module instanceof PrivateModule) { return new PrivateModule() { @Override protected void configure() { if (modules.add(module)) { module.configure(createForwardingBinder(binder())); install(ProviderMethodsModule.forModule(module)); } } }; } return (Binder binder) -> { if (modules.add(module)) { module.configure(createForwardingBinder(binder)); binder.install(ProviderMethodsModule.forModule(module)); } }; } }
DuplicateDetectionWrapper { public Module wrap(final Module module) { if (module instanceof PrivateModule) { return new PrivateModule() { @Override protected void configure() { if (modules.add(module)) { module.configure(createForwardingBinder(binder())); install(ProviderMethodsModule.forModule(module)); } } }; } return (Binder binder) -> { if (modules.add(module)) { module.configure(createForwardingBinder(binder)); binder.install(ProviderMethodsModule.forModule(module)); } }; }  }
DuplicateDetectionWrapper { public Module wrap(final Module module) { if (module instanceof PrivateModule) { return new PrivateModule() { @Override protected void configure() { if (modules.add(module)) { module.configure(createForwardingBinder(binder())); install(ProviderMethodsModule.forModule(module)); } } }; } return (Binder binder) -> { if (modules.add(module)) { module.configure(createForwardingBinder(binder)); binder.install(ProviderMethodsModule.forModule(module)); } }; }  Module wrap(final Module module); }
DuplicateDetectionWrapper { public Module wrap(final Module module) { if (module instanceof PrivateModule) { return new PrivateModule() { @Override protected void configure() { if (modules.add(module)) { module.configure(createForwardingBinder(binder())); install(ProviderMethodsModule.forModule(module)); } } }; } return (Binder binder) -> { if (modules.add(module)) { module.configure(createForwardingBinder(binder)); binder.install(ProviderMethodsModule.forModule(module)); } }; }  Module wrap(final Module module);  }