@Override
  public boolean isDirtyStamp(Stamp stamp, File file, @NotNull BasicFileAttributes attrs) {
    if (!(stamp instanceof FileTimestamp)) return true;
    FileTimestamp timestamp = (FileTimestamp) stamp;
    // for symlinks the attr structure reflects the symlink's timestamp and not symlink's target timestamp
    return attrs.isRegularFile() ? attrs.lastModifiedTime().toMillis() != timestamp.myTimestamp : isDirtyStamp(timestamp, file);
  }
@Override
  public boolean isDirtyStamp(Stamp stamp, File file, @NotNull BasicFileAttributes attrs)