code: @Override
    protected UnsafeRow getValueFromKey(int rowId) {
      if (keyRowId != rowId) {
        getKeyRow(rowId);
      }
      assert(rowId >= 0);
      valueRow.pointTo(base, keyRow.getBaseOffset() + klen, vlen);
      return valueRow;
    }
docs: Returns the value row by two steps:
  1) looking up the key row with the same id (skipped if the key row is cached)
  2) retrieve the value row by reusing the metadata from step 1)
  In most times, 1) is skipped because `getKeyRow(id)` is often called before `getValueRow(id)`.