Deferred<Object> compact(final ArrayList<KeyValue> row,
      final KeyValue[] compacted,
      List<Annotation> annotations,
      List<HistogramDataPoint> histograms) {
    return new Compaction(row, compacted, annotations, histograms).compact();
  }
Deferred < Object > compact ( final ArrayList < KeyValue > row , final KeyValue [ ] compacted , List < Annotation > annotations , List < HistogramDataPoint > histograms ) { return new Compaction ( row , compacted , annotations , histograms ) . compact ( ) ; }
Compacts a row into a single {@link KeyValue}.
<p>
If the {@code row} is empty, this function does literally nothing.
If {@code compacted} is not {@code null}, then the compacted form of this
{@code row} will be stored in {@code compacted[0]}.  Obviously, if the
{@code row} contains a single cell, then that cell is the compacted form.
Otherwise the compaction process takes places.
@param row The row containing all the KVs to compact.  Must be non-null.
@param compacted If non-null, the first item in the array will be set to
a {@link KeyValue} containing the compacted form of this row.
If non-null, we will also not write the compacted form back to HBase
unless the timestamp in the row key is old enough.
@param annotations supplied list which will have all encountered
annotations added to it.
@return A {@link Deferred} if the compaction processed required a write
to HBase, otherwise {@code null}.