class ExpiringCache {

    public final synchronized void putValue(@Nullable V value) {
        this.value = new SoftReference<>(value);
        expiresAt = calcExpiresAt();
    }

    public  ExpiringCache(Duration expiry, Supplier<@Nullable V> action);
    public  ExpiringCache(long expiry, Supplier<@Nullable V> action);

}