// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: google/bigtable/admin/v2/bigtable_table_admin.proto
// Original file comments:
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef GRPC_google_2fbigtable_2fadmin_2fv2_2fbigtable_5ftable_5fadmin_2eproto__INCLUDED
#define GRPC_google_2fbigtable_2fadmin_2fv2_2fbigtable_5ftable_5fadmin_2eproto__INCLUDED

#include "google/bigtable/admin/v2/bigtable_table_admin.pb.h"

#include <functional>
#include <grpcpp/impl/codegen/async_generic_service.h>
#include <grpcpp/impl/codegen/async_stream.h>
#include <grpcpp/impl/codegen/async_unary_call.h>
#include <grpcpp/impl/codegen/client_callback.h>
#include <grpcpp/impl/codegen/method_handler_impl.h>
#include <grpcpp/impl/codegen/proto_utils.h>
#include <grpcpp/impl/codegen/rpc_method.h>
#include <grpcpp/impl/codegen/server_callback.h>
#include <grpcpp/impl/codegen/service_type.h>
#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/impl/codegen/stub_options.h>
#include <grpcpp/impl/codegen/sync_stream.h>

namespace grpc {
class CompletionQueue;
class Channel;
class ServerCompletionQueue;
class ServerContext;
}  // namespace grpc

namespace google {
namespace bigtable {
namespace admin {
namespace v2 {

// Service for creating, configuring, and deleting Cloud Bigtable tables.
//
//
// Provides access to the table schemas only, not the data stored within
// the tables.
class BigtableTableAdmin final {
 public:
  static constexpr char const* service_full_name() {
    return "google.bigtable.admin.v2.BigtableTableAdmin";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // Creates a new table in the specified instance.
    // The table can be created with a full set of initial column families,
    // specified in the request.
    virtual ::grpc::Status CreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::google::bigtable::admin::v2::Table* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> AsyncCreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(AsyncCreateTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> PrepareAsyncCreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(PrepareAsyncCreateTableRaw(context, request, cq));
    }
    // 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.
    //
    // Creates a new table from the specified snapshot. The target table must
    // not exist. The snapshot and the table must be in the same instance.
    virtual ::grpc::Status CreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::google::longrunning::Operation* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>> AsyncCreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>>(AsyncCreateTableFromSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>> PrepareAsyncCreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>>(PrepareAsyncCreateTableFromSnapshotRaw(context, request, cq));
    }
    // Lists all tables served from a specified instance.
    virtual ::grpc::Status ListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::google::bigtable::admin::v2::ListTablesResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>> AsyncListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>>(AsyncListTablesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>> PrepareAsyncListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>>(PrepareAsyncListTablesRaw(context, request, cq));
    }
    // Gets metadata information about the specified table.
    virtual ::grpc::Status GetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::google::bigtable::admin::v2::Table* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> AsyncGetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(AsyncGetTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> PrepareAsyncGetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(PrepareAsyncGetTableRaw(context, request, cq));
    }
    // Permanently deletes a specified table and all of its data.
    virtual ::grpc::Status DeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::google::protobuf::Empty* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> AsyncDeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(AsyncDeleteTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> PrepareAsyncDeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(PrepareAsyncDeleteTableRaw(context, request, cq));
    }
    // Performs a series of column family modifications on the specified table.
    // Either all or none of the modifications will occur before this method
    // returns, but data requests received prior to that point may see a table
    // where only some modifications have taken effect.
    virtual ::grpc::Status ModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::google::bigtable::admin::v2::Table* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> AsyncModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(AsyncModifyColumnFamiliesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>> PrepareAsyncModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>>(PrepareAsyncModifyColumnFamiliesRaw(context, request, cq));
    }
    // Permanently drop/delete a row range from a specified table. The request can
    // specify whether to delete all rows in a table, or only those that match a
    // particular prefix.
    virtual ::grpc::Status DropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::google::protobuf::Empty* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> AsyncDropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(AsyncDropRowRangeRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> PrepareAsyncDropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(PrepareAsyncDropRowRangeRaw(context, request, cq));
    }
    // This is a private alpha release of Cloud Bigtable replication. 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.
    //
    // Generates a consistency token for a Table, which can be used in
    // CheckConsistency to check whether mutations to the table that finished
    // before this call started have been replicated. The tokens will be available
    // for 90 days.
    virtual ::grpc::Status GenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>> AsyncGenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>>(AsyncGenerateConsistencyTokenRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>> PrepareAsyncGenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>>(PrepareAsyncGenerateConsistencyTokenRaw(context, request, cq));
    }
    // This is a private alpha release of Cloud Bigtable replication. 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.
    //
    // Checks replication consistency based on a consistency token, that is, if
    // replication has caught up based on the conditions specified in the token
    // and the check request.
    virtual ::grpc::Status CheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>> AsyncCheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>>(AsyncCheckConsistencyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>> PrepareAsyncCheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>>(PrepareAsyncCheckConsistencyRaw(context, request, cq));
    }
    // 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.
    //
    // Creates a new snapshot in the specified cluster from the specified
    // source table. The cluster and the table must be in the same instance.
    virtual ::grpc::Status SnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::google::longrunning::Operation* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>> AsyncSnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>>(AsyncSnapshotTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>> PrepareAsyncSnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>>(PrepareAsyncSnapshotTableRaw(context, request, cq));
    }
    // 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.
    //
    // Gets metadata information about the specified snapshot.
    virtual ::grpc::Status GetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::google::bigtable::admin::v2::Snapshot* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>> AsyncGetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>>(AsyncGetSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>> PrepareAsyncGetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>>(PrepareAsyncGetSnapshotRaw(context, request, cq));
    }
    // 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.
    //
    // Lists all snapshots associated with the specified cluster.
    virtual ::grpc::Status ListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>> AsyncListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>>(AsyncListSnapshotsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>> PrepareAsyncListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>>(PrepareAsyncListSnapshotsRaw(context, request, cq));
    }
    // 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.
    //
    // Permanently deletes the specified snapshot.
    virtual ::grpc::Status DeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::google::protobuf::Empty* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> AsyncDeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(AsyncDeleteSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> PrepareAsyncDeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(PrepareAsyncDeleteSnapshotRaw(context, request, cq));
    }
    class experimental_async_interface {
     public:
      virtual ~experimental_async_interface() {}
      // Creates a new table in the specified instance.
      // The table can be created with a full set of initial column families,
      // specified in the request.
      virtual void CreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) = 0;
      // 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.
      //
      // Creates a new table from the specified snapshot. The target table must
      // not exist. The snapshot and the table must be in the same instance.
      virtual void CreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response, std::function<void(::grpc::Status)>) = 0;
      // Lists all tables served from a specified instance.
      virtual void ListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response, std::function<void(::grpc::Status)>) = 0;
      // Gets metadata information about the specified table.
      virtual void GetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) = 0;
      // Permanently deletes a specified table and all of its data.
      virtual void DeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) = 0;
      // Performs a series of column family modifications on the specified table.
      // Either all or none of the modifications will occur before this method
      // returns, but data requests received prior to that point may see a table
      // where only some modifications have taken effect.
      virtual void ModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) = 0;
      // Permanently drop/delete a row range from a specified table. The request can
      // specify whether to delete all rows in a table, or only those that match a
      // particular prefix.
      virtual void DropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) = 0;
      // This is a private alpha release of Cloud Bigtable replication. 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.
      //
      // Generates a consistency token for a Table, which can be used in
      // CheckConsistency to check whether mutations to the table that finished
      // before this call started have been replicated. The tokens will be available
      // for 90 days.
      virtual void GenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response, std::function<void(::grpc::Status)>) = 0;
      // This is a private alpha release of Cloud Bigtable replication. 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.
      //
      // Checks replication consistency based on a consistency token, that is, if
      // replication has caught up based on the conditions specified in the token
      // and the check request.
      virtual void CheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response, std::function<void(::grpc::Status)>) = 0;
      // 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.
      //
      // Creates a new snapshot in the specified cluster from the specified
      // source table. The cluster and the table must be in the same instance.
      virtual void SnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response, std::function<void(::grpc::Status)>) = 0;
      // 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.
      //
      // Gets metadata information about the specified snapshot.
      virtual void GetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response, std::function<void(::grpc::Status)>) = 0;
      // 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.
      //
      // Lists all snapshots associated with the specified cluster.
      virtual void ListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response, std::function<void(::grpc::Status)>) = 0;
      // 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.
      //
      // Permanently deletes the specified snapshot.
      virtual void DeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) = 0;
    };
    virtual class experimental_async_interface* experimental_async() { return nullptr; }
  private:
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* AsyncCreateTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* PrepareAsyncCreateTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>* AsyncCreateTableFromSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>* PrepareAsyncCreateTableFromSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>* AsyncListTablesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListTablesResponse>* PrepareAsyncListTablesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* AsyncGetTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* PrepareAsyncGetTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* AsyncDeleteTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* PrepareAsyncDeleteTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* AsyncModifyColumnFamiliesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Table>* PrepareAsyncModifyColumnFamiliesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* AsyncDropRowRangeRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* PrepareAsyncDropRowRangeRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* AsyncGenerateConsistencyTokenRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* PrepareAsyncGenerateConsistencyTokenRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>* AsyncCheckConsistencyRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::CheckConsistencyResponse>* PrepareAsyncCheckConsistencyRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>* AsyncSnapshotTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::longrunning::Operation>* PrepareAsyncSnapshotTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>* AsyncGetSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::Snapshot>* PrepareAsyncGetSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>* AsyncListSnapshotsRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::bigtable::admin::v2::ListSnapshotsResponse>* PrepareAsyncListSnapshotsRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* AsyncDeleteSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* PrepareAsyncDeleteSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) = 0;
  };
  class Stub final : public StubInterface {
   public:
    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
    ::grpc::Status CreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::google::bigtable::admin::v2::Table* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> AsyncCreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(AsyncCreateTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> PrepareAsyncCreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(PrepareAsyncCreateTableRaw(context, request, cq));
    }
    ::grpc::Status CreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::google::longrunning::Operation* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>> AsyncCreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>>(AsyncCreateTableFromSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>> PrepareAsyncCreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>>(PrepareAsyncCreateTableFromSnapshotRaw(context, request, cq));
    }
    ::grpc::Status ListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::google::bigtable::admin::v2::ListTablesResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>> AsyncListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>>(AsyncListTablesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>> PrepareAsyncListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>>(PrepareAsyncListTablesRaw(context, request, cq));
    }
    ::grpc::Status GetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::google::bigtable::admin::v2::Table* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> AsyncGetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(AsyncGetTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> PrepareAsyncGetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(PrepareAsyncGetTableRaw(context, request, cq));
    }
    ::grpc::Status DeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::google::protobuf::Empty* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> AsyncDeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(AsyncDeleteTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> PrepareAsyncDeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(PrepareAsyncDeleteTableRaw(context, request, cq));
    }
    ::grpc::Status ModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::google::bigtable::admin::v2::Table* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> AsyncModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(AsyncModifyColumnFamiliesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>> PrepareAsyncModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>>(PrepareAsyncModifyColumnFamiliesRaw(context, request, cq));
    }
    ::grpc::Status DropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::google::protobuf::Empty* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> AsyncDropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(AsyncDropRowRangeRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> PrepareAsyncDropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(PrepareAsyncDropRowRangeRaw(context, request, cq));
    }
    ::grpc::Status GenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>> AsyncGenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>>(AsyncGenerateConsistencyTokenRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>> PrepareAsyncGenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>>(PrepareAsyncGenerateConsistencyTokenRaw(context, request, cq));
    }
    ::grpc::Status CheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>> AsyncCheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>>(AsyncCheckConsistencyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>> PrepareAsyncCheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>>(PrepareAsyncCheckConsistencyRaw(context, request, cq));
    }
    ::grpc::Status SnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::google::longrunning::Operation* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>> AsyncSnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>>(AsyncSnapshotTableRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>> PrepareAsyncSnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>>(PrepareAsyncSnapshotTableRaw(context, request, cq));
    }
    ::grpc::Status GetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::google::bigtable::admin::v2::Snapshot* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>> AsyncGetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>>(AsyncGetSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>> PrepareAsyncGetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>>(PrepareAsyncGetSnapshotRaw(context, request, cq));
    }
    ::grpc::Status ListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>> AsyncListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>>(AsyncListSnapshotsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>> PrepareAsyncListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>>(PrepareAsyncListSnapshotsRaw(context, request, cq));
    }
    ::grpc::Status DeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::google::protobuf::Empty* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> AsyncDeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(AsyncDeleteSnapshotRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> PrepareAsyncDeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(PrepareAsyncDeleteSnapshotRaw(context, request, cq));
    }
    class experimental_async final :
      public StubInterface::experimental_async_interface {
     public:
      void CreateTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) override;
      void CreateTableFromSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response, std::function<void(::grpc::Status)>) override;
      void ListTables(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response, std::function<void(::grpc::Status)>) override;
      void GetTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) override;
      void DeleteTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) override;
      void ModifyColumnFamilies(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response, std::function<void(::grpc::Status)>) override;
      void DropRowRange(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) override;
      void GenerateConsistencyToken(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response, std::function<void(::grpc::Status)>) override;
      void CheckConsistency(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response, std::function<void(::grpc::Status)>) override;
      void SnapshotTable(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response, std::function<void(::grpc::Status)>) override;
      void GetSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response, std::function<void(::grpc::Status)>) override;
      void ListSnapshots(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response, std::function<void(::grpc::Status)>) override;
      void DeleteSnapshot(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) override;
     private:
      friend class Stub;
      explicit experimental_async(Stub* stub): stub_(stub) { }
      Stub* stub() { return stub_; }
      Stub* stub_;
    };
    class experimental_async_interface* experimental_async() override { return &async_stub_; }

   private:
    std::shared_ptr< ::grpc::ChannelInterface> channel_;
    class experimental_async async_stub_{this};
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* AsyncCreateTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* PrepareAsyncCreateTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>* AsyncCreateTableFromSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>* PrepareAsyncCreateTableFromSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>* AsyncListTablesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListTablesResponse>* PrepareAsyncListTablesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListTablesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* AsyncGetTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* PrepareAsyncGetTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* AsyncDeleteTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* PrepareAsyncDeleteTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* AsyncModifyColumnFamiliesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Table>* PrepareAsyncModifyColumnFamiliesRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* AsyncDropRowRangeRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* PrepareAsyncDropRowRangeRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* AsyncGenerateConsistencyTokenRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* PrepareAsyncGenerateConsistencyTokenRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>* AsyncCheckConsistencyRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::CheckConsistencyResponse>* PrepareAsyncCheckConsistencyRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>* AsyncSnapshotTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::longrunning::Operation>* PrepareAsyncSnapshotTableRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>* AsyncGetSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::Snapshot>* PrepareAsyncGetSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>* AsyncListSnapshotsRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::bigtable::admin::v2::ListSnapshotsResponse>* PrepareAsyncListSnapshotsRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* AsyncDeleteSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* PrepareAsyncDeleteSnapshotRaw(::grpc::ClientContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_CreateTable_;
    const ::grpc::internal::RpcMethod rpcmethod_CreateTableFromSnapshot_;
    const ::grpc::internal::RpcMethod rpcmethod_ListTables_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTable_;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteTable_;
    const ::grpc::internal::RpcMethod rpcmethod_ModifyColumnFamilies_;
    const ::grpc::internal::RpcMethod rpcmethod_DropRowRange_;
    const ::grpc::internal::RpcMethod rpcmethod_GenerateConsistencyToken_;
    const ::grpc::internal::RpcMethod rpcmethod_CheckConsistency_;
    const ::grpc::internal::RpcMethod rpcmethod_SnapshotTable_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSnapshot_;
    const ::grpc::internal::RpcMethod rpcmethod_ListSnapshots_;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteSnapshot_;
  };
  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());

  class Service : public ::grpc::Service {
   public:
    Service();
    virtual ~Service();
    // Creates a new table in the specified instance.
    // The table can be created with a full set of initial column families,
    // specified in the request.
    virtual ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response);
    // 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.
    //
    // Creates a new table from the specified snapshot. The target table must
    // not exist. The snapshot and the table must be in the same instance.
    virtual ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response);
    // Lists all tables served from a specified instance.
    virtual ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response);
    // Gets metadata information about the specified table.
    virtual ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response);
    // Permanently deletes a specified table and all of its data.
    virtual ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response);
    // Performs a series of column family modifications on the specified table.
    // Either all or none of the modifications will occur before this method
    // returns, but data requests received prior to that point may see a table
    // where only some modifications have taken effect.
    virtual ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response);
    // Permanently drop/delete a row range from a specified table. The request can
    // specify whether to delete all rows in a table, or only those that match a
    // particular prefix.
    virtual ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response);
    // This is a private alpha release of Cloud Bigtable replication. 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.
    //
    // Generates a consistency token for a Table, which can be used in
    // CheckConsistency to check whether mutations to the table that finished
    // before this call started have been replicated. The tokens will be available
    // for 90 days.
    virtual ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response);
    // This is a private alpha release of Cloud Bigtable replication. 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.
    //
    // Checks replication consistency based on a consistency token, that is, if
    // replication has caught up based on the conditions specified in the token
    // and the check request.
    virtual ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response);
    // 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.
    //
    // Creates a new snapshot in the specified cluster from the specified
    // source table. The cluster and the table must be in the same instance.
    virtual ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response);
    // 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.
    //
    // Gets metadata information about the specified snapshot.
    virtual ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response);
    // 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.
    //
    // Lists all snapshots associated with the specified cluster.
    virtual ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response);
    // 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.
    //
    // Permanently deletes the specified snapshot.
    virtual ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_CreateTable() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateTable(::grpc::ServerContext* context, ::google::bigtable::admin::v2::CreateTableRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::Table>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_CreateTableFromSnapshot() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateTableFromSnapshot(::grpc::ServerContext* context, ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::longrunning::Operation>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_ListTables() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListTables(::grpc::ServerContext* context, ::google::bigtable::admin::v2::ListTablesRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::ListTablesResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_GetTable() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTable(::grpc::ServerContext* context, ::google::bigtable::admin::v2::GetTableRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::Table>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_DeleteTable() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteTable(::grpc::ServerContext* context, ::google::bigtable::admin::v2::DeleteTableRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::protobuf::Empty>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_ModifyColumnFamilies() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestModifyColumnFamilies(::grpc::ServerContext* context, ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::Table>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_DropRowRange() {
      ::grpc::Service::MarkMethodAsync(6);
    }
    ~WithAsyncMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDropRowRange(::grpc::ServerContext* context, ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::protobuf::Empty>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_GenerateConsistencyToken() {
      ::grpc::Service::MarkMethodAsync(7);
    }
    ~WithAsyncMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGenerateConsistencyToken(::grpc::ServerContext* context, ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_CheckConsistency() {
      ::grpc::Service::MarkMethodAsync(8);
    }
    ~WithAsyncMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCheckConsistency(::grpc::ServerContext* context, ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::CheckConsistencyResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_SnapshotTable() {
      ::grpc::Service::MarkMethodAsync(9);
    }
    ~WithAsyncMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSnapshotTable(::grpc::ServerContext* context, ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::longrunning::Operation>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_GetSnapshot() {
      ::grpc::Service::MarkMethodAsync(10);
    }
    ~WithAsyncMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSnapshot(::grpc::ServerContext* context, ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::Snapshot>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(10, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_ListSnapshots() {
      ::grpc::Service::MarkMethodAsync(11);
    }
    ~WithAsyncMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSnapshots(::grpc::ServerContext* context, ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::bigtable::admin::v2::ListSnapshotsResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_DeleteSnapshot() {
      ::grpc::Service::MarkMethodAsync(12);
    }
    ~WithAsyncMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSnapshot(::grpc::ServerContext* context, ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::protobuf::Empty>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_CreateTable<WithAsyncMethod_CreateTableFromSnapshot<WithAsyncMethod_ListTables<WithAsyncMethod_GetTable<WithAsyncMethod_DeleteTable<WithAsyncMethod_ModifyColumnFamilies<WithAsyncMethod_DropRowRange<WithAsyncMethod_GenerateConsistencyToken<WithAsyncMethod_CheckConsistency<WithAsyncMethod_SnapshotTable<WithAsyncMethod_GetSnapshot<WithAsyncMethod_ListSnapshots<WithAsyncMethod_DeleteSnapshot<Service > > > > > > > > > > > > > AsyncService;
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_CreateTable() {
      ::grpc::Service::experimental().MarkMethodCallback(0,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::CreateTableRequest, ::google::bigtable::admin::v2::Table>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::CreateTableRequest* request,
                 ::google::bigtable::admin::v2::Table* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->CreateTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_CreateTableFromSnapshot() {
      ::grpc::Service::experimental().MarkMethodCallback(1,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest, ::google::longrunning::Operation>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request,
                 ::google::longrunning::Operation* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->CreateTableFromSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_ListTables() {
      ::grpc::Service::experimental().MarkMethodCallback(2,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::ListTablesRequest, ::google::bigtable::admin::v2::ListTablesResponse>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::ListTablesRequest* request,
                 ::google::bigtable::admin::v2::ListTablesResponse* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->ListTables(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_GetTable() {
      ::grpc::Service::experimental().MarkMethodCallback(3,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::GetTableRequest, ::google::bigtable::admin::v2::Table>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::GetTableRequest* request,
                 ::google::bigtable::admin::v2::Table* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->GetTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_DeleteTable() {
      ::grpc::Service::experimental().MarkMethodCallback(4,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::DeleteTableRequest, ::google::protobuf::Empty>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::DeleteTableRequest* request,
                 ::google::protobuf::Empty* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->DeleteTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_ModifyColumnFamilies() {
      ::grpc::Service::experimental().MarkMethodCallback(5,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest, ::google::bigtable::admin::v2::Table>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request,
                 ::google::bigtable::admin::v2::Table* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->ModifyColumnFamilies(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_DropRowRange() {
      ::grpc::Service::experimental().MarkMethodCallback(6,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::DropRowRangeRequest, ::google::protobuf::Empty>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::DropRowRangeRequest* request,
                 ::google::protobuf::Empty* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->DropRowRange(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_GenerateConsistencyToken() {
      ::grpc::Service::experimental().MarkMethodCallback(7,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request,
                 ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->GenerateConsistencyToken(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_CheckConsistency() {
      ::grpc::Service::experimental().MarkMethodCallback(8,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::CheckConsistencyRequest, ::google::bigtable::admin::v2::CheckConsistencyResponse>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::CheckConsistencyRequest* request,
                 ::google::bigtable::admin::v2::CheckConsistencyResponse* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->CheckConsistency(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_SnapshotTable() {
      ::grpc::Service::experimental().MarkMethodCallback(9,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::SnapshotTableRequest, ::google::longrunning::Operation>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::SnapshotTableRequest* request,
                 ::google::longrunning::Operation* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->SnapshotTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_GetSnapshot() {
      ::grpc::Service::experimental().MarkMethodCallback(10,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::GetSnapshotRequest, ::google::bigtable::admin::v2::Snapshot>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::GetSnapshotRequest* request,
                 ::google::bigtable::admin::v2::Snapshot* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->GetSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_ListSnapshots() {
      ::grpc::Service::experimental().MarkMethodCallback(11,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::ListSnapshotsRequest, ::google::bigtable::admin::v2::ListSnapshotsResponse>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::ListSnapshotsRequest* request,
                 ::google::bigtable::admin::v2::ListSnapshotsResponse* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->ListSnapshots(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_DeleteSnapshot() {
      ::grpc::Service::experimental().MarkMethodCallback(12,
        new ::grpc::internal::CallbackUnaryHandler< ::google::bigtable::admin::v2::DeleteSnapshotRequest, ::google::protobuf::Empty>(
          [this](::grpc::ServerContext* context,
                 const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request,
                 ::google::protobuf::Empty* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   return this->DeleteSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithCallbackMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  typedef ExperimentalWithCallbackMethod_CreateTable<ExperimentalWithCallbackMethod_CreateTableFromSnapshot<ExperimentalWithCallbackMethod_ListTables<ExperimentalWithCallbackMethod_GetTable<ExperimentalWithCallbackMethod_DeleteTable<ExperimentalWithCallbackMethod_ModifyColumnFamilies<ExperimentalWithCallbackMethod_DropRowRange<ExperimentalWithCallbackMethod_GenerateConsistencyToken<ExperimentalWithCallbackMethod_CheckConsistency<ExperimentalWithCallbackMethod_SnapshotTable<ExperimentalWithCallbackMethod_GetSnapshot<ExperimentalWithCallbackMethod_ListSnapshots<ExperimentalWithCallbackMethod_DeleteSnapshot<Service > > > > > > > > > > > > > ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_CreateTable() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_CreateTableFromSnapshot() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_ListTables() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_GetTable() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_DeleteTable() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_ModifyColumnFamilies() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_DropRowRange() {
      ::grpc::Service::MarkMethodGeneric(6);
    }
    ~WithGenericMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_GenerateConsistencyToken() {
      ::grpc::Service::MarkMethodGeneric(7);
    }
    ~WithGenericMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_CheckConsistency() {
      ::grpc::Service::MarkMethodGeneric(8);
    }
    ~WithGenericMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_SnapshotTable() {
      ::grpc::Service::MarkMethodGeneric(9);
    }
    ~WithGenericMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_GetSnapshot() {
      ::grpc::Service::MarkMethodGeneric(10);
    }
    ~WithGenericMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_ListSnapshots() {
      ::grpc::Service::MarkMethodGeneric(11);
    }
    ~WithGenericMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_DeleteSnapshot() {
      ::grpc::Service::MarkMethodGeneric(12);
    }
    ~WithGenericMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_CreateTable() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateTable(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_CreateTableFromSnapshot() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateTableFromSnapshot(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_ListTables() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListTables(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_GetTable() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTable(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_DeleteTable() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteTable(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_ModifyColumnFamilies() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestModifyColumnFamilies(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_DropRowRange() {
      ::grpc::Service::MarkMethodRaw(6);
    }
    ~WithRawMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDropRowRange(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_GenerateConsistencyToken() {
      ::grpc::Service::MarkMethodRaw(7);
    }
    ~WithRawMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGenerateConsistencyToken(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_CheckConsistency() {
      ::grpc::Service::MarkMethodRaw(8);
    }
    ~WithRawMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCheckConsistency(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_SnapshotTable() {
      ::grpc::Service::MarkMethodRaw(9);
    }
    ~WithRawMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSnapshotTable(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_GetSnapshot() {
      ::grpc::Service::MarkMethodRaw(10);
    }
    ~WithRawMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSnapshot(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(10, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_ListSnapshots() {
      ::grpc::Service::MarkMethodRaw(11);
    }
    ~WithRawMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSnapshots(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_DeleteSnapshot() {
      ::grpc::Service::MarkMethodRaw(12);
    }
    ~WithRawMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSnapshot(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_CreateTable() {
      ::grpc::Service::experimental().MarkMethodRawCallback(0,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->CreateTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CreateTable(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_CreateTableFromSnapshot() {
      ::grpc::Service::experimental().MarkMethodRawCallback(1,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->CreateTableFromSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CreateTableFromSnapshot(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_ListTables() {
      ::grpc::Service::experimental().MarkMethodRawCallback(2,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->ListTables(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ListTables(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_GetTable() {
      ::grpc::Service::experimental().MarkMethodRawCallback(3,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->GetTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GetTable(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_DeleteTable() {
      ::grpc::Service::experimental().MarkMethodRawCallback(4,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->DeleteTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DeleteTable(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_ModifyColumnFamilies() {
      ::grpc::Service::experimental().MarkMethodRawCallback(5,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->ModifyColumnFamilies(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ModifyColumnFamilies(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_DropRowRange() {
      ::grpc::Service::experimental().MarkMethodRawCallback(6,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->DropRowRange(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DropRowRange(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_GenerateConsistencyToken() {
      ::grpc::Service::experimental().MarkMethodRawCallback(7,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->GenerateConsistencyToken(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GenerateConsistencyToken(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_CheckConsistency() {
      ::grpc::Service::experimental().MarkMethodRawCallback(8,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->CheckConsistency(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void CheckConsistency(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_SnapshotTable() {
      ::grpc::Service::experimental().MarkMethodRawCallback(9,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->SnapshotTable(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void SnapshotTable(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_GetSnapshot() {
      ::grpc::Service::experimental().MarkMethodRawCallback(10,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->GetSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void GetSnapshot(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_ListSnapshots() {
      ::grpc::Service::experimental().MarkMethodRawCallback(11,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->ListSnapshots(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void ListSnapshots(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_DeleteSnapshot() {
      ::grpc::Service::experimental().MarkMethodRawCallback(12,
        new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this](::grpc::ServerContext* context,
                 const ::grpc::ByteBuffer* request,
                 ::grpc::ByteBuffer* response,
                 ::grpc::experimental::ServerCallbackRpcController* controller) {
                   this->DeleteSnapshot(context, request, response, controller);
                 }));
    }
    ~ExperimentalWithRawCallbackMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual void DeleteSnapshot(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CreateTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_CreateTable() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::CreateTableRequest, ::google::bigtable::admin::v2::Table>(std::bind(&WithStreamedUnaryMethod_CreateTable<BaseClass>::StreamedCreateTable, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_CreateTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CreateTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCreateTable(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::CreateTableRequest,::google::bigtable::admin::v2::Table>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CreateTableFromSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_CreateTableFromSnapshot() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest, ::google::longrunning::Operation>(std::bind(&WithStreamedUnaryMethod_CreateTableFromSnapshot<BaseClass>::StreamedCreateTableFromSnapshot, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_CreateTableFromSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CreateTableFromSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCreateTableFromSnapshot(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::CreateTableFromSnapshotRequest,::google::longrunning::Operation>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ListTables : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_ListTables() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::ListTablesRequest, ::google::bigtable::admin::v2::ListTablesResponse>(std::bind(&WithStreamedUnaryMethod_ListTables<BaseClass>::StreamedListTables, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_ListTables() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListTables(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListTablesRequest* request, ::google::bigtable::admin::v2::ListTablesResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedListTables(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::ListTablesRequest,::google::bigtable::admin::v2::ListTablesResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_GetTable() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::GetTableRequest, ::google::bigtable::admin::v2::Table>(std::bind(&WithStreamedUnaryMethod_GetTable<BaseClass>::StreamedGetTable, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_GetTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetTableRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetTable(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::GetTableRequest,::google::bigtable::admin::v2::Table>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_DeleteTable() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::DeleteTableRequest, ::google::protobuf::Empty>(std::bind(&WithStreamedUnaryMethod_DeleteTable<BaseClass>::StreamedDeleteTable, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_DeleteTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteTableRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteTable(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::DeleteTableRequest,::google::protobuf::Empty>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ModifyColumnFamilies : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_ModifyColumnFamilies() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest, ::google::bigtable::admin::v2::Table>(std::bind(&WithStreamedUnaryMethod_ModifyColumnFamilies<BaseClass>::StreamedModifyColumnFamilies, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_ModifyColumnFamilies() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ModifyColumnFamilies(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest* request, ::google::bigtable::admin::v2::Table* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedModifyColumnFamilies(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest,::google::bigtable::admin::v2::Table>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DropRowRange : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_DropRowRange() {
      ::grpc::Service::MarkMethodStreamed(6,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::DropRowRangeRequest, ::google::protobuf::Empty>(std::bind(&WithStreamedUnaryMethod_DropRowRange<BaseClass>::StreamedDropRowRange, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_DropRowRange() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DropRowRange(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DropRowRangeRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDropRowRange(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::DropRowRangeRequest,::google::protobuf::Empty>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GenerateConsistencyToken : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_GenerateConsistencyToken() {
      ::grpc::Service::MarkMethodStreamed(7,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>(std::bind(&WithStreamedUnaryMethod_GenerateConsistencyToken<BaseClass>::StreamedGenerateConsistencyToken, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_GenerateConsistencyToken() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GenerateConsistencyToken(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest* request, ::google::bigtable::admin::v2::GenerateConsistencyTokenResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGenerateConsistencyToken(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::GenerateConsistencyTokenRequest,::google::bigtable::admin::v2::GenerateConsistencyTokenResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CheckConsistency : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_CheckConsistency() {
      ::grpc::Service::MarkMethodStreamed(8,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::CheckConsistencyRequest, ::google::bigtable::admin::v2::CheckConsistencyResponse>(std::bind(&WithStreamedUnaryMethod_CheckConsistency<BaseClass>::StreamedCheckConsistency, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_CheckConsistency() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CheckConsistency(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::CheckConsistencyRequest* request, ::google::bigtable::admin::v2::CheckConsistencyResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCheckConsistency(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::CheckConsistencyRequest,::google::bigtable::admin::v2::CheckConsistencyResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SnapshotTable : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_SnapshotTable() {
      ::grpc::Service::MarkMethodStreamed(9,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::SnapshotTableRequest, ::google::longrunning::Operation>(std::bind(&WithStreamedUnaryMethod_SnapshotTable<BaseClass>::StreamedSnapshotTable, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_SnapshotTable() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SnapshotTable(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::SnapshotTableRequest* request, ::google::longrunning::Operation* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSnapshotTable(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::SnapshotTableRequest,::google::longrunning::Operation>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_GetSnapshot() {
      ::grpc::Service::MarkMethodStreamed(10,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::GetSnapshotRequest, ::google::bigtable::admin::v2::Snapshot>(std::bind(&WithStreamedUnaryMethod_GetSnapshot<BaseClass>::StreamedGetSnapshot, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_GetSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::GetSnapshotRequest* request, ::google::bigtable::admin::v2::Snapshot* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetSnapshot(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::GetSnapshotRequest,::google::bigtable::admin::v2::Snapshot>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ListSnapshots : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_ListSnapshots() {
      ::grpc::Service::MarkMethodStreamed(11,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::ListSnapshotsRequest, ::google::bigtable::admin::v2::ListSnapshotsResponse>(std::bind(&WithStreamedUnaryMethod_ListSnapshots<BaseClass>::StreamedListSnapshots, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_ListSnapshots() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListSnapshots(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::ListSnapshotsRequest* request, ::google::bigtable::admin::v2::ListSnapshotsResponse* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedListSnapshots(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::ListSnapshotsRequest,::google::bigtable::admin::v2::ListSnapshotsResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteSnapshot : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_DeleteSnapshot() {
      ::grpc::Service::MarkMethodStreamed(12,
        new ::grpc::internal::StreamedUnaryHandler< ::google::bigtable::admin::v2::DeleteSnapshotRequest, ::google::protobuf::Empty>(std::bind(&WithStreamedUnaryMethod_DeleteSnapshot<BaseClass>::StreamedDeleteSnapshot, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_DeleteSnapshot() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteSnapshot(::grpc::ServerContext* context, const ::google::bigtable::admin::v2::DeleteSnapshotRequest* request, ::google::protobuf::Empty* response) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteSnapshot(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::bigtable::admin::v2::DeleteSnapshotRequest,::google::protobuf::Empty>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_CreateTable<WithStreamedUnaryMethod_CreateTableFromSnapshot<WithStreamedUnaryMethod_ListTables<WithStreamedUnaryMethod_GetTable<WithStreamedUnaryMethod_DeleteTable<WithStreamedUnaryMethod_ModifyColumnFamilies<WithStreamedUnaryMethod_DropRowRange<WithStreamedUnaryMethod_GenerateConsistencyToken<WithStreamedUnaryMethod_CheckConsistency<WithStreamedUnaryMethod_SnapshotTable<WithStreamedUnaryMethod_GetSnapshot<WithStreamedUnaryMethod_ListSnapshots<WithStreamedUnaryMethod_DeleteSnapshot<Service > > > > > > > > > > > > > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_CreateTable<WithStreamedUnaryMethod_CreateTableFromSnapshot<WithStreamedUnaryMethod_ListTables<WithStreamedUnaryMethod_GetTable<WithStreamedUnaryMethod_DeleteTable<WithStreamedUnaryMethod_ModifyColumnFamilies<WithStreamedUnaryMethod_DropRowRange<WithStreamedUnaryMethod_GenerateConsistencyToken<WithStreamedUnaryMethod_CheckConsistency<WithStreamedUnaryMethod_SnapshotTable<WithStreamedUnaryMethod_GetSnapshot<WithStreamedUnaryMethod_ListSnapshots<WithStreamedUnaryMethod_DeleteSnapshot<Service > > > > > > > > > > > > > StreamedService;
};

}  // namespace v2
}  // namespace admin
}  // namespace bigtable
}  // namespace google


#endif  // GRPC_google_2fbigtable_2fadmin_2fv2_2fbigtable_5ftable_5fadmin_2eproto__INCLUDED
