@Override
  public Optional<Boolean> isAlreadyCached(BlockCacheKey key) {
    boolean foundKey = backingMap.containsKey(key);
    // if there's no entry for the key itself, we need to check if this key is for a reference,
    // and if so, look for a block from the referenced file using this getBlockForReference method.
    return Optional.of(foundKey ? true : getBlockForReference(key) != null);
  }
Defined an {@link Consumer} here, because once the removed entry release its reference count,
then it's ByteBuffers may be recycled and accessing it outside this method will be thrown an
exception. the consumer will access entry to remove before release its reference count.
Notice, don't change its reference count in the {@link Consumer}
hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java