 ::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_Merge : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_Merge() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_Merge() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Merge(::grpc::ServerContext* context, const ::vrs::rpc::Empty* request, ::vrs::rpc::Result* response) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestMerge(::grpc::ServerContext* context, ::vrs::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::vrs::rpc::Result>* 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);
    }
  };
  typedef WithAsyncMethod_Search<WithAsyncMethod_ProcessVideo<WithAsyncMethod_Merge<Service > > > AsyncService;
  template <class BaseClass>
  class WithGenericMethod_Search : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_Search() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_Search() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Search(::grpc::ServerContext* context, const ::vrs::rpc::SearchRequest* request, ::grpc::ServerWriter< ::vrs::rpc::SearchResult>* writer) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ProcessVideo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_ProcessVideo() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_ProcessVideo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ProcessVideo(::grpc::ServerContext* context, const ::vrs::rpc::ProcessVideoRequest* request, ::vrs::rpc::Result* response) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_Merge : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_Merge() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_Merge() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Merge(::grpc::ServerContext* context, const ::vrs::rpc::Empty* request, ::vrs::rpc::Result* response) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ProcessVideo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_ProcessVideo() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler< ::vrs::rpc::ProcessVideoRequest, ::vrs::rpc::Result>(std::bind(&WithStreamedUnaryMethod_ProcessVideo<BaseClass>::StreamedProcessVideo, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_ProcessVideo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ProcessVideo(::grpc::ServerContext* context, const ::vrs::rpc::ProcessVideoRequest* request, ::vrs::rpc::Result* response) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedProcessVideo(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::vrs::rpc::ProcessVideoRequest,::vrs::rpc::Result>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Merge : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithStreamedUnaryMethod_Merge() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler< ::vrs::rpc::Empty, ::vrs::rpc::Result>(std::bind(&WithStreamedUnaryMethod_Merge<BaseClass>::StreamedMerge, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithStreamedUnaryMethod_Merge() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Merge(::grpc::ServerContext* context, const ::vrs::rpc::Empty* request, ::vrs::rpc::Result* response) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedMerge(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::vrs::rpc::Empty,::vrs::rpc::Result>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_ProcessVideo<WithStreamedUnaryMethod_Merge<Service > > StreamedUnaryService;
  template <class BaseClass>
  class WithSplitStreamingMethod_Search : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithSplitStreamingMethod_Search() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::SplitServerStreamingHandler< ::vrs::rpc::SearchRequest, ::vrs::rpc::SearchResult>(std::bind(&WithSplitStreamingMethod_Search<BaseClass>::StreamedSearch, this, std::placeholders::_1, std::placeholders::_2)));
    }
    ~WithSplitStreamingMethod_Search() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Search(::grpc::ServerContext* context, const ::vrs::rpc::SearchRequest* request, ::grpc::ServerWriter< ::vrs::rpc::SearchResult>* writer) final override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedSearch(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::vrs::rpc::SearchRequest,::vrs::rpc::SearchResult>* server_split_streamer) = 0;
  };
  typedef WithSplitStreamingMethod_Search<Service > SplitStreamedService;
  typedef