@Override
  public CheckAndMutateWithFilterBuilder checkAndMutate(byte[] row, Filter filter) {
    return new CheckAndMutateWithFilterBuilder() {
      private final AsyncTable.CheckAndMutateWithFilterBuilder builder =
        table.checkAndMutate(row, filter);

      @Override
      public CheckAndMutateWithFilterBuilder timeRange(TimeRange timeRange) {
        builder.timeRange(timeRange);
        return this;
      }

      @Override
      public boolean thenPut(Put put) throws IOException {
        return FutureUtils.get(builder.thenPut(put));
      }

      @Override
      public boolean thenDelete(Delete delete) throws IOException {
        return FutureUtils.get(builder.thenDelete(delete));
      }

      @Override
      public boolean thenMutate(RowMutations mutation) throws IOException {
        return FutureUtils.get(builder.thenMutate(mutation));
      }
    };
  }
The table implementation based on {@link AsyncTable}.
hbase-client/src/main/java/org/apache/hadoop/hbase/client/TableOverAsyncTable.java