public Y put(T key, Y item) {
        final int itemSize = getSize(item);
        if (itemSize >= maxSize) {
            onItemEvicted(key, item);
            return null;
        }

        final Y result = cache.put(key, item);
        if (item != null) {
            currentSize += getSize(item);
        }
        if (result != null) {
            // TODO: should we call onItemEvicted here?
            currentSize -= getSize(result);
        }
        evict();

        return result;
    }
Adds the given item to the cache with the given key and returns any previous entry for the given key that may
have already been in the cache.

<p>
    If the size of the item is larger than the total cache size, the item will not be added to the cache and
    instead {@link #onItemEvicted(Object, Object)} will be called synchronously with the given key and item.
</p>

@param key The key to add the item at.
@param item The item to add.
core/src/main/java/com/bumptech/glide/util/LruCache.java