public V removeLast() {
        LinkedEntry<K, V> last = head.prev;

        while (!last.equals(head)) {
            V removed = last.removeLast();
            if (removed != null) {
                return removed;
            } else {
                // We will clean up empty lru entries since they are likely to have been one off or unusual sizes and
                // are not likely to be requested again so the gc thrash should be minimal. Doing so will speed up our
                // removeLast operation in the future and prevent our linked list from growing to arbitrarily large
                // sizes.
                removeEntry(last);
                keyToEntry.remove(last.key);
                last.key.offer();
            }

            last = last.prev;
        }

        return null;
    }
Similar to {@link java.util.LinkedHashMap} when access ordered except that it is access ordered on groups
of bitmaps rather than individual objects. The idea is to be able to find the LRU bitmap size, rather than the
LRU bitmap object. We can then remove bitmaps from the least recently used size of bitmap when we need to
reduce our cache size.

For the purposes of the LRU, we count gets for a particular size of bitmap as an access, even if no bitmaps
of that size are present. We do not count addition or removal of bitmaps as an access.
core/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/GroupedLinkedMap.java