code: public synchronized boolean needsReload(final File file) throws IOException {
          final long lastMod = file.lastModified();
          if (!file.exists()) {
              mtimes.remove(file);
          }
          final Long aLong = mtimes.get(file);
          return null == aLong || lastMod > aLong;
      }
docs: Returns true if the file does not exist, or has been modified since the last time it was loaded.
  @param file File to check
  @return true if the file needs to be reloaded.
  @throws IOException on io error