private int safeSizeOf(K key, V value) {
        int result = sizeOf(key, value);
        if (result < 0) {
            throw new IllegalStateException("Negative size: " + key + "=" + value);
        }
        return result;
    }
Called after a cache miss to compute a value for the corresponding key.
Returns the computed value or null if no value can be computed. The
default implementation returns null.

<p>The method is called without synchronization: other threads may
access the cache while this method is executing.

<p>If a value for {@code key} exists in the cache when this method
returns, the created value will be released with {@link #entryRemoved}
and discarded. This can occur when multiple threads request the same key
at the same time (causing multiple values to be created), or when one
thread calls {@link #put} while another is creating a value for the same
key.
android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/util/collection/LruCache.java