From 2a6e35cf04095d84a4d8de701b0f110045fd83df Mon Sep 17 00:00:00 2001
From: Jin Seop Kim <jinseop@google.com>
Date: Wed, 25 Feb 2026 14:15:32 -0500
Subject: [PATCH 1/6] feat: Expose autogenerated GAPIC client via getNewApi()

This change adds a `getNewApi()` method to `BigtableTableAdminClient` which returns the underlying `BaseBigtableTableAdminClient`.

By using composition, we expose the fully generated GAPIC client to users, allowing them to access the newest features and proto-based methods. This maintains the legacy client as a backward-compatible facade without risking method signature collisions.

This addresses the legacy client integration phase of the Admin API GAPIC upgrade.

Tracking Bug: b/475818901
---
 .../bigtable/admin/v2/BigtableTableAdminClient.java    | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index b5ee9d90eac0..87897b7c4df2 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -151,6 +151,7 @@ public final class BigtableTableAdminClient implements AutoCloseable {
   private final EnhancedBigtableTableAdminStub stub;
   private final String projectId;
   private final String instanceId;
+  private final BaseBigtableTableAdminClient newApi;
 
   /** Constructs an instance of BigtableTableAdminClient with the given project and instance IDs. */
   public static BigtableTableAdminClient create(
@@ -190,6 +191,7 @@ private BigtableTableAdminClient(
     this.projectId = projectId;
     this.instanceId = instanceId;
     this.stub = stub;
+    this.newApi = BaseBigtableTableAdminClient.create(stub);
   }
 
   /** Gets the project ID of the instance whose tables this client manages. */
@@ -202,6 +204,14 @@ public String getInstanceId() {
     return instanceId;
   }
 
+  /**
+   * Returns the underlying autogenerated GAPIC client.
+   * This provides access to the newest features and proto-based methods.
+   */
+  public BaseBigtableTableAdminClient getNewApi() {
+    return newApi;
+  }
+
   @Override
   public void close() {
     stub.close();

From abd35dd8bf66115bae842d712262be693523c252 Mon Sep 17 00:00:00 2001
From: Jin Seop Kim <jinseop@google.com>
Date: Wed, 25 Feb 2026 14:30:14 -0500
Subject: [PATCH 2/6] refactor: Mark legacy handwritten methods as ObsoleteApi

Marks all existing legacy veneer methods in BigtableTableAdminClient with @ObsoleteApi, directing users to the new getNewApi() surface.
This freezes the legacy API surface as planned in the GAPIC modernization effort.

Tracking Bug: b/475818901
---
 .../admin/v2/BigtableTableAdminClient.java    | 77 +++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index 87897b7c4df2..fd8f959c8e94 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -19,6 +19,7 @@
 import com.google.api.core.ApiFunction;
 import com.google.api.core.ApiFuture;
 import com.google.api.core.ApiFutures;
+import com.google.api.core.ObsoleteApi;
 import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.rpc.ApiExceptions;
 import com.google.api.gax.rpc.NotFoundException;
@@ -242,6 +243,7 @@ public void close() {
    * @see CreateTableRequest for available options.
    * @see GCRules for the documentation on available garbage collection rules.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table createTable(CreateTableRequest request) {
     return ApiExceptions.callAndTranslateApiException(createTableAsync(request));
   }
@@ -286,6 +288,7 @@ public Table createTable(CreateTableRequest request) {
    * @see GCRules for the documentation on available garbage collection rules.
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> createTableAsync(CreateTableRequest request) {
     return transformToTableResponse(
         this.stub.createTableCallable().futureCall(request.toProto(projectId, instanceId)));
@@ -312,6 +315,7 @@ public ApiFuture<Table> createTableAsync(CreateTableRequest request) {
    *
    * @see UpdateTableRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table updateTable(UpdateTableRequest request) {
     return ApiExceptions.callAndTranslateApiException(updateTableAsync(request));
   }
@@ -345,6 +349,7 @@ public Table updateTable(UpdateTableRequest request) {
    *
    * @see UpdateTableRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> updateTableAsync(UpdateTableRequest request) {
     return ApiFutures.transform(
         stub.updateTableOperationCallable().futureCall(request.toProto(projectId, instanceId)),
@@ -391,6 +396,7 @@ public Table apply(com.google.bigtable.admin.v2.Table tableProto) {
    *
    * @see ModifyColumnFamiliesRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
     return ApiExceptions.callAndTranslateApiException(modifyFamiliesAsync(request));
   }
@@ -443,6 +449,7 @@ public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
    * @see ModifyColumnFamiliesRequest for available options.
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> modifyFamiliesAsync(ModifyColumnFamiliesRequest request) {
     return transformToTableResponse(
         this.stub
@@ -459,6 +466,7 @@ public ApiFuture<Table> modifyFamiliesAsync(ModifyColumnFamiliesRequest request)
    * client.deleteTable("my-table");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteTable(String tableId) {
     ApiExceptions.callAndTranslateApiException(deleteTableAsync(tableId));
   }
@@ -487,6 +495,7 @@ public void deleteTable(String tableId) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteTableAsync(String tableId) {
     DeleteTableRequest request =
         DeleteTableRequest.newBuilder().setName(getTableName(tableId)).build();
@@ -505,6 +514,7 @@ public ApiFuture<Void> deleteTableAsync(String tableId) {
    * }
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public boolean exists(String tableId) {
     return ApiExceptions.callAndTranslateApiException(existsAsync(tableId));
   }
@@ -536,6 +546,7 @@ public boolean exists(String tableId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Boolean> existsAsync(String tableId) {
 
     ApiFuture<Table> protoFuture =
@@ -580,6 +591,7 @@ public Boolean apply(NotFoundException ignored) {
    * }
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table getTable(String tableId) {
     return ApiExceptions.callAndTranslateApiException(getTableAsync(tableId));
   }
@@ -612,6 +624,7 @@ public Table getTable(String tableId) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> getTableAsync(String tableId) {
     return getTableAsync(tableId, com.google.bigtable.admin.v2.Table.View.SCHEMA_VIEW);
   }
@@ -630,6 +643,7 @@ private ApiFuture<Table> getTableAsync(
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
     return ApiExceptions.callAndTranslateApiException(getEncryptionInfoAsync(tableId));
   }
@@ -640,6 +654,7 @@ public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Map<String, List<EncryptionInfo>>> getEncryptionInfoAsync(String tableId) {
     GetTableRequest request =
         GetTableRequest.newBuilder()
@@ -683,6 +698,7 @@ public Map<String, List<EncryptionInfo>> apply(com.google.bigtable.admin.v2.Tabl
    * }
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listTables() {
     return ApiExceptions.callAndTranslateApiException(listTablesAsync());
   }
@@ -713,6 +729,7 @@ public List<String> listTables() {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listTablesAsync() {
     ListTablesRequest request =
         ListTablesRequest.newBuilder()
@@ -786,6 +803,7 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Table> protos) {
    * client.dropRowRange("my-table", "prefix");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropRowRange(String tableId, String rowKeyPrefix) {
     ApiExceptions.callAndTranslateApiException(dropRowRangeAsync(tableId, rowKeyPrefix));
   }
@@ -816,6 +834,7 @@ public void dropRowRange(String tableId, String rowKeyPrefix) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> dropRowRangeAsync(String tableId, String rowKeyPrefix) {
     return dropRowRangeAsync(tableId, ByteString.copyFromUtf8(rowKeyPrefix));
   }
@@ -832,6 +851,7 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, String rowKeyPrefix) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropRowRange(String tableId, ByteString rowKeyPrefix) {
     ApiExceptions.callAndTranslateApiException(dropRowRangeAsync(tableId, rowKeyPrefix));
   }
@@ -862,6 +882,7 @@ public void dropRowRange(String tableId, ByteString rowKeyPrefix) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> dropRowRangeAsync(String tableId, ByteString rowKeyPrefix) {
     DropRowRangeRequest request =
         DropRowRangeRequest.newBuilder()
@@ -881,6 +902,7 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, ByteString rowKeyPrefix
    * client.dropAllRows("my-table");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropAllRows(String tableId) {
     ApiExceptions.callAndTranslateApiException(dropAllRowsAsync(tableId));
   }
@@ -909,6 +931,7 @@ public void dropAllRows(String tableId) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> dropAllRowsAsync(String tableId) {
     DropRowRangeRequest request =
         DropRowRangeRequest.newBuilder()
@@ -932,6 +955,7 @@ public ApiFuture<Void> dropAllRowsAsync(String tableId) {
    *
    * @throws com.google.api.gax.retrying.PollException when polling exceeds the total timeout
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void awaitReplication(String tableId) {
     // TODO(igorbernstein2): remove usage of typesafe names
     com.google.bigtable.admin.v2.TableName tableName =
@@ -959,6 +983,7 @@ public void awaitConsistency(ConsistencyRequest consistencyRequest) {
    * Backup response = client.createBackup(request);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup createBackup(CreateBackupRequest request) {
     return ApiExceptions.callAndTranslateApiException(createBackupAsync(request));
   }
@@ -990,6 +1015,7 @@ public Backup createBackup(CreateBackupRequest request) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> createBackupAsync(CreateBackupRequest request) {
     return ApiFutures.transform(
         stub.createBackupOperationCallable().futureCall(request.toProto(projectId, instanceId)),
@@ -1011,6 +1037,7 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
    * Backup backup = client.getBackup(clusterId, backupId);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup getBackup(String clusterId, String backupId) {
     return ApiExceptions.callAndTranslateApiException(getBackupAsync(clusterId, backupId));
   }
@@ -1038,6 +1065,7 @@ public Backup getBackup(String clusterId, String backupId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> getBackupAsync(String clusterId, String backupId) {
     GetBackupRequest request =
         GetBackupRequest.newBuilder()
@@ -1063,6 +1091,7 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backup) {
    * List<String> backups = client.listBackups(clusterId);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listBackups(String clusterId) {
     return ApiExceptions.callAndTranslateApiException(listBackupsAsync(clusterId));
   }
@@ -1093,6 +1122,7 @@ public List<String> listBackups(String clusterId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listBackupsAsync(String clusterId) {
     ListBackupsRequest request =
         ListBackupsRequest.newBuilder()
@@ -1164,6 +1194,7 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Backup> protos) {
    * client.deleteBackup(clusterId, backupId);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteBackup(String clusterId, String backupId) {
     ApiExceptions.callAndTranslateApiException(deleteBackupAsync(clusterId, backupId));
   }
@@ -1191,6 +1222,7 @@ public void deleteBackup(String clusterId, String backupId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
     DeleteBackupRequest request =
         DeleteBackupRequest.newBuilder()
@@ -1209,6 +1241,7 @@ public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
    * Backup backup = client.updateBackup(clusterId, backupId);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup updateBackup(UpdateBackupRequest request) {
     return ApiExceptions.callAndTranslateApiException(updateBackupAsync(request));
   }
@@ -1236,6 +1269,7 @@ public Backup updateBackup(UpdateBackupRequest request) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> updateBackupAsync(UpdateBackupRequest request) {
     return ApiFutures.transform(
         stub.updateBackupCallable().futureCall(request.toProto(projectId, instanceId)),
@@ -1258,6 +1292,7 @@ public Backup apply(com.google.bigtable.admin.v2.Backup proto) {
    *     client.restoreTable(RestoreTableRequest.of(clusterId, backupId).setTableId(tableId));
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public RestoredTableResult restoreTable(RestoreTableRequest request)
       throws ExecutionException, InterruptedException {
     return ApiExceptions.callAndTranslateApiException(restoreTableAsync(request));
@@ -1285,6 +1320,7 @@ public RestoredTableResult restoreTable(RestoreTableRequest request)
    * );
    * </pre>
    * */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<RestoredTableResult> restoreTableAsync(RestoreTableRequest request) {
     final OperationFuture<com.google.bigtable.admin.v2.Table, RestoreTableMetadata> future =
         this.stub
@@ -1424,6 +1460,7 @@ public ApiFuture<Void> awaitOptimizeRestoredTableAsync(
    * Backup response = client.copyBackup(request);
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup copyBackup(CopyBackupRequest request) {
     return ApiExceptions.callAndTranslateApiException(copyBackupAsync(request));
   }
@@ -1456,6 +1493,7 @@ public Backup copyBackup(CopyBackupRequest request) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> copyBackupAsync(CopyBackupRequest request) {
     return ApiFutures.transform(
         stub.copyBackupOperationCallable().futureCall(request.toProto(projectId, instanceId)),
@@ -1495,6 +1533,7 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
    * }</pre>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> awaitReplicationAsync(final String tableId) {
     // TODO(igorbernstein2): remove usage of typesafe names
     com.google.bigtable.admin.v2.TableName tableName =
@@ -1546,6 +1585,7 @@ public ApiFuture<Void> waitForConsistencyAsync(String tableId, String consistenc
    *
    * @see CreateAuthorizedViewRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request) {
     return ApiExceptions.callAndTranslateApiException(createAuthorizedViewAsync(request));
   }
@@ -1584,6 +1624,7 @@ public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request)
    *
    * @see CreateAuthorizedViewRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> createAuthorizedViewAsync(CreateAuthorizedViewRequest request) {
     return ApiFutures.transform(
         stub.createAuthorizedViewOperationCallable()
@@ -1614,6 +1655,7 @@ public AuthorizedView apply(
    *
    * @see UpdateAuthorizedViewRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request) {
     return ApiExceptions.callAndTranslateApiException(updateAuthorizedViewAsync(request));
   }
@@ -1648,6 +1690,7 @@ public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request)
    *
    * @see UpdateAuthorizedViewRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> updateAuthorizedViewAsync(UpdateAuthorizedViewRequest request) {
     return ApiFutures.transform(
         stub.updateAuthorizedViewOperationCallable()
@@ -1671,6 +1714,7 @@ public AuthorizedView apply(
    * AuthorizedView authorizedView = client.getAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId) {
     return ApiExceptions.callAndTranslateApiException(
         getAuthorizedViewAsync(tableId, authorizedViewId));
@@ -1700,6 +1744,7 @@ public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId)
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> getAuthorizedViewAsync(String tableId, String authorizedViewId) {
     GetAuthorizedViewRequest request =
         GetAuthorizedViewRequest.newBuilder()
@@ -1727,6 +1772,7 @@ public AuthorizedView apply(
    * List<String> authorizedViews = client.listAuthorizedViews("my-table");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listAuthorizedViews(String tableId) {
     return ApiExceptions.callAndTranslateApiException(listAuthorizedViewsAsync(tableId));
   }
@@ -1757,6 +1803,7 @@ public List<String> listAuthorizedViews(String tableId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listAuthorizedViewsAsync(String tableId) {
     ListAuthorizedViewsRequest request =
         ListAuthorizedViewsRequest.newBuilder()
@@ -1832,6 +1879,7 @@ public List<String> apply(List<com.google.bigtable.admin.v2.AuthorizedView> prot
    * client.deleteAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteAuthorizedView(String tableId, String authorizedViewId) {
     ApiExceptions.callAndTranslateApiException(
         deleteAuthorizedViewAsync(tableId, authorizedViewId));
@@ -1862,6 +1910,7 @@ public void deleteAuthorizedView(String tableId, String authorizedViewId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authorizedViewId) {
     DeleteAuthorizedViewRequest request =
         DeleteAuthorizedViewRequest.newBuilder()
@@ -1891,6 +1940,7 @@ public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authoriz
    *
    * @see CreateSchemaBundleRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
     return ApiExceptions.callAndTranslateApiException(createSchemaBundleAsync(request));
   }
@@ -1927,6 +1977,7 @@ public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
    *
    * @see CreateSchemaBundleRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> createSchemaBundleAsync(CreateSchemaBundleRequest request) {
     return ApiFutures.transform(
         stub.createSchemaBundleOperationCallable()
@@ -1955,6 +2006,7 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    *
    * @see UpdateSchemaBundleRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
     return ApiExceptions.callAndTranslateApiException(updateSchemaBundleAsync(request));
   }
@@ -1987,6 +2039,7 @@ public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
    *
    * @see UpdateSchemaBundleRequest for available options.
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> updateSchemaBundleAsync(UpdateSchemaBundleRequest request) {
     return ApiFutures.transform(
         stub.updateSchemaBundleOperationCallable()
@@ -2009,6 +2062,7 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * SchemaBundle schemaBundle = client.getSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
     return ApiExceptions.callAndTranslateApiException(
         getSchemaBundleAsync(tableId, schemaBundleId));
@@ -2037,6 +2091,7 @@ public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
    *     MoreExecutors.directExecutor());
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> getSchemaBundleAsync(String tableId, String schemaBundleId) {
     GetSchemaBundleRequest request =
         GetSchemaBundleRequest.newBuilder()
@@ -2063,6 +2118,7 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * List<String> schemaBundles = client.listSchemaBundles("my-table");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listSchemaBundles(String tableId) {
     return ApiExceptions.callAndTranslateApiException(listSchemaBundlesAsync(tableId));
   }
@@ -2092,6 +2148,7 @@ public List<String> listSchemaBundles(String tableId) {
    *     MoreExecutors.directExecutor());
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listSchemaBundlesAsync(String tableId) {
     ListSchemaBundlesRequest request =
         ListSchemaBundlesRequest.newBuilder()
@@ -2166,6 +2223,7 @@ public List<String> apply(List<com.google.bigtable.admin.v2.SchemaBundle> protos
    * client.deleteSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteSchemaBundle(String tableId, String schemaBundleId) {
     ApiExceptions.callAndTranslateApiException(deleteSchemaBundleAsync(tableId, schemaBundleId));
   }
@@ -2194,6 +2252,7 @@ public void deleteSchemaBundle(String tableId, String schemaBundleId) {
    * );
    * }</pre>
    */
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteSchemaBundleAsync(String tableId, String schemaBundleId) {
     DeleteSchemaBundleRequest request =
         DeleteSchemaBundleRequest.newBuilder()
@@ -2260,6 +2319,7 @@ public Void apply(Empty empty) {
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy getIamPolicy(String tableId) {
     return ApiExceptions.callAndTranslateApiException(getIamPolicyAsync(tableId));
   }
@@ -2292,6 +2352,7 @@ public Policy getIamPolicy(String tableId) {
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> getIamPolicyAsync(String tableId) {
     String tableName = NameUtil.formatTableName(projectId, instanceId, tableId);
     return getResourceIamPolicy(tableName);
@@ -2315,6 +2376,7 @@ public ApiFuture<Policy> getIamPolicyAsync(String tableId) {
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy setIamPolicy(String tableId, Policy policy) {
     return ApiExceptions.callAndTranslateApiException(setIamPolicyAsync(tableId, policy));
   }
@@ -2351,6 +2413,7 @@ public Policy setIamPolicy(String tableId, Policy policy) {
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> setIamPolicyAsync(String tableId, Policy policy) {
     String tableName = NameUtil.formatTableName(projectId, instanceId, tableId);
     return setResourceIamPolicy(policy, tableName);
@@ -2375,6 +2438,7 @@ public ApiFuture<Policy> setIamPolicyAsync(String tableId, Policy policy) {
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> testIamPermission(String tableId, String... permissions) {
     return ApiExceptions.callAndTranslateApiException(testIamPermissionAsync(tableId, permissions));
   }
@@ -2407,6 +2471,7 @@ public List<String> testIamPermission(String tableId, String... permissions) {
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> testIamPermissionAsync(String tableId, String... permissions) {
     String tableName = NameUtil.formatTableName(projectId, instanceId, tableId);
     return testResourceIamPermissions(tableName, permissions);
@@ -2429,6 +2494,7 @@ public ApiFuture<List<String>> testIamPermissionAsync(String tableId, String...
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy getBackupIamPolicy(String clusterId, String backupId) {
     return ApiExceptions.callAndTranslateApiException(getBackupIamPolicyAsync(clusterId, backupId));
   }
@@ -2461,6 +2527,7 @@ public Policy getBackupIamPolicy(String clusterId, String backupId) {
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> getBackupIamPolicyAsync(String clusterId, String backupId) {
     String backupName = NameUtil.formatBackupName(projectId, instanceId, clusterId, backupId);
     return getResourceIamPolicy(backupName);
@@ -2484,6 +2551,7 @@ public ApiFuture<Policy> getBackupIamPolicyAsync(String clusterId, String backup
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy setBackupIamPolicy(String clusterId, String backupId, Policy policy) {
     return ApiExceptions.callAndTranslateApiException(
         setBackupIamPolicyAsync(clusterId, backupId, policy));
@@ -2521,6 +2589,7 @@ public Policy setBackupIamPolicy(String clusterId, String backupId, Policy polic
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> setBackupIamPolicyAsync(
       String clusterId, String backupId, Policy policy) {
     String backupName = NameUtil.formatBackupName(projectId, instanceId, clusterId, backupId);
@@ -2548,6 +2617,7 @@ public ApiFuture<Policy> setBackupIamPolicyAsync(
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> testBackupIamPermission(
       String clusterId, String backupId, String... permissions) {
     return ApiExceptions.callAndTranslateApiException(
@@ -2582,6 +2652,7 @@ public List<String> testBackupIamPermission(
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> testBackupIamPermissionAsync(
       String clusterId, String backupId, String... permissions) {
     String backupName = NameUtil.formatBackupName(projectId, instanceId, clusterId, backupId);
@@ -2605,6 +2676,7 @@ public ApiFuture<List<String>> testBackupIamPermissionAsync(
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy getAuthorizedViewIamPolicy(String tableId, String authorizedViewId) {
     return ApiExceptions.callAndTranslateApiException(
         getAuthorizedViewIamPolicyAsync(tableId, authorizedViewId));
@@ -2638,6 +2710,7 @@ public Policy getAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> getAuthorizedViewIamPolicyAsync(
       String tableId, String authorizedViewId) {
     String authorizedViewName =
@@ -2663,6 +2736,7 @@ public ApiFuture<Policy> getAuthorizedViewIamPolicyAsync(
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Policy setAuthorizedViewIamPolicy(String tableId, String authorizedViewId, Policy policy) {
     return ApiExceptions.callAndTranslateApiException(
         setAuthorizedViewIamPolicyAsync(tableId, authorizedViewId, policy));
@@ -2700,6 +2774,7 @@ public Policy setAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    *     IAM management</a>
    */
   @SuppressWarnings("WeakerAccess")
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Policy> setAuthorizedViewIamPolicyAsync(
       String tableId, String authorizedViewId, Policy policy) {
     String authorizedViewName =
@@ -2728,6 +2803,7 @@ public ApiFuture<Policy> setAuthorizedViewIamPolicyAsync(
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> testAuthorizedViewIamPermission(
       String tableId, String authorizedViewId, String... permissions) {
     return ApiExceptions.callAndTranslateApiException(
@@ -2762,6 +2838,7 @@ public List<String> testAuthorizedViewIamPermission(
    *     permissions</a>
    */
   @SuppressWarnings({"WeakerAccess"})
+  @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> testAuthorizedViewIamPermissionAsync(
       String tableId, String authorizedViewId, String... permissions) {
     String authorizedViewName =

From 64bcbcc9ce8e42c91f9fe806e79d1d9f47b3b90e Mon Sep 17 00:00:00 2001
From: cloud-java-bot <cloud-java-bot@google.com>
Date: Wed, 25 Feb 2026 19:37:58 +0000
Subject: [PATCH 3/6] chore: generate libraries at Wed Feb 25 19:35:31 UTC 2026

---
 .../cloud/bigtable/admin/v2/BigtableTableAdminClient.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index fd8f959c8e94..39b89c4b443a 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -206,8 +206,8 @@ public String getInstanceId() {
   }
 
   /**
-   * Returns the underlying autogenerated GAPIC client.
-   * This provides access to the newest features and proto-based methods.
+   * Returns the underlying autogenerated GAPIC client. This provides access to the newest features
+   * and proto-based methods.
    */
   public BaseBigtableTableAdminClient getNewApi() {
     return newApi;

From 33dc297936d6a6e600998e27e16d0de58ede373b Mon Sep 17 00:00:00 2001
From: Jin Seop Kim <jinseop@google.com>
Date: Thu, 26 Feb 2026 13:53:13 -0500
Subject: [PATCH 4/6] chore: add comments in the javadoc

---
 .../admin/v2/BigtableTableAdminClient.java    | 197 +++++++++++++++++-
 1 file changed, 196 insertions(+), 1 deletion(-)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index 39b89c4b443a..21fc301b1e9b 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -242,6 +242,8 @@ public void close() {
    *
    * @see CreateTableRequest for available options.
    * @see GCRules for the documentation on available garbage collection rules.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table createTable(CreateTableRequest request) {
@@ -286,6 +288,8 @@ public Table createTable(CreateTableRequest request) {
    *
    * @see CreateTableRequest for available options.
    * @see GCRules for the documentation on available garbage collection rules.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -314,6 +318,8 @@ public ApiFuture<Table> createTableAsync(CreateTableRequest request) {
    * }</pre>
    *
    * @see UpdateTableRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table updateTable(UpdateTableRequest request) {
@@ -348,6 +354,8 @@ public Table updateTable(UpdateTableRequest request) {
    * }</pre>
    *
    * @see UpdateTableRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> updateTableAsync(UpdateTableRequest request) {
@@ -395,6 +403,8 @@ public Table apply(com.google.bigtable.admin.v2.Table tableProto) {
    * }</pre>
    *
    * @see ModifyColumnFamiliesRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
@@ -447,6 +457,8 @@ public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
    * }</pre>
    *
    * @see ModifyColumnFamiliesRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -465,6 +477,9 @@ public ApiFuture<Table> modifyFamiliesAsync(ModifyColumnFamiliesRequest request)
    * <pre>{@code
    * client.deleteTable("my-table");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteTable(String tableId) {
@@ -493,6 +508,9 @@ public void deleteTable(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -513,6 +531,9 @@ public ApiFuture<Void> deleteTableAsync(String tableId) {
    *   System.out.println("Table exists");
    * }
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public boolean exists(String tableId) {
@@ -545,6 +566,9 @@ public boolean exists(String tableId) {
    *  MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Boolean> existsAsync(String tableId) {
@@ -590,6 +614,9 @@ public Boolean apply(NotFoundException ignored) {
    *   System.out.println(cf.getId());
    * }
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table getTable(String tableId) {
@@ -622,6 +649,9 @@ public Table getTable(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -642,6 +672,9 @@ private ApiFuture<Table> getTableAsync(
    *
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
@@ -653,6 +686,9 @@ public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
    *
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Map<String, List<EncryptionInfo>>> getEncryptionInfoAsync(String tableId) {
@@ -697,6 +733,9 @@ public Map<String, List<EncryptionInfo>> apply(com.google.bigtable.admin.v2.Tabl
    *   System.out.println(tableId);
    * }
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listTables() {
@@ -728,6 +767,9 @@ public List<String> listTables() {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listTablesAsync() {
@@ -802,6 +844,9 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Table> protos) {
    * <pre>{@code
    * client.dropRowRange("my-table", "prefix");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropRowRange(String tableId, String rowKeyPrefix) {
@@ -832,6 +877,9 @@ public void dropRowRange(String tableId, String rowKeyPrefix) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -849,6 +897,9 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, String rowKeyPrefix) {
    * <pre>{@code
    * client.dropRowRange("my-table", ByteString.copyFromUtf8("prefix"));
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -880,6 +931,9 @@ public void dropRowRange(String tableId, ByteString rowKeyPrefix) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -901,6 +955,9 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, ByteString rowKeyPrefix
    * <pre>{@code
    * client.dropAllRows("my-table");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropAllRows(String tableId) {
@@ -929,6 +986,9 @@ public void dropAllRows(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -954,6 +1014,8 @@ public ApiFuture<Void> dropAllRowsAsync(String tableId) {
    * }</pre>
    *
    * @throws com.google.api.gax.retrying.PollException when polling exceeds the total timeout
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void awaitReplication(String tableId) {
@@ -982,6 +1044,9 @@ public void awaitConsistency(ConsistencyRequest consistencyRequest) {
    *             .setExpireTime(expireTime);
    * Backup response = client.createBackup(request);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup createBackup(CreateBackupRequest request) {
@@ -1014,6 +1079,9 @@ public Backup createBackup(CreateBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> createBackupAsync(CreateBackupRequest request) {
@@ -1036,6 +1104,9 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
    * <pre>{@code
    * Backup backup = client.getBackup(clusterId, backupId);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup getBackup(String clusterId, String backupId) {
@@ -1064,6 +1135,9 @@ public Backup getBackup(String clusterId, String backupId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> getBackupAsync(String clusterId, String backupId) {
@@ -1090,6 +1164,9 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backup) {
    * <pre>{@code
    * List<String> backups = client.listBackups(clusterId);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listBackups(String clusterId) {
@@ -1121,6 +1198,9 @@ public List<String> listBackups(String clusterId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listBackupsAsync(String clusterId) {
@@ -1193,6 +1273,9 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Backup> protos) {
    * <pre>{@code
    * client.deleteBackup(clusterId, backupId);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteBackup(String clusterId, String backupId) {
@@ -1221,6 +1304,9 @@ public void deleteBackup(String clusterId, String backupId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
@@ -1240,6 +1326,9 @@ public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
    * <pre>{@code
    * Backup backup = client.updateBackup(clusterId, backupId);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup updateBackup(UpdateBackupRequest request) {
@@ -1268,6 +1357,9 @@ public Backup updateBackup(UpdateBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> updateBackupAsync(UpdateBackupRequest request) {
@@ -1291,6 +1383,9 @@ public Backup apply(com.google.bigtable.admin.v2.Backup proto) {
    * RestoredTableResult result =
    *     client.restoreTable(RestoreTableRequest.of(clusterId, backupId).setTableId(tableId));
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public RestoredTableResult restoreTable(RestoreTableRequest request)
@@ -1319,7 +1414,10 @@ public RestoredTableResult restoreTable(RestoreTableRequest request)
    *   MoreExecutors.directExecutor()
    * );
    * </pre>
-   * */
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
+   */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<RestoredTableResult> restoreTableAsync(RestoreTableRequest request) {
     final OperationFuture<com.google.bigtable.admin.v2.Table, RestoreTableMetadata> future =
@@ -1459,6 +1557,9 @@ public ApiFuture<Void> awaitOptimizeRestoredTableAsync(
    *             .setExpireTime(expireTime);
    * Backup response = client.copyBackup(request);
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup copyBackup(CopyBackupRequest request) {
@@ -1492,6 +1593,9 @@ public Backup copyBackup(CopyBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> copyBackupAsync(CopyBackupRequest request) {
@@ -1531,6 +1635,9 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
    * );
    *
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -1584,6 +1691,8 @@ public ApiFuture<Void> waitForConsistencyAsync(String tableId, String consistenc
    * }</pre>
    *
    * @see CreateAuthorizedViewRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request) {
@@ -1623,6 +1732,8 @@ public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request)
    * }</pre>
    *
    * @see CreateAuthorizedViewRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> createAuthorizedViewAsync(CreateAuthorizedViewRequest request) {
@@ -1654,6 +1765,8 @@ public AuthorizedView apply(
    * }</pre>
    *
    * @see UpdateAuthorizedViewRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request) {
@@ -1689,6 +1802,8 @@ public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request)
    * }</pre>
    *
    * @see UpdateAuthorizedViewRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> updateAuthorizedViewAsync(UpdateAuthorizedViewRequest request) {
@@ -1713,6 +1828,9 @@ public AuthorizedView apply(
    * <pre>{@code
    * AuthorizedView authorizedView = client.getAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId) {
@@ -1743,6 +1861,9 @@ public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId)
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> getAuthorizedViewAsync(String tableId, String authorizedViewId) {
@@ -1771,6 +1892,9 @@ public AuthorizedView apply(
    * <pre>{@code
    * List<String> authorizedViews = client.listAuthorizedViews("my-table");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listAuthorizedViews(String tableId) {
@@ -1802,6 +1926,9 @@ public List<String> listAuthorizedViews(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listAuthorizedViewsAsync(String tableId) {
@@ -1878,6 +2005,9 @@ public List<String> apply(List<com.google.bigtable.admin.v2.AuthorizedView> prot
    * <pre>{@code
    * client.deleteAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteAuthorizedView(String tableId, String authorizedViewId) {
@@ -1909,6 +2039,9 @@ public void deleteAuthorizedView(String tableId, String authorizedViewId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authorizedViewId) {
@@ -1939,6 +2072,8 @@ public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authoriz
    * }</pre>
    *
    * @see CreateSchemaBundleRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
@@ -1976,6 +2111,8 @@ public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
    * }</pre>
    *
    * @see CreateSchemaBundleRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> createSchemaBundleAsync(CreateSchemaBundleRequest request) {
@@ -2005,6 +2142,8 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * }</pre>
    *
    * @see UpdateSchemaBundleRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
@@ -2038,6 +2177,8 @@ public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
    * }</pre>
    *
    * @see UpdateSchemaBundleRequest for available options.
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> updateSchemaBundleAsync(UpdateSchemaBundleRequest request) {
@@ -2061,6 +2202,9 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * <pre>{@code
    * SchemaBundle schemaBundle = client.getSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
@@ -2090,6 +2234,9 @@ public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
    *     },
    *     MoreExecutors.directExecutor());
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> getSchemaBundleAsync(String tableId, String schemaBundleId) {
@@ -2117,6 +2264,9 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * <pre>{@code
    * List<String> schemaBundles = client.listSchemaBundles("my-table");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listSchemaBundles(String tableId) {
@@ -2147,6 +2297,9 @@ public List<String> listSchemaBundles(String tableId) {
    *     },
    *     MoreExecutors.directExecutor());
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listSchemaBundlesAsync(String tableId) {
@@ -2222,6 +2375,9 @@ public List<String> apply(List<com.google.bigtable.admin.v2.SchemaBundle> protos
    * <pre>{@code
    * client.deleteSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteSchemaBundle(String tableId, String schemaBundleId) {
@@ -2251,6 +2407,9 @@ public void deleteSchemaBundle(String tableId, String schemaBundleId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
+   *
+   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
+   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteSchemaBundleAsync(String tableId, String schemaBundleId) {
@@ -2317,6 +2476,8 @@ public Void apply(Empty empty) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2350,6 +2511,8 @@ public Policy getIamPolicy(String tableId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2374,6 +2537,8 @@ public ApiFuture<Policy> getIamPolicyAsync(String tableId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2411,6 +2576,8 @@ public Policy setIamPolicy(String tableId, Policy policy) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2436,6 +2603,8 @@ public ApiFuture<Policy> setIamPolicyAsync(String tableId, Policy policy) {
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2469,6 +2638,8 @@ public List<String> testIamPermission(String tableId, String... permissions) {
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2492,6 +2663,8 @@ public ApiFuture<List<String>> testIamPermissionAsync(String tableId, String...
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2525,6 +2698,8 @@ public Policy getBackupIamPolicy(String clusterId, String backupId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2549,6 +2724,8 @@ public ApiFuture<Policy> getBackupIamPolicyAsync(String clusterId, String backup
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2587,6 +2764,8 @@ public Policy setBackupIamPolicy(String clusterId, String backupId, Policy polic
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2615,6 +2794,8 @@ public ApiFuture<Policy> setBackupIamPolicyAsync(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2650,6 +2831,8 @@ public List<String> testBackupIamPermission(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2674,6 +2857,8 @@ public ApiFuture<List<String>> testBackupIamPermissionAsync(
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2708,6 +2893,8 @@ public Policy getAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2734,6 +2921,8 @@ public ApiFuture<Policy> getAuthorizedViewIamPolicyAsync(
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2772,6 +2961,8 @@ public Policy setAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2801,6 +2992,8 @@ public ApiFuture<Policy> setAuthorizedViewIamPolicyAsync(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2836,6 +3029,8 @@ public List<String> testAuthorizedViewIamPermission(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
+   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
+   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")

From 06917baec40bce5f843df49bc2db6eac08a39821 Mon Sep 17 00:00:00 2001
From: Jin Seop Kim <jinseop@google.com>
Date: Fri, 27 Feb 2026 10:49:19 -0500
Subject: [PATCH 5/6] chore: update the javadoc with a link

---
 .../admin/v2/BigtableTableAdminClient.java    | 630 ++++++++++--------
 1 file changed, 341 insertions(+), 289 deletions(-)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index 21fc301b1e9b..08b5cd3c760c 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -104,13 +104,30 @@
  * // One instance per application.
  * BigtableTableAdminClient client =  BigtableTableAdminClient.create("[PROJECT]", "[INSTANCE]");
  *
- * CreateTableRequest request =
- *   CreateTableRequest.of("my-table")
- *     .addFamily("cf1")
- *     .addFamily("cf2", GCRULES.maxVersions(10))
- *     .addSplit(ByteString.copyFromUtf8("b"))
- *     .addSplit(ByteString.copyFromUtf8("q"));
- * client.createTable(request);
+ * com.google.bigtable.admin.v2.CreateTableRequest request =
+ *   com.google.bigtable.admin.v2.CreateTableRequest.newBuilder()
+ *     .setParent(InstanceName.of("[PROJECT]", "[INSTANCE]").toString())
+ *     .setTableId("my-table")
+ *     .setTable(
+ *       com.google.bigtable.admin.v2.Table.newBuilder()
+ *         .putColumnFamilies("cf1", com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance())
+ *         .putColumnFamilies(
+ *           "cf2",
+ *           com.google.bigtable.admin.v2.ColumnFamily.newBuilder()
+ *             .setGcRule(GcRuleBuilder.maxVersions(10))
+ *             .build())
+ *         .build())
+ *     .addInitialSplits(
+ *       com.google.bigtable.admin.v2.CreateTableRequest.Split.newBuilder()
+ *         .setKey(ByteString.copyFromUtf8("b"))
+ *         .build())
+ *     .addInitialSplits(
+ *       com.google.bigtable.admin.v2.CreateTableRequest.Split.newBuilder()
+ *         .setKey(ByteString.copyFromUtf8("q"))
+ *         .build())
+ *     .build();
+ *
+ * client.getNewApi().createTable(request);
  *
  * // Cleanup during application shutdown.
  * client.close();
@@ -219,7 +236,10 @@ public void close() {
   }
 
   /**
-   * Creates a new table with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createTable(com.google.bigtable.admin.v2.CreateTableRequest)}.
+   *
+   * <p>Creates a new table with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -242,8 +262,6 @@ public void close() {
    *
    * @see CreateTableRequest for available options.
    * @see GCRules for the documentation on available garbage collection rules.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table createTable(CreateTableRequest request) {
@@ -251,7 +269,10 @@ public Table createTable(CreateTableRequest request) {
   }
 
   /**
-   * Asynchronously creates a new table with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createTableCallable()}.
+   *
+   * <p>Asynchronously creates a new table with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -288,8 +309,6 @@ public Table createTable(CreateTableRequest request) {
    *
    * @see CreateTableRequest for available options.
    * @see GCRules for the documentation on available garbage collection rules.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -299,7 +318,10 @@ public ApiFuture<Table> createTableAsync(CreateTableRequest request) {
   }
 
   /**
-   * Update a table with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateTable(com.google.bigtable.admin.v2.UpdateTableRequest)}.
+   *
+   * <p>Update a table with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -318,8 +340,6 @@ public ApiFuture<Table> createTableAsync(CreateTableRequest request) {
    * }</pre>
    *
    * @see UpdateTableRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table updateTable(UpdateTableRequest request) {
@@ -327,7 +347,10 @@ public Table updateTable(UpdateTableRequest request) {
   }
 
   /**
-   * Asynchronously update a table with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateTableOperationCallable()}.
+   *
+   * <p>Asynchronously update a table with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -354,8 +377,6 @@ public Table updateTable(UpdateTableRequest request) {
    * }</pre>
    *
    * @see UpdateTableRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Table> updateTableAsync(UpdateTableRequest request) {
@@ -371,7 +392,10 @@ public Table apply(com.google.bigtable.admin.v2.Table tableProto) {
   }
 
   /**
-   * Creates, updates and drops column families as specified in the request.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#modifyColumnFamilies(com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest)}.
+   *
+   * <p>Creates, updates and drops column families as specified in the request.
    *
    * <p>Sample code:
    *
@@ -403,8 +427,6 @@ public Table apply(com.google.bigtable.admin.v2.Table tableProto) {
    * }</pre>
    *
    * @see ModifyColumnFamiliesRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
@@ -412,7 +434,10 @@ public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
   }
 
   /**
-   * Asynchronously creates, updates, and drops column families as specified in the request.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#modifyColumnFamiliesCallable()}.
+   *
+   * <p>Asynchronously creates, updates, and drops column families as specified in the request.
    *
    * <p>Sample code:
    *
@@ -457,8 +482,6 @@ public Table modifyFamilies(ModifyColumnFamiliesRequest request) {
    * }</pre>
    *
    * @see ModifyColumnFamiliesRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -470,16 +493,16 @@ public ApiFuture<Table> modifyFamiliesAsync(ModifyColumnFamiliesRequest request)
   }
 
   /**
-   * Deletes the table specified by the table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteTable(com.google.bigtable.admin.v2.DeleteTableRequest)}.
+   *
+   * <p>Deletes the table specified by the table ID.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * client.deleteTable("my-table");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteTable(String tableId) {
@@ -487,7 +510,10 @@ public void deleteTable(String tableId) {
   }
 
   /**
-   * Asynchronously deletes the table specified by the table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteTableCallable()}.
+   *
+   * <p>Asynchronously deletes the table specified by the table ID.
    *
    * <p>Sample code:
    *
@@ -508,9 +534,6 @@ public void deleteTable(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -522,7 +545,10 @@ public ApiFuture<Void> deleteTableAsync(String tableId) {
   }
 
   /**
-   * Checks if the table specified by the table ID exists.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTable(com.google.bigtable.admin.v2.GetTableRequest)}.
+   *
+   * <p>Checks if the table specified by the table ID exists.
    *
    * <p>Sample code:
    *
@@ -531,9 +557,6 @@ public ApiFuture<Void> deleteTableAsync(String tableId) {
    *   System.out.println("Table exists");
    * }
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public boolean exists(String tableId) {
@@ -541,7 +564,10 @@ public boolean exists(String tableId) {
   }
 
   /**
-   * Asynchronously checks if the table specified by the table ID exists.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTableCallable()}.
+   *
+   * <p>Asynchronously checks if the table specified by the table ID exists.
    *
    * <p>Sample code:
    *
@@ -566,9 +592,6 @@ public boolean exists(String tableId) {
    *  MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Boolean> existsAsync(String tableId) {
@@ -600,7 +623,10 @@ public Boolean apply(NotFoundException ignored) {
   }
 
   /**
-   * Gets the table metadata by table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTable(com.google.bigtable.admin.v2.GetTableRequest)}.
+   *
+   * <p>Gets the table metadata by table ID.
    *
    * <p>Sample code:
    *
@@ -614,9 +640,6 @@ public Boolean apply(NotFoundException ignored) {
    *   System.out.println(cf.getId());
    * }
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Table getTable(String tableId) {
@@ -624,7 +647,10 @@ public Table getTable(String tableId) {
   }
 
   /**
-   * Asynchronously gets the table metadata by table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTableCallable()}.
+   *
+   * <p>Asynchronously gets the table metadata by table ID.
    *
    * <p>Sample code:
    *
@@ -649,9 +675,6 @@ public Table getTable(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -668,13 +691,13 @@ private ApiFuture<Table> getTableAsync(
   }
 
   /**
-   * Gets the current encryption info for the table across all of the clusters.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTable(com.google.bigtable.admin.v2.GetTableRequest)}.
+   *
+   * <p>Gets the current encryption info for the table across all of the clusters.
    *
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
@@ -682,13 +705,13 @@ public Map<String, List<EncryptionInfo>> getEncryptionInfo(String tableId) {
   }
 
   /**
-   * Asynchronously gets the current encryption info for the table across all of the clusters.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getTableCallable()}.
+   *
+   * <p>Asynchronously gets the current encryption info for the table across all of the clusters.
    *
    * <p>The returned Map will be keyed by cluster id and contain a status for all of the keys in
    * use.
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Map<String, List<EncryptionInfo>>> getEncryptionInfoAsync(String tableId) {
@@ -722,7 +745,10 @@ public Map<String, List<EncryptionInfo>> apply(com.google.bigtable.admin.v2.Tabl
   }
 
   /**
-   * Lists all table IDs in the instance.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listTables(com.google.bigtable.admin.v2.ListTablesRequest)}.
+   *
+   * <p>Lists all table IDs in the instance.
    *
    * <p>Sample code:
    *
@@ -733,9 +759,6 @@ public Map<String, List<EncryptionInfo>> apply(com.google.bigtable.admin.v2.Tabl
    *   System.out.println(tableId);
    * }
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listTables() {
@@ -743,7 +766,10 @@ public List<String> listTables() {
   }
 
   /**
-   * Asynchronously lists all table IDs in the instance.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listTablesPagedCallable()}.
+   *
+   * <p>Asynchronously lists all table IDs in the instance.
    *
    * <p>Sample code:
    *
@@ -767,9 +793,6 @@ public List<String> listTables() {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listTablesAsync() {
@@ -835,7 +858,10 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Table> protos) {
   }
 
   /**
-   * Drops rows by the specified row key prefix and table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRange(com.google.bigtable.admin.v2.DropRowRangeRequest)}.
+   *
+   * <p>Drops rows by the specified row key prefix and table ID.
    *
    * <p>Please note that this method is considered part of the admin API and is rate limited.
    *
@@ -844,9 +870,6 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Table> protos) {
    * <pre>{@code
    * client.dropRowRange("my-table", "prefix");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropRowRange(String tableId, String rowKeyPrefix) {
@@ -854,7 +877,10 @@ public void dropRowRange(String tableId, String rowKeyPrefix) {
   }
 
   /**
-   * Asynchronously drops rows by the specified row key prefix and table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRangeCallable()}.
+   *
+   * <p>Asynchronously drops rows by the specified row key prefix and table ID.
    *
    * <p>Please note that this method is considered part of the admin API and is rate limited.
    *
@@ -877,9 +903,6 @@ public void dropRowRange(String tableId, String rowKeyPrefix) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -888,7 +911,10 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, String rowKeyPrefix) {
   }
 
   /**
-   * Drops rows by the specified row key prefix and table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRange(com.google.bigtable.admin.v2.DropRowRangeRequest)}.
+   *
+   * <p>Drops rows by the specified row key prefix and table ID.
    *
    * <p>Please note that this method is considered part of the admin API and is rate limited.
    *
@@ -897,9 +923,6 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, String rowKeyPrefix) {
    * <pre>{@code
    * client.dropRowRange("my-table", ByteString.copyFromUtf8("prefix"));
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -908,7 +931,10 @@ public void dropRowRange(String tableId, ByteString rowKeyPrefix) {
   }
 
   /**
-   * Asynchronously drops rows by the specified row key prefix and table ID.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRangeCallable()}.
+   *
+   * <p>Asynchronously drops rows by the specified row key prefix and table ID.
    *
    * <p>Please note that this method is considered part of the admin API and is rate limited.
    *
@@ -931,9 +957,6 @@ public void dropRowRange(String tableId, ByteString rowKeyPrefix) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -948,16 +971,16 @@ public ApiFuture<Void> dropRowRangeAsync(String tableId, ByteString rowKeyPrefix
   }
 
   /**
-   * Drops all data in the table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRange(com.google.bigtable.admin.v2.DropRowRangeRequest)}.
+   *
+   * <p>Drops all data in the table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * client.dropAllRows("my-table");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void dropAllRows(String tableId) {
@@ -965,7 +988,10 @@ public void dropAllRows(String tableId) {
   }
 
   /**
-   * Asynchronously drops all data in the table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#dropRowRangeCallable()}.
+   *
+   * <p>Asynchronously drops all data in the table.
    *
    * <p>Sample code:
    *
@@ -986,9 +1012,6 @@ public void dropAllRows(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -1003,7 +1026,10 @@ public ApiFuture<Void> dropAllRowsAsync(String tableId) {
   }
 
   /**
-   * Blocks the current thread until replication has caught up to the point when this method was
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#checkConsistency(com.google.bigtable.admin.v2.CheckConsistencyRequest)}.
+   *
+   * <p>Blocks the current thread until replication has caught up to the point when this method was
    * called. This allows callers to make sure that their mutations have been replicated across all
    * of their clusters.
    *
@@ -1014,8 +1040,6 @@ public ApiFuture<Void> dropAllRowsAsync(String tableId) {
    * }</pre>
    *
    * @throws com.google.api.gax.retrying.PollException when polling exceeds the total timeout
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void awaitReplication(String tableId) {
@@ -1033,7 +1057,10 @@ public void awaitConsistency(ConsistencyRequest consistencyRequest) {
   }
 
   /**
-   * Creates a backup with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createBackup(com.google.bigtable.admin.v2.CreateBackupRequest)}.
+   *
+   * <p>Creates a backup with the specified configuration.
    *
    * <p>Sample code
    *
@@ -1044,9 +1071,6 @@ public void awaitConsistency(ConsistencyRequest consistencyRequest) {
    *             .setExpireTime(expireTime);
    * Backup response = client.createBackup(request);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup createBackup(CreateBackupRequest request) {
@@ -1054,7 +1078,10 @@ public Backup createBackup(CreateBackupRequest request) {
   }
 
   /**
-   * Creates a backup with the specified configuration asynchronously.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createBackupOperationCallable()}.
+   *
+   * <p>Creates a backup with the specified configuration asynchronously.
    *
    * <p>Sample code
    *
@@ -1079,9 +1106,6 @@ public Backup createBackup(CreateBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> createBackupAsync(CreateBackupRequest request) {
@@ -1097,16 +1121,16 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
   }
 
   /**
-   * Gets a backup with the specified backup ID in the specified cluster.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getBackup(com.google.bigtable.admin.v2.GetBackupRequest)}.
+   *
+   * <p>Gets a backup with the specified backup ID in the specified cluster.
    *
    * <p>Sample code
    *
    * <pre>{@code
    * Backup backup = client.getBackup(clusterId, backupId);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup getBackup(String clusterId, String backupId) {
@@ -1114,7 +1138,10 @@ public Backup getBackup(String clusterId, String backupId) {
   }
 
   /**
-   * Gets a backup with the specified backup ID in the specified cluster asynchronously.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getBackupCallable()}.
+   *
+   * <p>Gets a backup with the specified backup ID in the specified cluster asynchronously.
    *
    * <p>Sample code
    *
@@ -1135,9 +1162,6 @@ public Backup getBackup(String clusterId, String backupId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> getBackupAsync(String clusterId, String backupId) {
@@ -1157,16 +1181,16 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backup) {
   }
 
   /**
-   * Lists backups in the specified cluster.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listBackups(com.google.bigtable.admin.v2.ListBackupsRequest)}.
+   *
+   * <p>Lists backups in the specified cluster.
    *
    * <p>Sample code
    *
    * <pre>{@code
    * List<String> backups = client.listBackups(clusterId);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listBackups(String clusterId) {
@@ -1174,7 +1198,10 @@ public List<String> listBackups(String clusterId) {
   }
 
   /**
-   * Lists backups in the specified cluster asynchronously.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listBackupsPagedCallable()}.
+   *
+   * <p>Lists backups in the specified cluster asynchronously.
    *
    * <p>Sample code:
    *
@@ -1198,9 +1225,6 @@ public List<String> listBackups(String clusterId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listBackupsAsync(String clusterId) {
@@ -1266,16 +1290,16 @@ public List<String> apply(List<com.google.bigtable.admin.v2.Backup> protos) {
   }
 
   /**
-   * Deletes a backup with the specified backup ID in the specified cluster.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteBackup(com.google.bigtable.admin.v2.DeleteBackupRequest)}.
+   *
+   * <p>Deletes a backup with the specified backup ID in the specified cluster.
    *
    * <p>Sample code
    *
    * <pre>{@code
    * client.deleteBackup(clusterId, backupId);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteBackup(String clusterId, String backupId) {
@@ -1283,7 +1307,10 @@ public void deleteBackup(String clusterId, String backupId) {
   }
 
   /**
-   * Deletes a backup with the specified backup ID in the specified cluster asynchronously.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteBackupCallable()}.
+   *
+   * <p>Deletes a backup with the specified backup ID in the specified cluster asynchronously.
    *
    * <p>Sample code
    *
@@ -1304,9 +1331,6 @@ public void deleteBackup(String clusterId, String backupId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
@@ -1319,16 +1343,16 @@ public ApiFuture<Void> deleteBackupAsync(String clusterId, String backupId) {
   }
 
   /**
-   * Updates a backup with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateBackup(com.google.bigtable.admin.v2.UpdateBackupRequest)}.
+   *
+   * <p>Updates a backup with the specified configuration.
    *
    * <p>Sample code
    *
    * <pre>{@code
    * Backup backup = client.updateBackup(clusterId, backupId);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup updateBackup(UpdateBackupRequest request) {
@@ -1336,7 +1360,10 @@ public Backup updateBackup(UpdateBackupRequest request) {
   }
 
   /**
-   * Updates a backup with the specified configuration asynchronously.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateBackupCallable()}.
+   *
+   * <p>Updates a backup with the specified configuration asynchronously.
    *
    * <p>Sample code
    *
@@ -1357,9 +1384,6 @@ public Backup updateBackup(UpdateBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> updateBackupAsync(UpdateBackupRequest request) {
@@ -1375,7 +1399,10 @@ public Backup apply(com.google.bigtable.admin.v2.Backup proto) {
   }
 
   /**
-   * Restores a backup to a new table with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#restoreTable(com.google.bigtable.admin.v2.RestoreTableRequest)}.
+   *
+   * <p>Restores a backup to a new table with the specified configuration.
    *
    * <p>Sample code
    *
@@ -1383,9 +1410,6 @@ public Backup apply(com.google.bigtable.admin.v2.Backup proto) {
    * RestoredTableResult result =
    *     client.restoreTable(RestoreTableRequest.of(clusterId, backupId).setTableId(tableId));
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public RestoredTableResult restoreTable(RestoreTableRequest request)
@@ -1393,7 +1417,12 @@ public RestoredTableResult restoreTable(RestoreTableRequest request)
     return ApiExceptions.callAndTranslateApiException(restoreTableAsync(request));
   }
 
-  /** Restores a backup to a new table with the specified configuration asynchronously.
+  /**
+   * <p>This method is obsolete. For the recommended proto-based approach, please see
+   * {@link com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#restoreTableAsync(com.google.bigtable.admin.v2.RestoreTableRequest)}.
+   *
+   * <p>Restores a backup to a new table with the specified configuration asynchronously.
+   *
    * <p>Sample code
    *
    * <pre>{@code
@@ -1414,9 +1443,6 @@ public RestoredTableResult restoreTable(RestoreTableRequest request)
    *   MoreExecutors.directExecutor()
    * );
    * </pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<RestoredTableResult> restoreTableAsync(RestoreTableRequest request) {
@@ -1521,7 +1547,10 @@ public ApiFuture<Void> awaitOptimizeRestoredTableAsync(
   }
 
   /**
-   * Copy an existing backup to a new backup in a Cloud Bigtable cluster with the specified
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#copyBackup(com.google.bigtable.admin.v2.CopyBackupRequest)}.
+   *
+   * <p>Copy an existing backup to a new backup in a Cloud Bigtable cluster with the specified
    * configuration.
    *
    * <p>Sample code Note: You want to create the client with project and instance where you want the
@@ -1557,9 +1586,6 @@ public ApiFuture<Void> awaitOptimizeRestoredTableAsync(
    *             .setExpireTime(expireTime);
    * Backup response = client.copyBackup(request);
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public Backup copyBackup(CopyBackupRequest request) {
@@ -1567,7 +1593,10 @@ public Backup copyBackup(CopyBackupRequest request) {
   }
 
   /**
-   * Creates a copy of a backup from an existing backup in a Cloud Bigtable cluster with the
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#copyBackupOperationCallable()}.
+   *
+   * <p>Creates a copy of a backup from an existing backup in a Cloud Bigtable cluster with the
    * specified configuration asynchronously.
    *
    * <p>Sample code
@@ -1593,9 +1622,6 @@ public Backup copyBackup(CopyBackupRequest request) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Backup> copyBackupAsync(CopyBackupRequest request) {
@@ -1611,9 +1637,12 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
   }
 
   /**
-   * Returns a future that is resolved when replication has caught up to the point when this method
-   * was called. This allows callers to make sure that their mutations have been replicated across
-   * all of their clusters.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#generateConsistencyTokenCallable()}.
+   *
+   * <p>Returns a future that is resolved when replication has caught up to the point when this
+   * method was called. This allows callers to make sure that their mutations have been replicated
+   * across all of their clusters.
    *
    * <p>Sample code:
    *
@@ -1635,9 +1664,6 @@ public Backup apply(com.google.bigtable.admin.v2.Backup backupProto) {
    * );
    *
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -1673,7 +1699,10 @@ public ApiFuture<Void> waitForConsistencyAsync(String tableId, String consistenc
   }
 
   /**
-   * Creates a new authorized view with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createAuthorizedView(com.google.bigtable.admin.v2.CreateAuthorizedViewRequest)}.
+   *
+   * <p>Creates a new authorized view with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -1691,8 +1720,6 @@ public ApiFuture<Void> waitForConsistencyAsync(String tableId, String consistenc
    * }</pre>
    *
    * @see CreateAuthorizedViewRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request) {
@@ -1700,7 +1727,10 @@ public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request)
   }
 
   /**
-   * Asynchronously creates a new authorized view with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createAuthorizedViewOperationCallable()}.
+   *
+   * <p>Asynchronously creates a new authorized view with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -1732,8 +1762,6 @@ public AuthorizedView createAuthorizedView(CreateAuthorizedViewRequest request)
    * }</pre>
    *
    * @see CreateAuthorizedViewRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> createAuthorizedViewAsync(CreateAuthorizedViewRequest request) {
@@ -1751,7 +1779,10 @@ public AuthorizedView apply(
   }
 
   /**
-   * Updates an existing authorized view with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateAuthorizedView(com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest)}.
+   *
+   * <p>Updates an existing authorized view with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -1765,8 +1796,6 @@ public AuthorizedView apply(
    * }</pre>
    *
    * @see UpdateAuthorizedViewRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request) {
@@ -1774,7 +1803,10 @@ public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request)
   }
 
   /**
-   * Asynchronously updates an existing authorized view with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateAuthorizedViewOperationCallable()}.
+   *
+   * <p>Asynchronously updates an existing authorized view with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -1802,8 +1834,6 @@ public AuthorizedView updateAuthorizedView(UpdateAuthorizedViewRequest request)
    * }</pre>
    *
    * @see UpdateAuthorizedViewRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> updateAuthorizedViewAsync(UpdateAuthorizedViewRequest request) {
@@ -1821,16 +1851,16 @@ public AuthorizedView apply(
   }
 
   /**
-   * Gets an authorized view with the specified authorized view ID in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getAuthorizedView(com.google.bigtable.admin.v2.GetAuthorizedViewRequest)}.
+   *
+   * <p>Gets an authorized view with the specified authorized view ID in the specified table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * AuthorizedView authorizedView = client.getAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId) {
@@ -1839,8 +1869,11 @@ public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId)
   }
 
   /**
-   * Asynchronously gets an authorized view with the specified authorized view ID in the specified
-   * table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getAuthorizedViewCallable()}.
+   *
+   * <p>Asynchronously gets an authorized view with the specified authorized view ID in the
+   * specified table.
    *
    * <p>Sample code:
    *
@@ -1861,9 +1894,6 @@ public AuthorizedView getAuthorizedView(String tableId, String authorizedViewId)
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<AuthorizedView> getAuthorizedViewAsync(String tableId, String authorizedViewId) {
@@ -1885,16 +1915,16 @@ public AuthorizedView apply(
   }
 
   /**
-   * Lists all authorized view IDs in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listAuthorizedViews(com.google.bigtable.admin.v2.ListAuthorizedViewsRequest)}.
+   *
+   * <p>Lists all authorized view IDs in the specified table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * List<String> authorizedViews = client.listAuthorizedViews("my-table");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listAuthorizedViews(String tableId) {
@@ -1902,7 +1932,10 @@ public List<String> listAuthorizedViews(String tableId) {
   }
 
   /**
-   * Asynchronously lists all authorized view IDs in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listAuthorizedViewsPagedCallable()}.
+   *
+   * <p>Asynchronously lists all authorized view IDs in the specified table.
    *
    * <p>Sample code:
    *
@@ -1926,9 +1959,6 @@ public List<String> listAuthorizedViews(String tableId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listAuthorizedViewsAsync(String tableId) {
@@ -1996,18 +2026,18 @@ public List<String> apply(List<com.google.bigtable.admin.v2.AuthorizedView> prot
   }
 
   /**
-   * Deletes an authorized view with the specified authorized view ID in the specified table. Note
-   * that the deletion is prohibited if the authorized view has deletion_protection field set to
-   * true.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteAuthorizedView(com.google.bigtable.admin.v2.DeleteAuthorizedViewRequest)}.
+   *
+   * <p>Deletes an authorized view with the specified authorized view ID in the specified table.
+   * Note that the deletion is prohibited if the authorized view has deletion_protection field set
+   * to true.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * client.deleteAuthorizedView("my-table", "my-authorized-view");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteAuthorizedView(String tableId, String authorizedViewId) {
@@ -2016,7 +2046,10 @@ public void deleteAuthorizedView(String tableId, String authorizedViewId) {
   }
 
   /**
-   * Asynchronously deletes an authorized view with the specified authorized view ID in the
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteAuthorizedViewCallable()}.
+   *
+   * <p>Asynchronously deletes an authorized view with the specified authorized view ID in the
    * specified table. Note that the deletion is prohibited if the authorized view has
    * deletion_protection field set to true.
    *
@@ -2039,9 +2072,6 @@ public void deleteAuthorizedView(String tableId, String authorizedViewId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authorizedViewId) {
@@ -2055,7 +2085,10 @@ public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authoriz
   }
 
   /**
-   * Creates a new schema bundle with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createSchemaBundle(com.google.bigtable.admin.v2.CreateSchemaBundleRequest)}.
+   *
+   * <p>Creates a new schema bundle with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -2072,8 +2105,6 @@ public ApiFuture<Void> deleteAuthorizedViewAsync(String tableId, String authoriz
    * }</pre>
    *
    * @see CreateSchemaBundleRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
@@ -2081,7 +2112,10 @@ public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
   }
 
   /**
-   * Asynchronously creates a new schema bundle with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#createSchemaBundleOperationCallable()}.
+   *
+   * <p>Asynchronously creates a new schema bundle with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -2111,8 +2145,6 @@ public SchemaBundle createSchemaBundle(CreateSchemaBundleRequest request) {
    * }</pre>
    *
    * @see CreateSchemaBundleRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> createSchemaBundleAsync(CreateSchemaBundleRequest request) {
@@ -2129,7 +2161,10 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
   }
 
   /**
-   * Updates an existing schema bundle with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateSchemaBundle(com.google.bigtable.admin.v2.UpdateSchemaBundleRequest)}.
+   *
+   * <p>Updates an existing schema bundle with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -2142,8 +2177,6 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
    * }</pre>
    *
    * @see UpdateSchemaBundleRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
@@ -2151,7 +2184,10 @@ public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
   }
 
   /**
-   * Asynchronously updates an existing schema bundle with the specified configuration.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#updateSchemaBundleOperationCallable()}.
+   *
+   * <p>Asynchronously updates an existing schema bundle with the specified configuration.
    *
    * <p>Sample code:
    *
@@ -2177,8 +2213,6 @@ public SchemaBundle updateSchemaBundle(UpdateSchemaBundleRequest request) {
    * }</pre>
    *
    * @see UpdateSchemaBundleRequest for available options.
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> updateSchemaBundleAsync(UpdateSchemaBundleRequest request) {
@@ -2195,16 +2229,16 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
   }
 
   /**
-   * Gets an schema bundle with the specified schema bundle ID in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getSchemaBundle(com.google.bigtable.admin.v2.GetSchemaBundleRequest)}.
+   *
+   * <p>Gets an schema bundle with the specified schema bundle ID in the specified table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * SchemaBundle schemaBundle = client.getSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
@@ -2213,7 +2247,10 @@ public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
   }
 
   /**
-   * Asynchronously gets an schema bundle with the specified schema bundle ID in the specified
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getSchemaBundleCallable()}.
+   *
+   * <p>Asynchronously gets an schema bundle with the specified schema bundle ID in the specified
    * table.
    *
    * <p>Sample code:
@@ -2234,9 +2271,6 @@ public SchemaBundle getSchemaBundle(String tableId, String schemaBundleId) {
    *     },
    *     MoreExecutors.directExecutor());
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<SchemaBundle> getSchemaBundleAsync(String tableId, String schemaBundleId) {
@@ -2257,16 +2291,16 @@ public SchemaBundle apply(com.google.bigtable.admin.v2.SchemaBundle schemaBundle
   }
 
   /**
-   * Lists all schema bundle IDs in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listSchemaBundles(com.google.bigtable.admin.v2.ListSchemaBundlesRequest)}.
+   *
+   * <p>Lists all schema bundle IDs in the specified table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * List<String> schemaBundles = client.listSchemaBundles("my-table");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public List<String> listSchemaBundles(String tableId) {
@@ -2274,7 +2308,10 @@ public List<String> listSchemaBundles(String tableId) {
   }
 
   /**
-   * Asynchronously lists all schema bundle IDs in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#listSchemaBundlesPagedCallable()}.
+   *
+   * <p>Asynchronously lists all schema bundle IDs in the specified table.
    *
    * <p>Sample code:
    *
@@ -2297,9 +2334,6 @@ public List<String> listSchemaBundles(String tableId) {
    *     },
    *     MoreExecutors.directExecutor());
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<List<String>> listSchemaBundlesAsync(String tableId) {
@@ -2368,16 +2402,16 @@ public List<String> apply(List<com.google.bigtable.admin.v2.SchemaBundle> protos
   }
 
   /**
-   * Deletes an schema bundle with the specified schema bundle ID in the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteSchemaBundle(com.google.bigtable.admin.v2.DeleteSchemaBundleRequest)}.
+   *
+   * <p>Deletes an schema bundle with the specified schema bundle ID in the specified table.
    *
    * <p>Sample code:
    *
    * <pre>{@code
    * client.deleteSchemaBundle("my-table", "my-schema-bundle");
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public void deleteSchemaBundle(String tableId, String schemaBundleId) {
@@ -2385,7 +2419,10 @@ public void deleteSchemaBundle(String tableId, String schemaBundleId) {
   }
 
   /**
-   * Asynchronously deletes an schema bundle with the specified schema bundle ID in the specified
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#deleteSchemaBundleCallable()}.
+   *
+   * <p>Asynchronously deletes an schema bundle with the specified schema bundle ID in the specified
    * table.
    *
    * <p>Sample code:
@@ -2407,9 +2444,6 @@ public void deleteSchemaBundle(String tableId, String schemaBundleId) {
    *   MoreExecutors.directExecutor()
    * );
    * }</pre>
-   *
-   * <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based methods
-   * instead.
    */
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
   public ApiFuture<Void> deleteSchemaBundleAsync(String tableId, String schemaBundleId) {
@@ -2462,7 +2496,10 @@ public Void apply(Empty empty) {
   }
 
   /**
-   * Gets the IAM access control policy for the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicy(com.google.iam.v1.GetIamPolicyRequest)}.
+   *
+   * <p>Gets the IAM access control policy for the specified table.
    *
    * <p>Sample code:
    *
@@ -2476,8 +2513,6 @@ public Void apply(Empty empty) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2486,7 +2521,10 @@ public Policy getIamPolicy(String tableId) {
   }
 
   /**
-   * Asynchronously gets the IAM access control policy for the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicyCallable()}.
+   *
+   * <p>Asynchronously gets the IAM access control policy for the specified table.
    *
    * <p>Sample code:
    *
@@ -2511,8 +2549,6 @@ public Policy getIamPolicy(String tableId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2522,7 +2558,10 @@ public ApiFuture<Policy> getIamPolicyAsync(String tableId) {
   }
 
   /**
-   * Replaces the IAM policy associated with the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicy(com.google.iam.v1.SetIamPolicyRequest)}.
+   *
+   * <p>Replaces the IAM policy associated with the specified table.
    *
    * <p>Sample code:
    *
@@ -2537,8 +2576,6 @@ public ApiFuture<Policy> getIamPolicyAsync(String tableId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2547,7 +2584,10 @@ public Policy setIamPolicy(String tableId, Policy policy) {
   }
 
   /**
-   * Asynchronously replaces the IAM policy associated with the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicyCallable()}.
+   *
+   * <p>Asynchronously replaces the IAM policy associated with the specified table.
    *
    * <p>Sample code:
    *
@@ -2576,8 +2616,6 @@ public Policy setIamPolicy(String tableId, Policy policy) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2587,8 +2625,11 @@ public ApiFuture<Policy> setIamPolicyAsync(String tableId, Policy policy) {
   }
 
   /**
-   * Tests whether the caller has the given permissions for the specified table. Returns a subset of
-   * the specified permissions that the caller has.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissions(com.google.iam.v1.TestIamPermissionsRequest)}.
+   *
+   * <p>Tests whether the caller has the given permissions for the specified table. Returns a subset
+   * of the specified permissions that the caller has.
    *
    * <p>Sample code:
    *
@@ -2603,8 +2644,6 @@ public ApiFuture<Policy> setIamPolicyAsync(String tableId, Policy policy) {
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2613,7 +2652,10 @@ public List<String> testIamPermission(String tableId, String... permissions) {
   }
 
   /**
-   * Asynchronously tests whether the caller has the given permissions for the specified table.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissionsCallable()}.
+   *
+   * <p>Asynchronously tests whether the caller has the given permissions for the specified table.
    * Returns a subset of the specified permissions that the caller has.
    *
    * <p>Sample code:
@@ -2638,8 +2680,6 @@ public List<String> testIamPermission(String tableId, String... permissions) {
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2649,7 +2689,10 @@ public ApiFuture<List<String>> testIamPermissionAsync(String tableId, String...
   }
 
   /**
-   * Gets the IAM access control policy for the specified backup.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicy(com.google.iam.v1.GetIamPolicyRequest)}.
+   *
+   * <p>Gets the IAM access control policy for the specified backup.
    *
    * <p>Sample code:
    *
@@ -2663,8 +2706,6 @@ public ApiFuture<List<String>> testIamPermissionAsync(String tableId, String...
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2673,7 +2714,10 @@ public Policy getBackupIamPolicy(String clusterId, String backupId) {
   }
 
   /**
-   * Asynchronously gets the IAM access control policy for the specified backup.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicyCallable()}.
+   *
+   * <p>Asynchronously gets the IAM access control policy for the specified backup.
    *
    * <p>Sample code:
    *
@@ -2698,8 +2742,6 @@ public Policy getBackupIamPolicy(String clusterId, String backupId) {
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2709,7 +2751,10 @@ public ApiFuture<Policy> getBackupIamPolicyAsync(String clusterId, String backup
   }
 
   /**
-   * Replaces the IAM policy associated with the specified backup.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicy(com.google.iam.v1.SetIamPolicyRequest)}.
+   *
+   * <p>Replaces the IAM policy associated with the specified backup.
    *
    * <p>Sample code:
    *
@@ -2724,8 +2769,6 @@ public ApiFuture<Policy> getBackupIamPolicyAsync(String clusterId, String backup
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2735,7 +2778,10 @@ public Policy setBackupIamPolicy(String clusterId, String backupId, Policy polic
   }
 
   /**
-   * Asynchronously replaces the IAM policy associated with the specified backup.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicyCallable()}.
+   *
+   * <p>Asynchronously replaces the IAM policy associated with the specified backup.
    *
    * <p>Sample code:
    *
@@ -2764,8 +2810,6 @@ public Policy setBackupIamPolicy(String clusterId, String backupId, Policy polic
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2776,8 +2820,11 @@ public ApiFuture<Policy> setBackupIamPolicyAsync(
   }
 
   /**
-   * Tests whether the caller has the given permissions for the specified backup. Returns a subset
-   * of the specified permissions that the caller has.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissions(com.google.iam.v1.TestIamPermissionsRequest)}.
+   *
+   * <p>Tests whether the caller has the given permissions for the specified backup. Returns a
+   * subset of the specified permissions that the caller has.
    *
    * <p>Sample code:
    *
@@ -2794,8 +2841,6 @@ public ApiFuture<Policy> setBackupIamPolicyAsync(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2806,7 +2851,10 @@ public List<String> testBackupIamPermission(
   }
 
   /**
-   * Asynchronously tests whether the caller has the given permissions for the specified backup.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissionsCallable()}.
+   *
+   * <p>Asynchronously tests whether the caller has the given permissions for the specified backup.
    * Returns a subset of the specified permissions that the caller has.
    *
    * <p>Sample code:
@@ -2831,8 +2879,6 @@ public List<String> testBackupIamPermission(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2843,7 +2889,10 @@ public ApiFuture<List<String>> testBackupIamPermissionAsync(
   }
 
   /**
-   * Gets the IAM access control policy for the specified authorized view.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicy(com.google.iam.v1.GetIamPolicyRequest)}.
+   *
+   * <p>Gets the IAM access control policy for the specified authorized view.
    *
    * <p>Sample code:
    *
@@ -2857,8 +2906,6 @@ public ApiFuture<List<String>> testBackupIamPermissionAsync(
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2868,7 +2915,10 @@ public Policy getAuthorizedViewIamPolicy(String tableId, String authorizedViewId
   }
 
   /**
-   * Asynchronously gets the IAM access control policy for the specified authorized view.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#getIamPolicyCallable()}.
+   *
+   * <p>Asynchronously gets the IAM access control policy for the specified authorized view.
    *
    * <p>Sample code:
    *
@@ -2893,8 +2943,6 @@ public Policy getAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2906,7 +2954,10 @@ public ApiFuture<Policy> getAuthorizedViewIamPolicyAsync(
   }
 
   /**
-   * Replaces the IAM policy associated with the specified authorized view.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicy(com.google.iam.v1.SetIamPolicyRequest)}.
+   *
+   * <p>Replaces the IAM policy associated with the specified authorized view.
    *
    * <p>Sample code:
    *
@@ -2921,8 +2972,6 @@ public ApiFuture<Policy> getAuthorizedViewIamPolicyAsync(
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2932,7 +2981,10 @@ public Policy setAuthorizedViewIamPolicy(String tableId, String authorizedViewId
   }
 
   /**
-   * Asynchronously replaces the IAM policy associated with the specified authorized view.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#setIamPolicyCallable()}.
+   *
+   * <p>Asynchronously replaces the IAM policy associated with the specified authorized view.
    *
    * <p>Sample code:
    *
@@ -2961,8 +3013,6 @@ public Policy setAuthorizedViewIamPolicy(String tableId, String authorizedViewId
    * @see <a
    *     href="https://cloud.google.com/bigtable/docs/access-control#iam-management-table">Table-level
    *     IAM management</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings("WeakerAccess")
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -2974,8 +3024,11 @@ public ApiFuture<Policy> setAuthorizedViewIamPolicyAsync(
   }
 
   /**
-   * Tests whether the caller has the given permissions for the specified authorized view. Returns a
-   * subset of the specified permissions that the caller has.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissions(com.google.iam.v1.TestIamPermissionsRequest)}.
+   *
+   * <p>Tests whether the caller has the given permissions for the specified authorized view.
+   * Returns a subset of the specified permissions that the caller has.
    *
    * <p>Sample code:
    *
@@ -2992,8 +3045,6 @@ public ApiFuture<Policy> setAuthorizedViewIamPolicyAsync(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")
@@ -3004,14 +3055,17 @@ public List<String> testAuthorizedViewIamPermission(
   }
 
   /**
-   * Asynchronously tests whether the caller has the given permissions for the specified authorized
-   * view. Returns a subset of the specified permissions that the caller has.
+   * This method is obsolete. For the recommended proto-based approach, please see {@link
+   * com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminClient#testIamPermissionsCallable()}.
+   *
+   * <p>Asynchronously tests whether the caller has the given permissions for the specified
+   * authorized view. Returns a subset of the specified permissions that the caller has.
    *
    * <p>Sample code:
    *
    * <pre>{@code
-   * ApiFuture<List<String>> grantedPermissionsFuture = client.testAuthorizedViewIamPermissionAsync("my-table-id", "my-authorized-view-id",
-   *   "bigtable.authorizedViews.get", "bigtable.authorizedViews.delete");
+   * ApiFuture<List<String>> grantedPermissionsFuture = client.testAuthorizedViewIamPermissionAsync("my-table-id",
+   *   "my-authorized-view-id", "bigtable.authorizedViews.get", "bigtable.authorizedViews.delete");
    *
    * ApiFutures.addCallback(grantedPermissionsFuture,
    *   new ApiFutureCallback<List<String>>() {
@@ -3029,8 +3083,6 @@ public List<String> testAuthorizedViewIamPermission(
    *
    * @see <a href="https://cloud.google.com/bigtable/docs/access-control#permissions">Cloud Bigtable
    *     permissions</a>
-   *     <p>This method is obsolete. Use getNewApi() to access the auto-generated proto-based
-   *     methods instead.
    */
   @SuppressWarnings({"WeakerAccess"})
   @ObsoleteApi("Use getNewApi() to access the auto-generated proto-based methods instead.")

From 78ea90dbe36b5f6ee1a9c3f51efc9fe11069baaa Mon Sep 17 00:00:00 2001
From: Jin Seop Kim <jinseop@google.com>
Date: Fri, 27 Feb 2026 10:52:50 -0500
Subject: [PATCH 6/6] chore: PR comments

---
 .../cloud/bigtable/admin/v2/BigtableTableAdminClient.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index 08b5cd3c760c..0b7028c2ea6c 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -223,8 +223,8 @@ public String getInstanceId() {
   }
 
   /**
-   * Returns the underlying autogenerated GAPIC client. This provides access to the newest features
-   * and proto-based methods.
+   * Returns the modern autogenerated client. This provides access to the newest features and
+   * proto-based methods.
    */
   public BaseBigtableTableAdminClient getNewApi() {
     return newApi;
