http://git-wip-us.apache.org/repos/asf/hbase-site/blob/991224b9/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.TagRewriteCell.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.TagRewriteCell.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.TagRewriteCell.html
index d143ef8..4583895 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.TagRewriteCell.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.TagRewriteCell.html
@@ -258,7 +258,7 @@
 <span class="sourceLineNo">250</span><a name="line.250"></a>
 <span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
 <span class="sourceLineNo">252</span>    public long heapSize() {<a 
name="line.252"></a>
-<span class="sourceLineNo">253</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedHeapSizeOf(cell);<a name="line.253"></a>
+<span class="sourceLineNo">253</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedSizeOfCell(cell);<a name="line.253"></a>
 <span class="sourceLineNo">254</span>      if (this.tags != null) {<a 
name="line.254"></a>
 <span class="sourceLineNo">255</span>        sum += 
ClassSize.sizeOf(this.tags);<a name="line.255"></a>
 <span class="sourceLineNo">256</span>      }<a name="line.256"></a>
@@ -454,7 +454,7 @@
 <span class="sourceLineNo">446</span><a name="line.446"></a>
 <span class="sourceLineNo">447</span>    @Override<a name="line.447"></a>
 <span class="sourceLineNo">448</span>    public long heapSize() {<a 
name="line.448"></a>
-<span class="sourceLineNo">449</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedHeapSizeOf(cell);<a name="line.449"></a>
+<span class="sourceLineNo">449</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedSizeOfCell(cell);<a name="line.449"></a>
 <span class="sourceLineNo">450</span>      // this.tags is on heap byte[]<a 
name="line.450"></a>
 <span class="sourceLineNo">451</span>      if (this.tags != null) {<a 
name="line.451"></a>
 <span class="sourceLineNo">452</span>        sum += 
ClassSize.sizeOf(this.tags);<a name="line.452"></a>
@@ -2791,192 +2791,193 @@
 <span class="sourceLineNo">2783</span>   * {@link HeapSize} we call {@link 
HeapSize#heapSize()} so cell can give a correct value. In other<a 
name="line.2783"></a>
 <span class="sourceLineNo">2784</span>   * cases we just consider the bytes 
occupied by the cell components ie. row, CF, qualifier,<a name="line.2784"></a>
 <span class="sourceLineNo">2785</span>   * timestamp, type, value and tags.<a 
name="line.2785"></a>
-<span class="sourceLineNo">2786</span>   * @param cell<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>   * @return estimate of the heap 
space<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>   */<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>  public static long 
estimatedHeapSizeOf(final Cell cell) {<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>    if (cell instanceof HeapSize) {<a 
name="line.2790"></a>
-<span class="sourceLineNo">2791</span>      return ((HeapSize) 
cell).heapSize();<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>    }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    // TODO: Add sizing of references 
that hold the row, family, etc., arrays.<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>    return 
estimatedSerializedSizeOf(cell);<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>  }<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span><a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>  /**<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>   * This method exists just to 
encapsulate how we serialize keys. To be replaced by a factory that<a 
name="line.2798"></a>
-<span class="sourceLineNo">2799</span>   * we query to figure what the Cell 
implementation is and then, what serialization engine to use<a 
name="line.2799"></a>
-<span class="sourceLineNo">2800</span>   * and further, how to serialize the 
key for inclusion in hfile index. TODO.<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>   * @param cell<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span>   * @return The key portion of the Cell 
serialized in the old-school KeyValue way or null if passed<a 
name="line.2802"></a>
-<span class="sourceLineNo">2803</span>   *         a null 
&lt;code&gt;cell&lt;/code&gt;<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>   */<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>  public static byte[] 
getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    if (cell == null) return null;<a 
name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    byte[] b = new 
byte[KeyValueUtil.keyLength(cell)];<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    KeyValueUtil.appendKeyTo(cell, b, 
0);<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>    return b;<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>  }<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span><a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>  /**<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's row.<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>   * @param cell<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span>   * @return First possible Cell on 
passed Cell's row.<a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>   */<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>  public static Cell 
createFirstOnRow(final Cell cell) {<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>      return new 
FirstOnRowByteBufferExtendedCell(<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>    }<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>    return new 
FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2823"></a>
-<span class="sourceLineNo">2824</span>  }<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span><a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength) {<a 
name="line.2826"></a>
-<span class="sourceLineNo">2827</span>    return new FirstOnRowCell(row, 
roffset, rlength);<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>  }<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span><a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>  public static Cell 
createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a 
name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    return createFirstOnRow(row, 0, 
(short) row.length, family, 0, (byte) family.length, col, 0,<a 
name="line.2831"></a>
-<span class="sourceLineNo">2832</span>        col.length);<a 
name="line.2832"></a>
-<span class="sourceLineNo">2833</span>  }<a name="line.2833"></a>
-<span class="sourceLineNo">2834</span><a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength,<a 
name="line.2835"></a>
-<span class="sourceLineNo">2836</span>      final byte[] family, int foffset, 
byte flength, final byte[] col, int coffset, int clength) {<a 
name="line.2836"></a>
-<span class="sourceLineNo">2837</span>    return new FirstOnRowColCell(row, 
roffset, rlength, family, foffset, flength, col, coffset,<a 
name="line.2837"></a>
-<span class="sourceLineNo">2838</span>        clength);<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>  }<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span><a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>  public static Cell 
createFirstOnRow(final byte[] row) {<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>    return createFirstOnRow(row, 0, 
(short) row.length);<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>  }<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span><a name="line.2844"></a>
-<span class="sourceLineNo">2845</span>  public static Cell 
createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a 
name="line.2845"></a>
-<span class="sourceLineNo">2846</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>          ByteBuffer.wrap(fArray), foff, 
(byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>    }<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        fArray, foff, (byte) flen, 
HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>  }<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span><a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>  public static Cell 
createFirstOnRowCol(final Cell cell) {<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          HConstants.EMPTY_BYTE_BUFFER, 
0, (byte) 0,<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2863"></a>
-<span class="sourceLineNo">2864</span>    }<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 
(byte) 0, cell.getQualifierArray(),<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span>        cell.getQualifierOffset(), 
cell.getQualifierLength());<a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>  }<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span><a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>  public static Cell 
createFirstOnNextRow(final Cell cell) {<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>    byte[] nextRow = new 
byte[cell.getRowLength() + 1];<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>    CellUtil.copyRowTo(cell, nextRow, 
0);<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>    nextRow[nextRow.length - 1] = 0;// 
maybe not necessary<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>    return new FirstOnRowCell(nextRow, 
0, (short) nextRow.length);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>  }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span><a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>  /**<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's rk:cf and<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>   * passed qualifier.<a 
name="line.2879"></a>
-<span class="sourceLineNo">2880</span>   * @param cell<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>   * @param qArray<a 
name="line.2881"></a>
-<span class="sourceLineNo">2882</span>   * @param qoffest<a 
name="line.2882"></a>
-<span class="sourceLineNo">2883</span>   * @param qlength<a 
name="line.2883"></a>
-<span class="sourceLineNo">2884</span>   * @return Last possible Cell on 
passed Cell's rk:cf and passed qualifier.<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span>   */<a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  public static Cell 
createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) 
{<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>          ByteBuffer.wrap(qArray), 
qoffest, qlength);<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a 
name="line.2896"></a>
-<span class="sourceLineNo">2897</span>        qlength);<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>  }<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span><a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  /**<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span>   * Creates the first cell with the 
row/family/qualifier of this cell and the given timestamp. Uses<a 
name="line.2901"></a>
-<span class="sourceLineNo">2902</span>   * the "maximum" type that guarantees 
that the new cell is the lowest possible for this<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>   * combination of row, family, 
qualifier, and timestamp. This cell's own timestamp is ignored.<a 
name="line.2903"></a>
-<span class="sourceLineNo">2904</span>   * @param cell - cell<a 
name="line.2904"></a>
-<span class="sourceLineNo">2905</span>   * @param ts<a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>   */<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>  public static Cell 
createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>      return new 
FirstOnRowColTSByteBufferExtendedCell(<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a 
name="line.2915"></a>
-<span class="sourceLineNo">2916</span>    }<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    return new 
FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a 
name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  }<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span><a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>  /**<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's row.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   * @param cell<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>   * @return Last possible Cell on 
passed Cell's row.<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>   */<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>  public static Cell 
createLastOnRow(final Cell cell) {<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>      return new 
LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span>    }<a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    return new 
LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2932"></a>
-<span class="sourceLineNo">2933</span>  }<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span><a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>  public static Cell 
createLastOnRow(final byte[] row) {<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    return new LastOnRowCell(row, 0, 
(short) row.length);<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>  }<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>  /**<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's rk:cf:q. Used<a 
name="line.2940"></a>
-<span class="sourceLineNo">2941</span>   * in creating "fake keys" for the 
multi-column Bloom filter optimization to skip the row/column<a 
name="line.2941"></a>
-<span class="sourceLineNo">2942</span>   * we already know is not in the 
file.<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>   * @param cell<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>   * @return Last possible Cell on 
passed Cell's rk:cf:q.<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span>   */<a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>  public static Cell 
createLastOnRowCol(final Cell cell) {<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      return new 
LastOnRowColByteBufferExtendedCell(<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    }<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>    return new 
LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>  }<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span><a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>  /**<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span>   * Create a Delete Family Cell for the 
specified row and family that would be smaller than all<a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>   * other possible Delete Family 
KeyValues that have the same row and family. Used for seeking.<a 
name="line.2963"></a>
-<span class="sourceLineNo">2964</span>   * @param row - row key (arbitrary 
byte array)<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>   * @param fam - family name<a 
name="line.2965"></a>
-<span class="sourceLineNo">2966</span>   * @return First Delete Family 
possible key on passed &lt;code&gt;row&lt;/code&gt;.<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>   */<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>  public static Cell 
createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a 
name="line.2968"></a>
-<span class="sourceLineNo">2969</span>    return new 
FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>  }<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>}<a name="line.2971"></a>
+<span class="sourceLineNo">2786</span>   * Note that this can be the JVM heap 
space (on-heap) or the OS heap (off-heap)<a name="line.2786"></a>
+<span class="sourceLineNo">2787</span>   * @param cell<a name="line.2787"></a>
+<span class="sourceLineNo">2788</span>   * @return estimate of the heap 
space<a name="line.2788"></a>
+<span class="sourceLineNo">2789</span>   */<a name="line.2789"></a>
+<span class="sourceLineNo">2790</span>  public static long 
estimatedSizeOfCell(final Cell cell) {<a name="line.2790"></a>
+<span class="sourceLineNo">2791</span>    if (cell instanceof HeapSize) {<a 
name="line.2791"></a>
+<span class="sourceLineNo">2792</span>      return ((HeapSize) 
cell).heapSize();<a name="line.2792"></a>
+<span class="sourceLineNo">2793</span>    }<a name="line.2793"></a>
+<span class="sourceLineNo">2794</span>    // TODO: Add sizing of references 
that hold the row, family, etc., arrays.<a name="line.2794"></a>
+<span class="sourceLineNo">2795</span>    return 
estimatedSerializedSizeOf(cell);<a name="line.2795"></a>
+<span class="sourceLineNo">2796</span>  }<a name="line.2796"></a>
+<span class="sourceLineNo">2797</span><a name="line.2797"></a>
+<span class="sourceLineNo">2798</span>  /**<a name="line.2798"></a>
+<span class="sourceLineNo">2799</span>   * This method exists just to 
encapsulate how we serialize keys. To be replaced by a factory that<a 
name="line.2799"></a>
+<span class="sourceLineNo">2800</span>   * we query to figure what the Cell 
implementation is and then, what serialization engine to use<a 
name="line.2800"></a>
+<span class="sourceLineNo">2801</span>   * and further, how to serialize the 
key for inclusion in hfile index. TODO.<a name="line.2801"></a>
+<span class="sourceLineNo">2802</span>   * @param cell<a name="line.2802"></a>
+<span class="sourceLineNo">2803</span>   * @return The key portion of the Cell 
serialized in the old-school KeyValue way or null if passed<a 
name="line.2803"></a>
+<span class="sourceLineNo">2804</span>   *         a null 
&lt;code&gt;cell&lt;/code&gt;<a name="line.2804"></a>
+<span class="sourceLineNo">2805</span>   */<a name="line.2805"></a>
+<span class="sourceLineNo">2806</span>  public static byte[] 
getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2806"></a>
+<span class="sourceLineNo">2807</span>    if (cell == null) return null;<a 
name="line.2807"></a>
+<span class="sourceLineNo">2808</span>    byte[] b = new 
byte[KeyValueUtil.keyLength(cell)];<a name="line.2808"></a>
+<span class="sourceLineNo">2809</span>    KeyValueUtil.appendKeyTo(cell, b, 
0);<a name="line.2809"></a>
+<span class="sourceLineNo">2810</span>    return b;<a name="line.2810"></a>
+<span class="sourceLineNo">2811</span>  }<a name="line.2811"></a>
+<span class="sourceLineNo">2812</span><a name="line.2812"></a>
+<span class="sourceLineNo">2813</span>  /**<a name="line.2813"></a>
+<span class="sourceLineNo">2814</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's row.<a name="line.2814"></a>
+<span class="sourceLineNo">2815</span>   * @param cell<a name="line.2815"></a>
+<span class="sourceLineNo">2816</span>   * @return First possible Cell on 
passed Cell's row.<a name="line.2816"></a>
+<span class="sourceLineNo">2817</span>   */<a name="line.2817"></a>
+<span class="sourceLineNo">2818</span>  public static Cell 
createFirstOnRow(final Cell cell) {<a name="line.2818"></a>
+<span class="sourceLineNo">2819</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2819"></a>
+<span class="sourceLineNo">2820</span>      return new 
FirstOnRowByteBufferExtendedCell(<a name="line.2820"></a>
+<span class="sourceLineNo">2821</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2821"></a>
+<span class="sourceLineNo">2822</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2822"></a>
+<span class="sourceLineNo">2823</span>    }<a name="line.2823"></a>
+<span class="sourceLineNo">2824</span>    return new 
FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2824"></a>
+<span class="sourceLineNo">2825</span>  }<a name="line.2825"></a>
+<span class="sourceLineNo">2826</span><a name="line.2826"></a>
+<span class="sourceLineNo">2827</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength) {<a 
name="line.2827"></a>
+<span class="sourceLineNo">2828</span>    return new FirstOnRowCell(row, 
roffset, rlength);<a name="line.2828"></a>
+<span class="sourceLineNo">2829</span>  }<a name="line.2829"></a>
+<span class="sourceLineNo">2830</span><a name="line.2830"></a>
+<span class="sourceLineNo">2831</span>  public static Cell 
createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a 
name="line.2831"></a>
+<span class="sourceLineNo">2832</span>    return createFirstOnRow(row, 0, 
(short) row.length, family, 0, (byte) family.length, col, 0,<a 
name="line.2832"></a>
+<span class="sourceLineNo">2833</span>        col.length);<a 
name="line.2833"></a>
+<span class="sourceLineNo">2834</span>  }<a name="line.2834"></a>
+<span class="sourceLineNo">2835</span><a name="line.2835"></a>
+<span class="sourceLineNo">2836</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength,<a 
name="line.2836"></a>
+<span class="sourceLineNo">2837</span>      final byte[] family, int foffset, 
byte flength, final byte[] col, int coffset, int clength) {<a 
name="line.2837"></a>
+<span class="sourceLineNo">2838</span>    return new FirstOnRowColCell(row, 
roffset, rlength, family, foffset, flength, col, coffset,<a 
name="line.2838"></a>
+<span class="sourceLineNo">2839</span>        clength);<a name="line.2839"></a>
+<span class="sourceLineNo">2840</span>  }<a name="line.2840"></a>
+<span class="sourceLineNo">2841</span><a name="line.2841"></a>
+<span class="sourceLineNo">2842</span>  public static Cell 
createFirstOnRow(final byte[] row) {<a name="line.2842"></a>
+<span class="sourceLineNo">2843</span>    return createFirstOnRow(row, 0, 
(short) row.length);<a name="line.2843"></a>
+<span class="sourceLineNo">2844</span>  }<a name="line.2844"></a>
+<span class="sourceLineNo">2845</span><a name="line.2845"></a>
+<span class="sourceLineNo">2846</span>  public static Cell 
createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a 
name="line.2846"></a>
+<span class="sourceLineNo">2847</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2847"></a>
+<span class="sourceLineNo">2848</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2848"></a>
+<span class="sourceLineNo">2849</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2849"></a>
+<span class="sourceLineNo">2850</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2850"></a>
+<span class="sourceLineNo">2851</span>          ByteBuffer.wrap(fArray), foff, 
(byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2851"></a>
+<span class="sourceLineNo">2852</span>    }<a name="line.2852"></a>
+<span class="sourceLineNo">2853</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2853"></a>
+<span class="sourceLineNo">2854</span>        fArray, foff, (byte) flen, 
HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2854"></a>
+<span class="sourceLineNo">2855</span>  }<a name="line.2855"></a>
+<span class="sourceLineNo">2856</span><a name="line.2856"></a>
+<span class="sourceLineNo">2857</span>  public static Cell 
createFirstOnRowCol(final Cell cell) {<a name="line.2857"></a>
+<span class="sourceLineNo">2858</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2858"></a>
+<span class="sourceLineNo">2859</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2859"></a>
+<span class="sourceLineNo">2860</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2860"></a>
+<span class="sourceLineNo">2861</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2861"></a>
+<span class="sourceLineNo">2862</span>          HConstants.EMPTY_BYTE_BUFFER, 
0, (byte) 0,<a name="line.2862"></a>
+<span class="sourceLineNo">2863</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2863"></a>
+<span class="sourceLineNo">2864</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2864"></a>
+<span class="sourceLineNo">2865</span>    }<a name="line.2865"></a>
+<span class="sourceLineNo">2866</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2866"></a>
+<span class="sourceLineNo">2867</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 
(byte) 0, cell.getQualifierArray(),<a name="line.2867"></a>
+<span class="sourceLineNo">2868</span>        cell.getQualifierOffset(), 
cell.getQualifierLength());<a name="line.2868"></a>
+<span class="sourceLineNo">2869</span>  }<a name="line.2869"></a>
+<span class="sourceLineNo">2870</span><a name="line.2870"></a>
+<span class="sourceLineNo">2871</span>  public static Cell 
createFirstOnNextRow(final Cell cell) {<a name="line.2871"></a>
+<span class="sourceLineNo">2872</span>    byte[] nextRow = new 
byte[cell.getRowLength() + 1];<a name="line.2872"></a>
+<span class="sourceLineNo">2873</span>    CellUtil.copyRowTo(cell, nextRow, 
0);<a name="line.2873"></a>
+<span class="sourceLineNo">2874</span>    nextRow[nextRow.length - 1] = 0;// 
maybe not necessary<a name="line.2874"></a>
+<span class="sourceLineNo">2875</span>    return new FirstOnRowCell(nextRow, 
0, (short) nextRow.length);<a name="line.2875"></a>
+<span class="sourceLineNo">2876</span>  }<a name="line.2876"></a>
+<span class="sourceLineNo">2877</span><a name="line.2877"></a>
+<span class="sourceLineNo">2878</span>  /**<a name="line.2878"></a>
+<span class="sourceLineNo">2879</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's rk:cf and<a name="line.2879"></a>
+<span class="sourceLineNo">2880</span>   * passed qualifier.<a 
name="line.2880"></a>
+<span class="sourceLineNo">2881</span>   * @param cell<a name="line.2881"></a>
+<span class="sourceLineNo">2882</span>   * @param qArray<a 
name="line.2882"></a>
+<span class="sourceLineNo">2883</span>   * @param qoffest<a 
name="line.2883"></a>
+<span class="sourceLineNo">2884</span>   * @param qlength<a 
name="line.2884"></a>
+<span class="sourceLineNo">2885</span>   * @return Last possible Cell on 
passed Cell's rk:cf and passed qualifier.<a name="line.2885"></a>
+<span class="sourceLineNo">2886</span>   */<a name="line.2886"></a>
+<span class="sourceLineNo">2887</span>  public static Cell 
createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) 
{<a name="line.2887"></a>
+<span class="sourceLineNo">2888</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2888"></a>
+<span class="sourceLineNo">2889</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2889"></a>
+<span class="sourceLineNo">2890</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2890"></a>
+<span class="sourceLineNo">2891</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2891"></a>
+<span class="sourceLineNo">2892</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2892"></a>
+<span class="sourceLineNo">2893</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2893"></a>
+<span class="sourceLineNo">2894</span>          ByteBuffer.wrap(qArray), 
qoffest, qlength);<a name="line.2894"></a>
+<span class="sourceLineNo">2895</span>    }<a name="line.2895"></a>
+<span class="sourceLineNo">2896</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2896"></a>
+<span class="sourceLineNo">2897</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a 
name="line.2897"></a>
+<span class="sourceLineNo">2898</span>        qlength);<a name="line.2898"></a>
+<span class="sourceLineNo">2899</span>  }<a name="line.2899"></a>
+<span class="sourceLineNo">2900</span><a name="line.2900"></a>
+<span class="sourceLineNo">2901</span>  /**<a name="line.2901"></a>
+<span class="sourceLineNo">2902</span>   * Creates the first cell with the 
row/family/qualifier of this cell and the given timestamp. Uses<a 
name="line.2902"></a>
+<span class="sourceLineNo">2903</span>   * the "maximum" type that guarantees 
that the new cell is the lowest possible for this<a name="line.2903"></a>
+<span class="sourceLineNo">2904</span>   * combination of row, family, 
qualifier, and timestamp. This cell's own timestamp is ignored.<a 
name="line.2904"></a>
+<span class="sourceLineNo">2905</span>   * @param cell - cell<a 
name="line.2905"></a>
+<span class="sourceLineNo">2906</span>   * @param ts<a name="line.2906"></a>
+<span class="sourceLineNo">2907</span>   */<a name="line.2907"></a>
+<span class="sourceLineNo">2908</span>  public static Cell 
createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2908"></a>
+<span class="sourceLineNo">2909</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2909"></a>
+<span class="sourceLineNo">2910</span>      return new 
FirstOnRowColTSByteBufferExtendedCell(<a name="line.2910"></a>
+<span class="sourceLineNo">2911</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2911"></a>
+<span class="sourceLineNo">2912</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2912"></a>
+<span class="sourceLineNo">2913</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2913"></a>
+<span class="sourceLineNo">2914</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2914"></a>
+<span class="sourceLineNo">2915</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2915"></a>
+<span class="sourceLineNo">2916</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a 
name="line.2916"></a>
+<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
+<span class="sourceLineNo">2918</span>    return new 
FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2918"></a>
+<span class="sourceLineNo">2919</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2919"></a>
+<span class="sourceLineNo">2920</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a 
name="line.2920"></a>
+<span class="sourceLineNo">2921</span>  }<a name="line.2921"></a>
+<span class="sourceLineNo">2922</span><a name="line.2922"></a>
+<span class="sourceLineNo">2923</span>  /**<a name="line.2923"></a>
+<span class="sourceLineNo">2924</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's row.<a name="line.2924"></a>
+<span class="sourceLineNo">2925</span>   * @param cell<a name="line.2925"></a>
+<span class="sourceLineNo">2926</span>   * @return Last possible Cell on 
passed Cell's row.<a name="line.2926"></a>
+<span class="sourceLineNo">2927</span>   */<a name="line.2927"></a>
+<span class="sourceLineNo">2928</span>  public static Cell 
createLastOnRow(final Cell cell) {<a name="line.2928"></a>
+<span class="sourceLineNo">2929</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2929"></a>
+<span class="sourceLineNo">2930</span>      return new 
LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2930"></a>
+<span class="sourceLineNo">2931</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2931"></a>
+<span class="sourceLineNo">2932</span>    }<a name="line.2932"></a>
+<span class="sourceLineNo">2933</span>    return new 
LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2933"></a>
+<span class="sourceLineNo">2934</span>  }<a name="line.2934"></a>
+<span class="sourceLineNo">2935</span><a name="line.2935"></a>
+<span class="sourceLineNo">2936</span>  public static Cell 
createLastOnRow(final byte[] row) {<a name="line.2936"></a>
+<span class="sourceLineNo">2937</span>    return new LastOnRowCell(row, 0, 
(short) row.length);<a name="line.2937"></a>
+<span class="sourceLineNo">2938</span>  }<a name="line.2938"></a>
+<span class="sourceLineNo">2939</span><a name="line.2939"></a>
+<span class="sourceLineNo">2940</span>  /**<a name="line.2940"></a>
+<span class="sourceLineNo">2941</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's rk:cf:q. Used<a 
name="line.2941"></a>
+<span class="sourceLineNo">2942</span>   * in creating "fake keys" for the 
multi-column Bloom filter optimization to skip the row/column<a 
name="line.2942"></a>
+<span class="sourceLineNo">2943</span>   * we already know is not in the 
file.<a name="line.2943"></a>
+<span class="sourceLineNo">2944</span>   * @param cell<a name="line.2944"></a>
+<span class="sourceLineNo">2945</span>   * @return Last possible Cell on 
passed Cell's rk:cf:q.<a name="line.2945"></a>
+<span class="sourceLineNo">2946</span>   */<a name="line.2946"></a>
+<span class="sourceLineNo">2947</span>  public static Cell 
createLastOnRowCol(final Cell cell) {<a name="line.2947"></a>
+<span class="sourceLineNo">2948</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2948"></a>
+<span class="sourceLineNo">2949</span>      return new 
LastOnRowColByteBufferExtendedCell(<a name="line.2949"></a>
+<span class="sourceLineNo">2950</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2950"></a>
+<span class="sourceLineNo">2951</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2951"></a>
+<span class="sourceLineNo">2952</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2952"></a>
+<span class="sourceLineNo">2953</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2953"></a>
+<span class="sourceLineNo">2954</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2954"></a>
+<span class="sourceLineNo">2955</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2955"></a>
+<span class="sourceLineNo">2956</span>    }<a name="line.2956"></a>
+<span class="sourceLineNo">2957</span>    return new 
LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2957"></a>
+<span class="sourceLineNo">2958</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2958"></a>
+<span class="sourceLineNo">2959</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2959"></a>
+<span class="sourceLineNo">2960</span>  }<a name="line.2960"></a>
+<span class="sourceLineNo">2961</span><a name="line.2961"></a>
+<span class="sourceLineNo">2962</span>  /**<a name="line.2962"></a>
+<span class="sourceLineNo">2963</span>   * Create a Delete Family Cell for the 
specified row and family that would be smaller than all<a name="line.2963"></a>
+<span class="sourceLineNo">2964</span>   * other possible Delete Family 
KeyValues that have the same row and family. Used for seeking.<a 
name="line.2964"></a>
+<span class="sourceLineNo">2965</span>   * @param row - row key (arbitrary 
byte array)<a name="line.2965"></a>
+<span class="sourceLineNo">2966</span>   * @param fam - family name<a 
name="line.2966"></a>
+<span class="sourceLineNo">2967</span>   * @return First Delete Family 
possible key on passed &lt;code&gt;row&lt;/code&gt;.<a name="line.2967"></a>
+<span class="sourceLineNo">2968</span>   */<a name="line.2968"></a>
+<span class="sourceLineNo">2969</span>  public static Cell 
createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a 
name="line.2969"></a>
+<span class="sourceLineNo">2970</span>    return new 
FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2970"></a>
+<span class="sourceLineNo">2971</span>  }<a name="line.2971"></a>
+<span class="sourceLineNo">2972</span>}<a name="line.2972"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/991224b9/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.ValueAndTagRewriteByteBufferExtendedCell.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.ValueAndTagRewriteByteBufferExtendedCell.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.ValueAndTagRewriteByteBufferExtendedCell.html
index d143ef8..4583895 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.ValueAndTagRewriteByteBufferExtendedCell.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.ValueAndTagRewriteByteBufferExtendedCell.html
@@ -258,7 +258,7 @@
 <span class="sourceLineNo">250</span><a name="line.250"></a>
 <span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
 <span class="sourceLineNo">252</span>    public long heapSize() {<a 
name="line.252"></a>
-<span class="sourceLineNo">253</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedHeapSizeOf(cell);<a name="line.253"></a>
+<span class="sourceLineNo">253</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedSizeOfCell(cell);<a name="line.253"></a>
 <span class="sourceLineNo">254</span>      if (this.tags != null) {<a 
name="line.254"></a>
 <span class="sourceLineNo">255</span>        sum += 
ClassSize.sizeOf(this.tags);<a name="line.255"></a>
 <span class="sourceLineNo">256</span>      }<a name="line.256"></a>
@@ -454,7 +454,7 @@
 <span class="sourceLineNo">446</span><a name="line.446"></a>
 <span class="sourceLineNo">447</span>    @Override<a name="line.447"></a>
 <span class="sourceLineNo">448</span>    public long heapSize() {<a 
name="line.448"></a>
-<span class="sourceLineNo">449</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedHeapSizeOf(cell);<a name="line.449"></a>
+<span class="sourceLineNo">449</span>      long sum = HEAP_SIZE_OVERHEAD + 
estimatedSizeOfCell(cell);<a name="line.449"></a>
 <span class="sourceLineNo">450</span>      // this.tags is on heap byte[]<a 
name="line.450"></a>
 <span class="sourceLineNo">451</span>      if (this.tags != null) {<a 
name="line.451"></a>
 <span class="sourceLineNo">452</span>        sum += 
ClassSize.sizeOf(this.tags);<a name="line.452"></a>
@@ -2791,192 +2791,193 @@
 <span class="sourceLineNo">2783</span>   * {@link HeapSize} we call {@link 
HeapSize#heapSize()} so cell can give a correct value. In other<a 
name="line.2783"></a>
 <span class="sourceLineNo">2784</span>   * cases we just consider the bytes 
occupied by the cell components ie. row, CF, qualifier,<a name="line.2784"></a>
 <span class="sourceLineNo">2785</span>   * timestamp, type, value and tags.<a 
name="line.2785"></a>
-<span class="sourceLineNo">2786</span>   * @param cell<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>   * @return estimate of the heap 
space<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>   */<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>  public static long 
estimatedHeapSizeOf(final Cell cell) {<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>    if (cell instanceof HeapSize) {<a 
name="line.2790"></a>
-<span class="sourceLineNo">2791</span>      return ((HeapSize) 
cell).heapSize();<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>    }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    // TODO: Add sizing of references 
that hold the row, family, etc., arrays.<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>    return 
estimatedSerializedSizeOf(cell);<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>  }<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span><a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>  /**<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>   * This method exists just to 
encapsulate how we serialize keys. To be replaced by a factory that<a 
name="line.2798"></a>
-<span class="sourceLineNo">2799</span>   * we query to figure what the Cell 
implementation is and then, what serialization engine to use<a 
name="line.2799"></a>
-<span class="sourceLineNo">2800</span>   * and further, how to serialize the 
key for inclusion in hfile index. TODO.<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>   * @param cell<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span>   * @return The key portion of the Cell 
serialized in the old-school KeyValue way or null if passed<a 
name="line.2802"></a>
-<span class="sourceLineNo">2803</span>   *         a null 
&lt;code&gt;cell&lt;/code&gt;<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>   */<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>  public static byte[] 
getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    if (cell == null) return null;<a 
name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    byte[] b = new 
byte[KeyValueUtil.keyLength(cell)];<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    KeyValueUtil.appendKeyTo(cell, b, 
0);<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>    return b;<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>  }<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span><a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>  /**<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's row.<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>   * @param cell<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span>   * @return First possible Cell on 
passed Cell's row.<a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>   */<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>  public static Cell 
createFirstOnRow(final Cell cell) {<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>      return new 
FirstOnRowByteBufferExtendedCell(<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>    }<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>    return new 
FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2823"></a>
-<span class="sourceLineNo">2824</span>  }<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span><a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength) {<a 
name="line.2826"></a>
-<span class="sourceLineNo">2827</span>    return new FirstOnRowCell(row, 
roffset, rlength);<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>  }<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span><a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>  public static Cell 
createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a 
name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    return createFirstOnRow(row, 0, 
(short) row.length, family, 0, (byte) family.length, col, 0,<a 
name="line.2831"></a>
-<span class="sourceLineNo">2832</span>        col.length);<a 
name="line.2832"></a>
-<span class="sourceLineNo">2833</span>  }<a name="line.2833"></a>
-<span class="sourceLineNo">2834</span><a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength,<a 
name="line.2835"></a>
-<span class="sourceLineNo">2836</span>      final byte[] family, int foffset, 
byte flength, final byte[] col, int coffset, int clength) {<a 
name="line.2836"></a>
-<span class="sourceLineNo">2837</span>    return new FirstOnRowColCell(row, 
roffset, rlength, family, foffset, flength, col, coffset,<a 
name="line.2837"></a>
-<span class="sourceLineNo">2838</span>        clength);<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>  }<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span><a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>  public static Cell 
createFirstOnRow(final byte[] row) {<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>    return createFirstOnRow(row, 0, 
(short) row.length);<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>  }<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span><a name="line.2844"></a>
-<span class="sourceLineNo">2845</span>  public static Cell 
createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a 
name="line.2845"></a>
-<span class="sourceLineNo">2846</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>          ByteBuffer.wrap(fArray), foff, 
(byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>    }<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        fArray, foff, (byte) flen, 
HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>  }<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span><a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>  public static Cell 
createFirstOnRowCol(final Cell cell) {<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          HConstants.EMPTY_BYTE_BUFFER, 
0, (byte) 0,<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2863"></a>
-<span class="sourceLineNo">2864</span>    }<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 
(byte) 0, cell.getQualifierArray(),<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span>        cell.getQualifierOffset(), 
cell.getQualifierLength());<a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>  }<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span><a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>  public static Cell 
createFirstOnNextRow(final Cell cell) {<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>    byte[] nextRow = new 
byte[cell.getRowLength() + 1];<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>    CellUtil.copyRowTo(cell, nextRow, 
0);<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>    nextRow[nextRow.length - 1] = 0;// 
maybe not necessary<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>    return new FirstOnRowCell(nextRow, 
0, (short) nextRow.length);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>  }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span><a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>  /**<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's rk:cf and<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>   * passed qualifier.<a 
name="line.2879"></a>
-<span class="sourceLineNo">2880</span>   * @param cell<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>   * @param qArray<a 
name="line.2881"></a>
-<span class="sourceLineNo">2882</span>   * @param qoffest<a 
name="line.2882"></a>
-<span class="sourceLineNo">2883</span>   * @param qlength<a 
name="line.2883"></a>
-<span class="sourceLineNo">2884</span>   * @return Last possible Cell on 
passed Cell's rk:cf and passed qualifier.<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span>   */<a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  public static Cell 
createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) 
{<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>          ByteBuffer.wrap(qArray), 
qoffest, qlength);<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a 
name="line.2896"></a>
-<span class="sourceLineNo">2897</span>        qlength);<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>  }<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span><a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  /**<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span>   * Creates the first cell with the 
row/family/qualifier of this cell and the given timestamp. Uses<a 
name="line.2901"></a>
-<span class="sourceLineNo">2902</span>   * the "maximum" type that guarantees 
that the new cell is the lowest possible for this<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>   * combination of row, family, 
qualifier, and timestamp. This cell's own timestamp is ignored.<a 
name="line.2903"></a>
-<span class="sourceLineNo">2904</span>   * @param cell - cell<a 
name="line.2904"></a>
-<span class="sourceLineNo">2905</span>   * @param ts<a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>   */<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>  public static Cell 
createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>      return new 
FirstOnRowColTSByteBufferExtendedCell(<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a 
name="line.2915"></a>
-<span class="sourceLineNo">2916</span>    }<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    return new 
FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a 
name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  }<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span><a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>  /**<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's row.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   * @param cell<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>   * @return Last possible Cell on 
passed Cell's row.<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>   */<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>  public static Cell 
createLastOnRow(final Cell cell) {<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>      return new 
LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span>    }<a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    return new 
LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2932"></a>
-<span class="sourceLineNo">2933</span>  }<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span><a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>  public static Cell 
createLastOnRow(final byte[] row) {<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    return new LastOnRowCell(row, 0, 
(short) row.length);<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>  }<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>  /**<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's rk:cf:q. Used<a 
name="line.2940"></a>
-<span class="sourceLineNo">2941</span>   * in creating "fake keys" for the 
multi-column Bloom filter optimization to skip the row/column<a 
name="line.2941"></a>
-<span class="sourceLineNo">2942</span>   * we already know is not in the 
file.<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>   * @param cell<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>   * @return Last possible Cell on 
passed Cell's rk:cf:q.<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span>   */<a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>  public static Cell 
createLastOnRowCol(final Cell cell) {<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      return new 
LastOnRowColByteBufferExtendedCell(<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    }<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>    return new 
LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>  }<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span><a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>  /**<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span>   * Create a Delete Family Cell for the 
specified row and family that would be smaller than all<a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>   * other possible Delete Family 
KeyValues that have the same row and family. Used for seeking.<a 
name="line.2963"></a>
-<span class="sourceLineNo">2964</span>   * @param row - row key (arbitrary 
byte array)<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>   * @param fam - family name<a 
name="line.2965"></a>
-<span class="sourceLineNo">2966</span>   * @return First Delete Family 
possible key on passed &lt;code&gt;row&lt;/code&gt;.<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>   */<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>  public static Cell 
createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a 
name="line.2968"></a>
-<span class="sourceLineNo">2969</span>    return new 
FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>  }<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>}<a name="line.2971"></a>
+<span class="sourceLineNo">2786</span>   * Note that this can be the JVM heap 
space (on-heap) or the OS heap (off-heap)<a name="line.2786"></a>
+<span class="sourceLineNo">2787</span>   * @param cell<a name="line.2787"></a>
+<span class="sourceLineNo">2788</span>   * @return estimate of the heap 
space<a name="line.2788"></a>
+<span class="sourceLineNo">2789</span>   */<a name="line.2789"></a>
+<span class="sourceLineNo">2790</span>  public static long 
estimatedSizeOfCell(final Cell cell) {<a name="line.2790"></a>
+<span class="sourceLineNo">2791</span>    if (cell instanceof HeapSize) {<a 
name="line.2791"></a>
+<span class="sourceLineNo">2792</span>      return ((HeapSize) 
cell).heapSize();<a name="line.2792"></a>
+<span class="sourceLineNo">2793</span>    }<a name="line.2793"></a>
+<span class="sourceLineNo">2794</span>    // TODO: Add sizing of references 
that hold the row, family, etc., arrays.<a name="line.2794"></a>
+<span class="sourceLineNo">2795</span>    return 
estimatedSerializedSizeOf(cell);<a name="line.2795"></a>
+<span class="sourceLineNo">2796</span>  }<a name="line.2796"></a>
+<span class="sourceLineNo">2797</span><a name="line.2797"></a>
+<span class="sourceLineNo">2798</span>  /**<a name="line.2798"></a>
+<span class="sourceLineNo">2799</span>   * This method exists just to 
encapsulate how we serialize keys. To be replaced by a factory that<a 
name="line.2799"></a>
+<span class="sourceLineNo">2800</span>   * we query to figure what the Cell 
implementation is and then, what serialization engine to use<a 
name="line.2800"></a>
+<span class="sourceLineNo">2801</span>   * and further, how to serialize the 
key for inclusion in hfile index. TODO.<a name="line.2801"></a>
+<span class="sourceLineNo">2802</span>   * @param cell<a name="line.2802"></a>
+<span class="sourceLineNo">2803</span>   * @return The key portion of the Cell 
serialized in the old-school KeyValue way or null if passed<a 
name="line.2803"></a>
+<span class="sourceLineNo">2804</span>   *         a null 
&lt;code&gt;cell&lt;/code&gt;<a name="line.2804"></a>
+<span class="sourceLineNo">2805</span>   */<a name="line.2805"></a>
+<span class="sourceLineNo">2806</span>  public static byte[] 
getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2806"></a>
+<span class="sourceLineNo">2807</span>    if (cell == null) return null;<a 
name="line.2807"></a>
+<span class="sourceLineNo">2808</span>    byte[] b = new 
byte[KeyValueUtil.keyLength(cell)];<a name="line.2808"></a>
+<span class="sourceLineNo">2809</span>    KeyValueUtil.appendKeyTo(cell, b, 
0);<a name="line.2809"></a>
+<span class="sourceLineNo">2810</span>    return b;<a name="line.2810"></a>
+<span class="sourceLineNo">2811</span>  }<a name="line.2811"></a>
+<span class="sourceLineNo">2812</span><a name="line.2812"></a>
+<span class="sourceLineNo">2813</span>  /**<a name="line.2813"></a>
+<span class="sourceLineNo">2814</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's row.<a name="line.2814"></a>
+<span class="sourceLineNo">2815</span>   * @param cell<a name="line.2815"></a>
+<span class="sourceLineNo">2816</span>   * @return First possible Cell on 
passed Cell's row.<a name="line.2816"></a>
+<span class="sourceLineNo">2817</span>   */<a name="line.2817"></a>
+<span class="sourceLineNo">2818</span>  public static Cell 
createFirstOnRow(final Cell cell) {<a name="line.2818"></a>
+<span class="sourceLineNo">2819</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2819"></a>
+<span class="sourceLineNo">2820</span>      return new 
FirstOnRowByteBufferExtendedCell(<a name="line.2820"></a>
+<span class="sourceLineNo">2821</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2821"></a>
+<span class="sourceLineNo">2822</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2822"></a>
+<span class="sourceLineNo">2823</span>    }<a name="line.2823"></a>
+<span class="sourceLineNo">2824</span>    return new 
FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2824"></a>
+<span class="sourceLineNo">2825</span>  }<a name="line.2825"></a>
+<span class="sourceLineNo">2826</span><a name="line.2826"></a>
+<span class="sourceLineNo">2827</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength) {<a 
name="line.2827"></a>
+<span class="sourceLineNo">2828</span>    return new FirstOnRowCell(row, 
roffset, rlength);<a name="line.2828"></a>
+<span class="sourceLineNo">2829</span>  }<a name="line.2829"></a>
+<span class="sourceLineNo">2830</span><a name="line.2830"></a>
+<span class="sourceLineNo">2831</span>  public static Cell 
createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a 
name="line.2831"></a>
+<span class="sourceLineNo">2832</span>    return createFirstOnRow(row, 0, 
(short) row.length, family, 0, (byte) family.length, col, 0,<a 
name="line.2832"></a>
+<span class="sourceLineNo">2833</span>        col.length);<a 
name="line.2833"></a>
+<span class="sourceLineNo">2834</span>  }<a name="line.2834"></a>
+<span class="sourceLineNo">2835</span><a name="line.2835"></a>
+<span class="sourceLineNo">2836</span>  public static Cell 
createFirstOnRow(final byte[] row, int roffset, short rlength,<a 
name="line.2836"></a>
+<span class="sourceLineNo">2837</span>      final byte[] family, int foffset, 
byte flength, final byte[] col, int coffset, int clength) {<a 
name="line.2837"></a>
+<span class="sourceLineNo">2838</span>    return new FirstOnRowColCell(row, 
roffset, rlength, family, foffset, flength, col, coffset,<a 
name="line.2838"></a>
+<span class="sourceLineNo">2839</span>        clength);<a name="line.2839"></a>
+<span class="sourceLineNo">2840</span>  }<a name="line.2840"></a>
+<span class="sourceLineNo">2841</span><a name="line.2841"></a>
+<span class="sourceLineNo">2842</span>  public static Cell 
createFirstOnRow(final byte[] row) {<a name="line.2842"></a>
+<span class="sourceLineNo">2843</span>    return createFirstOnRow(row, 0, 
(short) row.length);<a name="line.2843"></a>
+<span class="sourceLineNo">2844</span>  }<a name="line.2844"></a>
+<span class="sourceLineNo">2845</span><a name="line.2845"></a>
+<span class="sourceLineNo">2846</span>  public static Cell 
createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a 
name="line.2846"></a>
+<span class="sourceLineNo">2847</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2847"></a>
+<span class="sourceLineNo">2848</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2848"></a>
+<span class="sourceLineNo">2849</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2849"></a>
+<span class="sourceLineNo">2850</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2850"></a>
+<span class="sourceLineNo">2851</span>          ByteBuffer.wrap(fArray), foff, 
(byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2851"></a>
+<span class="sourceLineNo">2852</span>    }<a name="line.2852"></a>
+<span class="sourceLineNo">2853</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2853"></a>
+<span class="sourceLineNo">2854</span>        fArray, foff, (byte) flen, 
HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2854"></a>
+<span class="sourceLineNo">2855</span>  }<a name="line.2855"></a>
+<span class="sourceLineNo">2856</span><a name="line.2856"></a>
+<span class="sourceLineNo">2857</span>  public static Cell 
createFirstOnRowCol(final Cell cell) {<a name="line.2857"></a>
+<span class="sourceLineNo">2858</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2858"></a>
+<span class="sourceLineNo">2859</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2859"></a>
+<span class="sourceLineNo">2860</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2860"></a>
+<span class="sourceLineNo">2861</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2861"></a>
+<span class="sourceLineNo">2862</span>          HConstants.EMPTY_BYTE_BUFFER, 
0, (byte) 0,<a name="line.2862"></a>
+<span class="sourceLineNo">2863</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2863"></a>
+<span class="sourceLineNo">2864</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2864"></a>
+<span class="sourceLineNo">2865</span>    }<a name="line.2865"></a>
+<span class="sourceLineNo">2866</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2866"></a>
+<span class="sourceLineNo">2867</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 
(byte) 0, cell.getQualifierArray(),<a name="line.2867"></a>
+<span class="sourceLineNo">2868</span>        cell.getQualifierOffset(), 
cell.getQualifierLength());<a name="line.2868"></a>
+<span class="sourceLineNo">2869</span>  }<a name="line.2869"></a>
+<span class="sourceLineNo">2870</span><a name="line.2870"></a>
+<span class="sourceLineNo">2871</span>  public static Cell 
createFirstOnNextRow(final Cell cell) {<a name="line.2871"></a>
+<span class="sourceLineNo">2872</span>    byte[] nextRow = new 
byte[cell.getRowLength() + 1];<a name="line.2872"></a>
+<span class="sourceLineNo">2873</span>    CellUtil.copyRowTo(cell, nextRow, 
0);<a name="line.2873"></a>
+<span class="sourceLineNo">2874</span>    nextRow[nextRow.length - 1] = 0;// 
maybe not necessary<a name="line.2874"></a>
+<span class="sourceLineNo">2875</span>    return new FirstOnRowCell(nextRow, 
0, (short) nextRow.length);<a name="line.2875"></a>
+<span class="sourceLineNo">2876</span>  }<a name="line.2876"></a>
+<span class="sourceLineNo">2877</span><a name="line.2877"></a>
+<span class="sourceLineNo">2878</span>  /**<a name="line.2878"></a>
+<span class="sourceLineNo">2879</span>   * Create a Cell that is smaller than 
all other possible Cells for the given Cell's rk:cf and<a name="line.2879"></a>
+<span class="sourceLineNo">2880</span>   * passed qualifier.<a 
name="line.2880"></a>
+<span class="sourceLineNo">2881</span>   * @param cell<a name="line.2881"></a>
+<span class="sourceLineNo">2882</span>   * @param qArray<a 
name="line.2882"></a>
+<span class="sourceLineNo">2883</span>   * @param qoffest<a 
name="line.2883"></a>
+<span class="sourceLineNo">2884</span>   * @param qlength<a 
name="line.2884"></a>
+<span class="sourceLineNo">2885</span>   * @return Last possible Cell on 
passed Cell's rk:cf and passed qualifier.<a name="line.2885"></a>
+<span class="sourceLineNo">2886</span>   */<a name="line.2886"></a>
+<span class="sourceLineNo">2887</span>  public static Cell 
createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) 
{<a name="line.2887"></a>
+<span class="sourceLineNo">2888</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2888"></a>
+<span class="sourceLineNo">2889</span>      return new 
FirstOnRowColByteBufferExtendedCell(<a name="line.2889"></a>
+<span class="sourceLineNo">2890</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2890"></a>
+<span class="sourceLineNo">2891</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2891"></a>
+<span class="sourceLineNo">2892</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2892"></a>
+<span class="sourceLineNo">2893</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2893"></a>
+<span class="sourceLineNo">2894</span>          ByteBuffer.wrap(qArray), 
qoffest, qlength);<a name="line.2894"></a>
+<span class="sourceLineNo">2895</span>    }<a name="line.2895"></a>
+<span class="sourceLineNo">2896</span>    return new 
FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2896"></a>
+<span class="sourceLineNo">2897</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a 
name="line.2897"></a>
+<span class="sourceLineNo">2898</span>        qlength);<a name="line.2898"></a>
+<span class="sourceLineNo">2899</span>  }<a name="line.2899"></a>
+<span class="sourceLineNo">2900</span><a name="line.2900"></a>
+<span class="sourceLineNo">2901</span>  /**<a name="line.2901"></a>
+<span class="sourceLineNo">2902</span>   * Creates the first cell with the 
row/family/qualifier of this cell and the given timestamp. Uses<a 
name="line.2902"></a>
+<span class="sourceLineNo">2903</span>   * the "maximum" type that guarantees 
that the new cell is the lowest possible for this<a name="line.2903"></a>
+<span class="sourceLineNo">2904</span>   * combination of row, family, 
qualifier, and timestamp. This cell's own timestamp is ignored.<a 
name="line.2904"></a>
+<span class="sourceLineNo">2905</span>   * @param cell - cell<a 
name="line.2905"></a>
+<span class="sourceLineNo">2906</span>   * @param ts<a name="line.2906"></a>
+<span class="sourceLineNo">2907</span>   */<a name="line.2907"></a>
+<span class="sourceLineNo">2908</span>  public static Cell 
createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2908"></a>
+<span class="sourceLineNo">2909</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2909"></a>
+<span class="sourceLineNo">2910</span>      return new 
FirstOnRowColTSByteBufferExtendedCell(<a name="line.2910"></a>
+<span class="sourceLineNo">2911</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2911"></a>
+<span class="sourceLineNo">2912</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2912"></a>
+<span class="sourceLineNo">2913</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2913"></a>
+<span class="sourceLineNo">2914</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2914"></a>
+<span class="sourceLineNo">2915</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2915"></a>
+<span class="sourceLineNo">2916</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a 
name="line.2916"></a>
+<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
+<span class="sourceLineNo">2918</span>    return new 
FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2918"></a>
+<span class="sourceLineNo">2919</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2919"></a>
+<span class="sourceLineNo">2920</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a 
name="line.2920"></a>
+<span class="sourceLineNo">2921</span>  }<a name="line.2921"></a>
+<span class="sourceLineNo">2922</span><a name="line.2922"></a>
+<span class="sourceLineNo">2923</span>  /**<a name="line.2923"></a>
+<span class="sourceLineNo">2924</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's row.<a name="line.2924"></a>
+<span class="sourceLineNo">2925</span>   * @param cell<a name="line.2925"></a>
+<span class="sourceLineNo">2926</span>   * @return Last possible Cell on 
passed Cell's row.<a name="line.2926"></a>
+<span class="sourceLineNo">2927</span>   */<a name="line.2927"></a>
+<span class="sourceLineNo">2928</span>  public static Cell 
createLastOnRow(final Cell cell) {<a name="line.2928"></a>
+<span class="sourceLineNo">2929</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2929"></a>
+<span class="sourceLineNo">2930</span>      return new 
LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2930"></a>
+<span class="sourceLineNo">2931</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength());<a name="line.2931"></a>
+<span class="sourceLineNo">2932</span>    }<a name="line.2932"></a>
+<span class="sourceLineNo">2933</span>    return new 
LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a 
name="line.2933"></a>
+<span class="sourceLineNo">2934</span>  }<a name="line.2934"></a>
+<span class="sourceLineNo">2935</span><a name="line.2935"></a>
+<span class="sourceLineNo">2936</span>  public static Cell 
createLastOnRow(final byte[] row) {<a name="line.2936"></a>
+<span class="sourceLineNo">2937</span>    return new LastOnRowCell(row, 0, 
(short) row.length);<a name="line.2937"></a>
+<span class="sourceLineNo">2938</span>  }<a name="line.2938"></a>
+<span class="sourceLineNo">2939</span><a name="line.2939"></a>
+<span class="sourceLineNo">2940</span>  /**<a name="line.2940"></a>
+<span class="sourceLineNo">2941</span>   * Create a Cell that is larger than 
all other possible Cells for the given Cell's rk:cf:q. Used<a 
name="line.2941"></a>
+<span class="sourceLineNo">2942</span>   * in creating "fake keys" for the 
multi-column Bloom filter optimization to skip the row/column<a 
name="line.2942"></a>
+<span class="sourceLineNo">2943</span>   * we already know is not in the 
file.<a name="line.2943"></a>
+<span class="sourceLineNo">2944</span>   * @param cell<a name="line.2944"></a>
+<span class="sourceLineNo">2945</span>   * @return Last possible Cell on 
passed Cell's rk:cf:q.<a name="line.2945"></a>
+<span class="sourceLineNo">2946</span>   */<a name="line.2946"></a>
+<span class="sourceLineNo">2947</span>  public static Cell 
createLastOnRowCol(final Cell cell) {<a name="line.2947"></a>
+<span class="sourceLineNo">2948</span>    if (cell instanceof 
ByteBufferExtendedCell) {<a name="line.2948"></a>
+<span class="sourceLineNo">2949</span>      return new 
LastOnRowColByteBufferExtendedCell(<a name="line.2949"></a>
+<span class="sourceLineNo">2950</span>          ((ByteBufferExtendedCell) 
cell).getRowByteBuffer(),<a name="line.2950"></a>
+<span class="sourceLineNo">2951</span>          ((ByteBufferExtendedCell) 
cell).getRowPosition(), cell.getRowLength(),<a name="line.2951"></a>
+<span class="sourceLineNo">2952</span>          ((ByteBufferExtendedCell) 
cell).getFamilyByteBuffer(),<a name="line.2952"></a>
+<span class="sourceLineNo">2953</span>          ((ByteBufferExtendedCell) 
cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2953"></a>
+<span class="sourceLineNo">2954</span>          ((ByteBufferExtendedCell) 
cell).getQualifierByteBuffer(),<a name="line.2954"></a>
+<span class="sourceLineNo">2955</span>          ((ByteBufferExtendedCell) 
cell).getQualifierPosition(), cell.getQualifierLength());<a 
name="line.2955"></a>
+<span class="sourceLineNo">2956</span>    }<a name="line.2956"></a>
+<span class="sourceLineNo">2957</span>    return new 
LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), 
cell.getRowLength(),<a name="line.2957"></a>
+<span class="sourceLineNo">2958</span>        cell.getFamilyArray(), 
cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2958"></a>
+<span class="sourceLineNo">2959</span>        cell.getQualifierArray(), 
cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2959"></a>
+<span class="sourceLineNo">2960</span>  }<a name="line.2960"></a>
+<span class="sourceLineNo">2961</span><a name="line.2961"></a>
+<span class="sourceLineNo">2962</span>  /**<a name="line.2962"></a>
+<span class="sourceLineNo">2963</span>   * Create a Delete Family Cell for the 
specified row and family that would be smaller than all<a name="line.2963"></a>
+<span class="sourceLineNo">2964</span>   * other possible Delete Family 
KeyValues that have the same row and family. Used for seeking.<a 
name="line.2964"></a>
+<span class="sourceLineNo">2965</span>   * @param row - row key (arbitrary 
byte array)<a name="line.2965"></a>
+<span class="sourceLineNo">2966</span>   * @param fam - family name<a 
name="line.2966"></a>
+<span class="sourceLineNo">2967</span>   * @return First Delete Family 
possible key on passed &lt;code&gt;row&lt;/code&gt;.<a name="line.2967"></a>
+<span class="sourceLineNo">2968</span>   */<a name="line.2968"></a>
+<span class="sourceLineNo">2969</span>  public static Cell 
createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a 
name="line.2969"></a>
+<span class="sourceLineNo">2970</span>    return new 
FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2970"></a>
+<span class="sourceLineNo">2971</span>  }<a name="line.2971"></a>
+<span class="sourceLineNo">2972</span>}<a name="line.2972"></a>
 
 
 

Reply via email to