docs: ApiFuture<Void> begin() {
      BeginTransactionRequest.Builder beginTransaction = BeginTransactionRequest.newBuilder();
      beginTransaction.setDatabase(firestore.getDatabaseName());
  
      if (previousTransactionId != null) {
        beginTransaction
            .getOptionsBuilder()
            .getReadWriteBuilder()
            .setRetryTransaction(previousTransactionId);
      }
  
      ApiFuture<BeginTransactionResponse> transactionBeginFuture =
          firestore.sendRequest(
              beginTransaction.build(), firestore.getClient().beginTransactionCallable());
  
      return ApiFutures.transform(
          transactionBeginFuture,
          new ApiFunction<BeginTransactionResponse, Void>() {
            @Override
            public Void apply(BeginTransactionResponse beginTransactionResponse) {
              transactionId = beginTransactionResponse.getTransaction();
              pending = true;
              return null;
            }
          });
    }