docs: @Nullable
    private synchronized ArrayList<Entry<K, V>> trimExclusivelyOwnedEntries(int count, int size) {
      count = Math.max(count, 0);
      size = Math.max(size, 0);
      // fast path without array allocation if no eviction is necessary
      if (mExclusiveEntries.getCount() <= count && mExclusiveEntries.getSizeInBytes() <= size) {
        return null;
      }
      ArrayList<Entry<K, V>> oldEntries = new ArrayList<>();
      while (mExclusiveEntries.getCount() > count || mExclusiveEntries.getSizeInBytes() > size) {
        K key = mExclusiveEntries.getFirstKey();
        mExclusiveEntries.remove(key);
        oldEntries.add(mCachedEntries.remove(key));
      }
      return oldEntries;
    }