private static Pair<List<CompoundVFileEvent>, List<AsyncFileListener.ChangeApplier>> runAsyncListeners(Collection<VFileEvent> events) {
    var compoundEvents = ContainerUtil.mapNotNull(events, e -> {
      var file = e instanceof VFileCreateEvent ? ((VFileCreateEvent)e).getParent() : e.getFile();
      return file == null || file.isValid() ? new CompoundVFileEvent(e) : null;
    });
    var allEvents = ContainerUtil.flatMap(compoundEvents, e -> {
      var toMap = new SmartList<>(e.getInducedEvents());
      toMap.add(e.getFileEvent());
      return toMap;
    });
    return new Pair<>(compoundEvents, AsyncEventSupport.runAsyncListeners(allEvents));
  }
private static Pair<List<CompoundVFileEvent>, List<AsyncFileListener.ChangeApplier>> runAsyncListeners(Collection<VFileEvent> events)