private BucketsResource.UpdateRequest CreateUpdateBucketRequest(Bucket bucket, UpdateBucketOptions options)
        {
            ValidateBucket(bucket, nameof(bucket));
            var request = Service.Buckets.Update(bucket, bucket.Name);

            options?.ModifyRequest(request, bucket);
            return(request);
        }
 /// <inheritdoc />
 public override Bucket UpdateBucket(
     Bucket bucket,
     UpdateBucketOptions options = null)
 => CreateUpdateBucketRequest(bucket, options).Execute();
 /// <inheritdoc />
 public override Task <Bucket> UpdateBucketAsync(
     Bucket bucket,
     UpdateBucketOptions options         = null,
     CancellationToken cancellationToken = default)
 => CreateUpdateBucketRequest(bucket, options).ExecuteAsync(cancellationToken);
 /// <summary>
 /// Updates the metadata for a storage bucket synchronously.
 /// </summary>
 /// <remarks>
 /// <para>
 /// If no preconditions are explicitly set in <paramref name="options"/>, the metageneration of <paramref name="bucket"/>
 /// is used as a precondition for the update, unless <see cref="UpdateBucketOptions.ForceNoPreconditions"/> is
 /// set to <c>true</c>.
 /// </para>
 /// </remarks>
 /// <param name="bucket">Bucket to update. Must not be null, and must have a populated <c>Name</c>.</param>
 /// <param name="options">Additional options for the update. May be null, in which case appropriate
 /// defaults will be used.</param>
 /// <returns>The <see cref="Bucket"/> representation of the updated storage bucket.</returns>
 public virtual Bucket UpdateBucket(
     Bucket bucket,
     UpdateBucketOptions options = null)
 {
     throw new NotImplementedException();
 }