code: public static FenceWait prepareWait(byte[] fenceId, TransactionSystemClient txClient)
      throws TransactionFailureException, InterruptedException, TimeoutException {
      return new DefaultFenceWait(new TransactionContext(txClient, new WriteFence(fenceId)));
    }
docs: Used by a writer to wait on a fence so that changes are visible to all readers with in-progress transactions.
  
  @param fenceId uniquely identifies the data that this fence is used to synchronize.
  If the data is a table cell then this id can be composed of the table name, row key
  and column key for the data.
  @return {@link FenceWait} object