public static <T> Expiring<T> suppliedBy(Supplier<T> supplier, long duration, TimeUnit unit) {
        Objects.requireNonNull(supplier, "supplier");
        Preconditions.checkArgument(duration > 0);
        Objects.requireNonNull(unit, "unit");

        return new Expiring<>(supplier, duration, unit);
    }
An expiring supplier extension.

<p>The delegate supplier is only called on executions of {@link #get()} if the
result isn't already calculated.</p>

@param <T> the supplied type
helper/src/main/java/me/lucko/helper/cache/Expiring.java