private void processDeletion(@NotNull Collection<? extends FilePath> filePaths) {
    Map<VcsRoot, List<FilePath>> map = groupByRoots(myProject, filePaths, identity());

    for (VcsRoot vcsRoot : map.keySet()) {
      AbstractVcs vcs = vcsRoot.getVcs();
      if (vcs == null) continue;

      final CheckinEnvironment localChangesProvider = vcs.getCheckinEnvironment();
      if (localChangesProvider == null) continue;
      final boolean takeDirs = vcs.areDirectoriesVersionedItems();

      final Collection<FilePath> files = map.get(vcsRoot);
      final List<FilePath> toBeDeleted = new ArrayList<>();
      for (FilePath file : files) {
        if (takeDirs || !file.isDirectory()) {
          FilePath parent = file.getParentPath();
          if (parent != null && parent.getIOFile().exists()) {
            toBeDeleted.add(file);
          }
        }
      }

      if (toBeDeleted.isEmpty()) return;
      myAffected.addAll(toBeDeleted);

      if (!vcs.fileListenerIsSynchronous()) {
        myVcsFileListenerContextHelper.ignoreDeleted(toBeDeleted);

        Set<FilePath> paths = myPreparedDeletion.computeIfAbsent(vcs, key -> new HashSet<>());
        paths.addAll(toBeDeleted);
      }
    }
  }
private void processDeletion(@NotNull Collection<? extends FilePath> filePaths)