/// @param minReloadIntervalMS
   ///          the minimum interval in milliseconds after which a full reload of the original datafile is done
   ///          when refresh() is called
   /// @see #FileItemSimilarity(File)
  public FileItemSimilarity(File dataFile, long minReloadIntervalMS) {
    //Preconditions.checkArgument(dataFile != null, "dataFile is null");
    //Preconditions.checkArgument(dataFile.exists() && !dataFile.isDirectory(),
    //  "dataFile is missing or a directory: %s", dataFile);

    log.info("Creating FileItemSimilarity for file {}", dataFile);

    this.dataFile = dataFile.getAbsoluteFile();
    this.lastModified = dataFile.lastModified();
    this.minReloadIntervalMS = minReloadIntervalMS;
    this.reloadLock = new ReentrantLock();

    reload();
  }