SearchListener (Collection<SearchListener> listeners) { return new SearchListener() { @Override public void elementsAdded(@NotNull List<? extends SearchEverywhereFoundElementInfo> list) { for (SearchListener l : listeners) l.elementsAdded(list); } @Override public void elementsRemoved(@NotNull List<? extends SearchEverywhereFoundElementInfo> list) { for (SearchListener l : listeners) l.elementsRemoved(list); } @Override public void contributorWaits(@NotNull SearchEverywhereContributor<?> contributor) { for (SearchListener l : listeners) l.contributorWaits(contributor); } @Override public void contributorFinished(@NotNull SearchEverywhereContributor<?> contributor, boolean hasMore) { for (SearchListener l : listeners) l.contributorFinished(contributor, hasMore); } @Override public void searchStarted(@NotNull String pattern, @NotNull Collection<? extends SearchEverywhereContributor<?>> contributors) { for (SearchListener l : listeners) l.searchStarted(pattern, contributors); } @Override public void searchFinished(@NotNull Map<SearchEverywhereContributor<?>, Boolean> hasMoreContributors) { for (SearchListener l : listeners) l.searchFinished(hasMoreContributors); } }; }