@Override
    public DiskRangeList createCacheChunk(MemoryBuffer buffer, long offset, long end) {
      return new CacheChunk(buffer, offset, end);
    }
Encoded reader implementation.

Note about refcounts on cache blocks.
When we get or put blocks into cache, they are "locked" (refcount++), so they cannot be evicted.
We send the MemoryBuffer-s to caller as part of RG data; one MemoryBuffer can be used for many
RGs (e.g. a dictionary, or multiple RGs per block). Also, we want to "unlock" MemoryBuffer-s in
cache as soon as possible. This is how we deal with this:

For dictionary case:
1) There's a separate refcount on the ColumnStreamData object we send to the caller. In the
   dictionary case, it's increased per RG, and callers don't release MBs if the containing
   ColumnStreamData is not ready to be released. This is done because dictionary can have many
   buffers; decrefing all of them for all RGs is more expensive; plus, decrefing in cache
   may be more expensive due to cache policy/etc.

For non-dictionary case:
1) All the ColumnStreamData-s for normal data always have refcount 1; we return them once.
2) At all times, every MB in such cases has +1 refcount for each time we return it as part of CSD.
3) When caller is done, it therefore decrefs SB to 0, and decrefs all the MBs involved.
4) Additionally, we keep an extra +1 refcount "for the fetching thread". That way, if we return
   the MB to caller, and he decrefs it, the MB can't be evicted and will be there if we want to
   reuse it for some other RG.
5) As we read (we always read RGs in order and forward in each stream; we assume they are stored
   physically in order in the file; AND that CBs are not shared between streams), we note which
   MBs cannot possibly be reused anymore (next RG starts in the next CB). We decref the refcount
   from (4) in such case.
6) Given that RG end boundaries in ORC are estimates, we can request data from cache and then
   not use it; thus, at the end we go thru all the MBs, and release those not released by (5).
ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java