Source:
<code>public EquivalenceUpdater<Item> getUpdater( EquivalenceUpdaterProviderDependencies dependencies, Set<Publisher> targetPublishers ) { return ContentEquivalenceUpdater.<Item>builder() .withExcludedUris(dependencies.getExcludedUris()) .withExcludedIds(dependencies.getExcludedIds()) .withGenerators( ImmutableSet.of( BarbAliasEquivalenceGenerator.barbAliasResolvingGenerator( ((MongoLookupEntryStore) dependencies.getLookupEntryStore()), dependencies.getContentResolver() ), new BroadcastMatchingItemEquivalenceGenerator( dependencies.getScheduleResolver(), dependencies.getChannelResolver(), targetPublishers, Duration.standardMinutes(5), Predicates.alwaysTrue() ) ) ) .withScorers( ImmutableSet.of( new ContentAliasScorer(Score.nullScore()), new TitleMatchingItemScorer(Score.nullScore()), new DescriptionTitleMatchingScorer(), DescriptionMatchingScorer.makeScorer() ) ) .withCombiner( new NullScoreAwareAveragingCombiner<>() ) .withFilter( ConjunctiveFilter.valueOf(ImmutableList.of( new MinimumScoreFilter<>(0.25), new MediaTypeFilter<>(), new SpecializationFilter<>(), ExclusionListFilter.create( dependencies.getExcludedUris(), dependencies.getExcludedIds() ), new FilmFilter<>(), new DummyContainerFilter<>(), new UnpublishedContentFilter<>() )) ) .withExtractor( TopEquivalenceExtractor.create() <START> ) <END> .withHandler( new DelegatingEquivalenceResultHandler<>(ImmutableList.of( EpisodeFilteringEquivalenceResultHandler.relaxed( LookupWritingEquivalenceHandler.create( dependencies.getLookupWriter() ), dependencies.getEquivSummaryStore() ), new ResultWritingEquivalenceHandler<>( dependencies.getEquivalenceResultStore() ), new EquivalenceSummaryWritingHandler<>( dependencies.getEquivSummaryStore() ) )) ) .withMessenger( QueueingEquivalenceResultMessenger.create( dependencies.getMessageSender(), dependencies.getLookupEntryStore() ) ) .build(); }</code><technical_language>this extractor produce a single result? want allow many</technical_language>

Target:
public EquivalenceUpdater<Item> getUpdater( EquivalenceUpdaterProviderDependencies dependencies, Set<Publisher> targetPublishers ) { return ContentEquivalenceUpdater.<Item>builder() .withExcludedUris(dependencies.getExcludedUris()) .withExcludedIds(dependencies.getExcludedIds()) .withGenerators( ImmutableSet.of( BarbAliasEquivalenceGenerator.barbAliasResolvingGenerator( ((MongoLookupEntryStore) dependencies.getLookupEntryStore()), dependencies.getContentResolver() ), new BroadcastMatchingItemEquivalenceGenerator( dependencies.getScheduleResolver(), dependencies.getChannelResolver(), targetPublishers, Duration.standardMinutes(5), Predicates.alwaysTrue() ) ) ) .withScorers( ImmutableSet.of( new ContentAliasScorer(Score.nullScore()), new TitleMatchingItemScorer(Score.nullScore()), new DescriptionTitleMatchingScorer(), DescriptionMatchingScorer.makeScorer() ) ) .withCombiner( new NullScoreAwareAveragingCombiner<>() ) .withFilter( ConjunctiveFilter.valueOf(ImmutableList.of( new MinimumScoreFilter<>(0.25), new MediaTypeFilter<>(), new SpecializationFilter<>(), ExclusionListFilter.create( dependencies.getExcludedUris(), dependencies.getExcludedIds() ), new FilmFilter<>(), new DummyContainerFilter<>(), new UnpublishedContentFilter<>() )) ) .withExtractor( AllOverOrEqThresholdExtractor.create(1.5) ) .withHandler( new DelegatingEquivalenceResultHandler<>(ImmutableList.of( EpisodeFilteringEquivalenceResultHandler.relaxed( LookupWritingEquivalenceHandler.create( dependencies.getLookupWriter() ), dependencies.getEquivSummaryStore() ), new ResultWritingEquivalenceHandler<>( dependencies.getEquivalenceResultStore() ), new EquivalenceSummaryWritingHandler<>( dependencies.getEquivSummaryStore() ) )) ) .withMessenger( QueueingEquivalenceResultMessenger.create( dependencies.getMessageSender(), dependencies.getLookupEntryStore() ) ) .build(); }