default CompletableFuture<Long> incrementColumnValue(byte[] row, byte[] family, byte[] qualifier,
    long amount, Durability durability) {
    Preconditions.checkNotNull(row, "row is null");
    Preconditions.checkNotNull(family, "family is null");
    return increment(
      new Increment(row).addColumn(family, qualifier, amount).setDurability(durability))
      .thenApply(r -> Bytes.toLong(r.getValue(family, qualifier)));
  }
Atomically increments a column value. If the column value already exists and is not a
big-endian long, this could throw an exception. If the column value does not yet exist it is
initialized to <code>amount</code> and written to the specified column.
<p>
Setting durability to {@link Durability#SKIP_WAL} means that in a fail scenario you will lose
any increments that have not been flushed.
@param row        The row that contains the cell to increment.
@param family     The column family of the cell to increment.
@param qualifier  The column qualifier of the cell to increment.
@param amount     The amount to increment the cell with (or decrement, if the amount is
                  negative).
@param durability The persistence guarantee for this increment.
@return The new value, post increment. The return value will be wrapped by a
        {@link CompletableFuture}.
hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncTable.java