void (@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); } } }