protected ValidationResult doValidateNotChanged(File toFile, ValidationResult.Action action) throws IOException {
    if (toFile.exists()) {
      if (isModified(toFile)) {
        ValidationResult.Option[] options = calculateOptions();
        String details = "expected 0x" + Long.toHexString(myChecksum) + ", actual 0x" + Long.toHexString(myPatch.digestFile(toFile));
        ValidationResult.Kind kind = isCritical() ? ValidationResult.Kind.CONFLICT : ValidationResult.Kind.ERROR;
        return new ValidationResult(kind, getReportPath(), action, UpdaterUI.message("file.modified"), details, options);
      }
    }
    else if (!isOptional()) {
      ValidationResult.Option[] options = calculateOptions();
      ValidationResult.Kind kind = isCritical() ? ValidationResult.Kind.CONFLICT : ValidationResult.Kind.ERROR;
      return new ValidationResult(kind, getReportPath(), action, UpdaterUI.message("file.absent"), options);
    }

    return null;
  }
protected ValidationResult doValidateNotChanged(File toFile, ValidationResult.Action action)