/// <summary>
        /// Constructs a client wrapper for the SnapshotService service, with the specified gRPC client and settings.
        /// </summary>
        /// <param name="grpcClient">The underlying gRPC client.</param>
        /// <param name="settings">The base <see cref="SnapshotServiceSettings"/> used within this client </param>
        public SnapshotServiceClientImpl(SnapshotService.SnapshotServiceClient grpcClient, SnapshotServiceSettings settings)
        {
            GrpcClient = grpcClient;
            SnapshotServiceSettings effectiveSettings = settings ?? SnapshotServiceSettings.GetDefault();
            gaxgrpc::ClientHelper   clientHelper      = new gaxgrpc::ClientHelper(effectiveSettings);

            TakeSnapshotOperationsClient = new lro::OperationsClientImpl(
                grpcClient.CreateOperationsClient(), effectiveSettings.TakeSnapshotOperationsSettings);
            _callListSnapshots = clientHelper.BuildApiCall <ListSnapshotsRequest, ListSnapshotsResponse>(
                GrpcClient.ListSnapshotsAsync, GrpcClient.ListSnapshots, effectiveSettings.ListSnapshotsSettings);
            _callGetSnapshot = clientHelper.BuildApiCall <GetSnapshotRequest, GetSnapshotResponse>(
                GrpcClient.GetSnapshotAsync, GrpcClient.GetSnapshot, effectiveSettings.GetSnapshotSettings);
            _callTakeSnapshot = clientHelper.BuildApiCall <TakeSnapshotRequest, lro::Operation>(
                GrpcClient.TakeSnapshotAsync, GrpcClient.TakeSnapshot, effectiveSettings.TakeSnapshotSettings);
            _callUploadSnapshot = clientHelper.BuildApiCall <UploadSnapshotRequest, UploadSnapshotResponse>(
                GrpcClient.UploadSnapshotAsync, GrpcClient.UploadSnapshot, effectiveSettings.UploadSnapshotSettings);
            _callConfirmUpload = clientHelper.BuildApiCall <ConfirmUploadRequest, ConfirmUploadResponse>(
                GrpcClient.ConfirmUploadAsync, GrpcClient.ConfirmUpload, effectiveSettings.ConfirmUploadSettings);
            Modify_ApiCall(ref _callListSnapshots);
            Modify_ListSnapshotsApiCall(ref _callListSnapshots);
            Modify_ApiCall(ref _callGetSnapshot);
            Modify_GetSnapshotApiCall(ref _callGetSnapshot);
            Modify_ApiCall(ref _callTakeSnapshot);
            Modify_TakeSnapshotApiCall(ref _callTakeSnapshot);
            Modify_ApiCall(ref _callUploadSnapshot);
            Modify_UploadSnapshotApiCall(ref _callUploadSnapshot);
            Modify_ApiCall(ref _callConfirmUpload);
            Modify_ConfirmUploadApiCall(ref _callConfirmUpload);
            OnConstruction(grpcClient, effectiveSettings, clientHelper);
        }
 partial void OnConstruction(SnapshotService.SnapshotServiceClient grpcClient, SnapshotServiceSettings effectiveSettings, gaxgrpc::ClientHelper clientHelper);
 /// <summary>
 /// Creates a <see cref="SnapshotServiceClient"/> which uses the specified channel for remote operations.
 /// </summary>
 /// <param name="channel">The <see cref="grpccore::Channel"/> for remote operations. Must not be null.</param>
 /// <param name="settings">Optional <see cref="SnapshotServiceSettings"/>.</param>
 /// <returns>The created <see cref="SnapshotServiceClient"/>.</returns>
 public static SnapshotServiceClient Create(grpccore::Channel channel, SnapshotServiceSettings settings = null)
 {
     gax::GaxPreconditions.CheckNotNull(channel, nameof(channel));
     SnapshotService.SnapshotServiceClient grpcClient = new SnapshotService.SnapshotServiceClient(channel);
     return(new SnapshotServiceClientImpl(grpcClient, settings));
 }