/// <summary>
        /// Creates a large objects manifest.
        /// </summary>
        /// <param name="containerName">The name of the parent container.</param>
        /// <param name="manifestName">The name of the manifest.</param>
        /// <param name="metadata">The associated metadata for the manifest.</param>
        /// <param name="segments">The collection of segments that represent the large object.</param>
        /// <param name="segmentContainerName">The container that contains the object segments.</param>
        /// <returns>The StorageObject representation of the final manifest.</returns>
        internal async Task <StorageObject> CreateLargeObjectManifest(string containerName, string manifestName, IDictionary <string, string> metadata, ICollection <StorageObject> segments, string segmentContainerName)
        {
            try
            {
                var manifest = this.BuildStorageManifest(containerName, manifestName, metadata, segments, segmentContainerName);
                await this.CreateStorageManifest(manifest);

                return(await StorageClient.GetStorageObject(containerName, manifestName));
            }
            catch (InvalidOperationException ex)
            {
                throw new InvalidOperationException(string.Format("Could not create large object '{0}/{1}'. Could not create object manifest. See inner exception for details.", containerName, manifestName), ex);
            }
        }