code: public static <T> Memoizer<T> create(Callable<T> getter, long duration, TimeUnit unit) {
      return new Memoizer<>(getter, duration, unit);
    }
docs: Create a memoizer that caches the value produced by getter for a given duration.
  
  @param getter   A {@link Callable} that returns a new value. This should not throw.
  @param duration how long we should keep the cached value before refreshing it.
  @param unit     unit of time for {@code duration}
  @param <T>      type of the value produced by the {@code getter}
  @return A thread safe memoizer.