public boolean markRecompileIfNotDeleted(BuildRootDescriptor root, File file) {
    lockData();
    try {
      String path = null;
      final boolean isMarkedDeleted = !myDeletedPaths.isEmpty() && myDeletedPaths.contains(path = FileUtil.toCanonicalPath(file.getPath()));
      if (!isMarkedDeleted) {
        if (!file.exists()) {
          // incorrect paths data recovery, so that the next make should not contain non-existing sources in 'recompile' list
          if (path == null) {
            path = FileUtil.toCanonicalPath(file.getPath());
          }
          if (Utils.IS_TEST_MODE) {
            LOG.info("Marking deleted: " + path);
          }
          myDeletedPaths.add(path);
          return false;
        }
        _addToRecompiled(root, file);
        return true;
      }
      return false;
    }
    finally {
      unlockData();
    }
  }
public boolean markRecompileIfNotDeleted(BuildRootDescriptor root, File file)