public synchronized Map.Entry<K, V> pop() {
        Map.Entry<K, V> entry = cache.pop();
        if (entry != null) {
            afterRemoveValue(entry.getValue());
        }

        stats.markPop(cacheName);

        return entry;
    }
An asynchronous LRU cache that supports asynchronous value computation.

@param <K> key type
@param <V> value type, NOTE: V must not override equals and hashCode
s3stream/src/main/java/com/automq/stream/s3/cache/AsyncLRUCache.java