static SearchListener combine(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);
      }

      @Override
      public void standardSearchFoundNoResults(@NotNull SearchEverywhereContributor<?> contributor) {
        for (SearchListener l: listeners) l.standardSearchFoundNoResults(contributor);
      }
    };
  }
static SearchListener combine(Collection<SearchListener> listeners)