/// <inheritdoc />
        public IMetadata CreateMetadata()
        {
            // Create streams.
            var tablesStream      = TablesStream.CreateStream();
            var stringsStream     = StringsStream.CreateStream();
            var userStringsStream = UserStringsStream.CreateStream();
            var guidStream        = GuidStream.CreateStream();
            var blobStream        = BlobStream.CreateStream();

            // Update index sizes.
            tablesStream.StringIndexSize = stringsStream.IndexSize;
            tablesStream.GuidIndexSize   = guidStream.IndexSize;
            tablesStream.BlobIndexSize   = blobStream.IndexSize;

            // Create metadata directory.
            return(new PE.DotNet.Metadata.Metadata
            {
                VersionString = _versionString,
                Streams =
                {
                    tablesStream,
                    stringsStream,
                    userStringsStream,
                    guidStream,
                    blobStream
                }
            });
        }
 /// <summary>
 /// Imports the contents of a user strings stream and indexes all present strings.
 /// </summary>
 /// <param name="stream">The stream to import.</param>
 public void ImportStream(UserStringsStream stream)
 {
     MetadataStreamBufferHelper.CloneBlobHeap(stream, _writer, (index, newIndex) =>
                                              _strings[stream.GetStringByIndex(index)] = newIndex);
 }