/// <inheritdoc />
        public override BigQueryDataset PatchDataset(DatasetReference datasetReference, Dataset resource, PatchDatasetOptions options = null)
        {
            GaxPreconditions.CheckNotNull(datasetReference, nameof(datasetReference));
            GaxPreconditions.CheckNotNull(resource, nameof(resource));
            var request = Service.Datasets.Patch(resource, datasetReference.ProjectId, datasetReference.DatasetId);

            request.ModifyRequest += _versionHeaderAction;
            options?.ModifyRequest(request);
            return(new BigQueryDataset(this, request.Execute()));
        }
        /// <inheritdoc />
        public override async Task <BigQueryDataset> PatchDatasetAsync(DatasetReference datasetReference, Dataset resource, PatchDatasetOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            GaxPreconditions.CheckNotNull(datasetReference, nameof(datasetReference));
            GaxPreconditions.CheckNotNull(resource, nameof(resource));
            var request = Service.Datasets.Patch(resource, datasetReference.ProjectId, datasetReference.DatasetId);

            request.ModifyRequest += _versionHeaderAction;
            options?.ModifyRequest(request);
            return(new BigQueryDataset(this, await request.ExecuteAsync(cancellationToken).ConfigureAwait(false)));
        }
        private PatchRequest CreatePatchDatasetRequest(DatasetReference datasetReference, Dataset resource, PatchDatasetOptions options)
        {
            GaxPreconditions.CheckNotNull(datasetReference, nameof(datasetReference));
            GaxPreconditions.CheckNotNull(resource, nameof(resource));
            var request = Service.Datasets.Patch(resource, datasetReference.ProjectId, datasetReference.DatasetId);

            options?.ModifyRequest(request);
            RetryIfETagPresent(request, resource);
            return(request);
        }