/// <summary>
        /// Adds an operation to be submitted as part of the batch.
        /// </summary>
        /// <param name="blob">The <see cref="CloudBlob"/> to be deleted.</param>
        /// <param name="deleteSnapshotsOption">A <see cref="DeleteSnapshotsOption"/> object indicating whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots.</param>
        /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param>
        /// <param name="blobRequestOptions">A <see cref="BlobRequestOptions"/> object that specifies additional options for the request.</param>
        public void AddSubOperation(CloudBlob blob, DeleteSnapshotsOption deleteSnapshotsOption = DeleteSnapshotsOption.None, AccessCondition accessCondition = default(AccessCondition), BlobRequestOptions blobRequestOptions = default(BlobRequestOptions))
        {
            CommonUtility.AssertInBounds("operationCount", this.Operations.Count, 0, Constants.MaxSubOperationPerBatch - 1);
            CommonUtility.AssertNotNull("blockBlob", blob);

            this.Operations.Add(blob.DeleteBlobImpl(blob.attributes, deleteSnapshotsOption, accessCondition, blobRequestOptions ?? BlobRequestOptions.BaseDefaultRequestOptions));
        }