@NotNull
  public static Collection<? extends IndexableIteratorBuilder> getIndexableSetIteratorBuilders(@Nullable IndexableSetContributorDescriptor before,
                                                                                               @NotNull IndexableSetContributorDescriptor after) {
    if (before == null) {
      return after.toIteratorBuilders();
    }
    Set<VirtualFile> applicationRootsToIndex = subtract(after.applicationRoots, before.applicationRoots);
    Set<VirtualFile> projectRootsToIndex = subtract(after.projectRoots, before.projectRoots);

    List<IndexableIteratorBuilder> result = new ArrayList<>(2);
    if (!projectRootsToIndex.isEmpty()) {
      result.add(after.toIteratorBuilderWithRoots(projectRootsToIndex, true));
    }
    if (!applicationRootsToIndex.isEmpty()) {
      result.add(after.toIteratorBuilderWithRoots(applicationRootsToIndex, false));
    }
    return result;
  }
@NotNull
  public static Collection<? extends IndexableIteratorBuilder> getIndexableSetIteratorBuilders(@Nullable IndexableSetContributorDescriptor before,
                                                                                               @NotNull IndexableSetContributorDescriptor after)