public void readMultiLevelIndexRoot(HFileBlock blk, final int numEntries) throws IOException {
      DataInputStream in = readRootIndex(blk, numEntries);
      // HFileBlock.getByteStream() returns a byte stream for reading the data(excluding checksum)
      // of root index block, so after reading the root index there is no need to subtract the
      // checksum bytes.
      if (in.available() < MID_KEY_METADATA_SIZE) {
        // No mid-key metadata available.
        return;
      }
      midLeafBlockOffset = in.readLong();
      midLeafBlockOnDiskSize = in.readInt();
      midKeyEntry = in.readInt();
    }
Read the root-level metadata of a multi-level block index. Based on
{@link #readRootIndex(DataInput, int)}, but also reads metadata necessary to compute the
mid-key in a multi-level index.
@param blk        the HFile block
@param numEntries the number of root-level index entries
hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java