### Question:
DuplicatingLog extends AbstractLog { public boolean remove( Log log ) { boolean removed = this.logs.remove( log ); this.debugLogger.remove( log.debugLogger() ); this.infoLogger.remove( log.infoLogger() ); this.warnLogger.remove( log.warnLogger() ); this.errorLogger.remove( log.errorLogger() ); return removed; } DuplicatingLog( Log... logs );  DuplicatingLog( List<Log> logs ); boolean remove( Log log ); @Override boolean isDebugEnabled(); @Nonnull @Override Logger debugLogger(); @Nonnull @Override Logger infoLogger(); @Nonnull @Override Logger warnLogger(); @Nonnull @Override Logger errorLogger(); @Override void bulk( @Nonnull Consumer<Log> consumer );  }### Answer:
@Test void shouldRemoveLogFromDuplication() { AssertableLogProvider logProvider = new AssertableLogProvider(); Log log1 = logProvider.getLog( "log 1" ); Log log2 = logProvider.getLog( "log 2" ); DuplicatingLog log = new DuplicatingLog( log1, log2 ); log.info( "When the going gets weird" ); log.remove( log1 ); log.info( "The weird turn pro" ); logProvider.assertExactly( AssertableLogProvider.inLog( "log 1" ).info( "When the going gets weird" ), AssertableLogProvider.inLog( "log 2" ).info( "When the going gets weird" ), AssertableLogProvider.inLog( "log 2" ).info( "The weird turn pro" ) ); }