code: @BetaApi(
        "The surface for long-running operations is not stable yet and may change in the future.")
    public final OperationFuture<Snapshot, SnapshotTableMetadata> snapshotTableAsync(
        SnapshotTableRequest request) {
      return snapshotTableOperationCallable().futureCall(request);
    }
docs: Creates a new snapshot in the specified cluster from the specified source table. The cluster
  and the table must be in the same instance.
  
  <p>Note: This is a private alpha release of Cloud Bigtable snapshots. This feature is not
  currently available to most Cloud Bigtable customers. This feature might be changed in
  backward-incompatible ways and is not recommended for production use. It is not subject to any
  SLA or deprecation policy.
  
  <p>Sample code:
  
  <pre><code>
  try (BaseBigtableTableAdminClient baseBigtableTableAdminClient = BaseBigtableTableAdminClient.create()) {
  TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]");
  ClusterName cluster = ClusterName.of("[PROJECT]", "[INSTANCE]", "[CLUSTER]");
  SnapshotName snapshotId = SnapshotName.of("[PROJECT]", "[INSTANCE]", "[CLUSTER]", "[SNAPSHOT]");
  String description = "";
  SnapshotTableRequest request = SnapshotTableRequest.newBuilder()
  .setName(name.toString())
  .setCluster(cluster.toString())
  .setSnapshotId(snapshotId.toString())
  .setDescription(description)
  .build();
  Snapshot response = baseBigtableTableAdminClient.snapshotTableAsync(request).get();
  }
  </code></pre>
  
  @param request The request object containing all of the parameters for the API call.
  @throws com.google.api.gax.rpc.ApiException if the remote call fails