@Override
  public String toString() {
    return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
      .append("largestRowAsString", Bytes.toStringBinary(largestRow))
      .append("largestCellAsString", largestCell).append("largestRowNumBytes", largestRowNumBytes)
      .append("largestRowCellsCount", largestRowCellsCount)
      .append("largestCellNumBytes", largestCellNumBytes)
      .append("cellsLargerThanOneBlockCount", cellsLargerThanOneBlockCount)
      .append("rowsLargerThanOneBlockCount", rowsLargerThanOneBlockCount)
      .append("cellsLargerThanMaxCacheSizeCount", cellsLargerThanMaxCacheSizeCount)
      .append("totalDeletesCount", totalDeletesCount).append("totalCellsCount", totalCellsCount)
      .append("totalRowsCount", totalRowsCount).append("totalBytesCount", totalBytesCount)
      .append("rowSizeBuckets", getRowSizeBuckets())
      .append("valueSizeBuckets", getValueSizeBuckets()).append("isMajor", isMajor).toString();
  }
Clone the cell refs so they can be cleaned up by {@link Shipper#shipped()}. Doing this lazily
here, rather than eagerly in the above two methods can save us on some allocations. We might
change the largestCell/largestRow multiple times between shipped() calls.
hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/row/stats/RowStatisticsImpl.java