docs: public synchronized T get(final File file, final ItemCreator<T> creator) {
          if (!file.exists()) {
              remove(file);
              return null;
          }
          final long lastmod = file.lastModified();
          final Long cachetime = expiry.get(file);
          final T entry;
          final T orig = cache.get(file);
          if (null == cachetime || expiration.isExpired(file, cachetime, orig)) {
              entry = creator.createCacheItemForFile(file);
              if (null == entry) {
                  remove(file);
                  return null;
              }
              if (null != orig && !entry.equals(orig)) {
                  remove(file);
                  cache.put(file, entry);
              } else if (null == orig) {
                  cache.put(file, entry);
              } else {
                  //noop, retain orig
              }
              expiry.put(file, lastmod);
          } else {
              entry = cache.get(file);
          }
          return entry;
      }