@Override
        public boolean apply(@NotNull ArtifactBuildTarget target, @NotNull File file, @NotNull ArtifactRootDescriptor root) throws IOException {
          int rootIndex = root.getRootIndex();
          String sourcePath = FileUtil.toSystemIndependentName(file.getPath());
          addFileToProcess(rootIndex, sourcePath, deletedFiles);
          final Collection<String> outputPaths = srcOutMapping.getOutputs(sourcePath);
          if (outputPaths != null) {
            for (String outputPath : outputPaths) {
              if (changedOutputPaths.add(outputPath)) {
                collectSourcesCorrespondingToOutput(outputPath, sourcePath, deletedFiles, outSrcMapping, filesToDelete);
              }
            }
          }
          return true;
        }
@Override
        public boolean apply(@NotNull ArtifactBuildTarget target, @NotNull File file, @NotNull ArtifactRootDescriptor root)