public Document <T> ReadDocument(DocumentId docId, bool skipMetadata)
        {
            ushort blockId = (ushort)metadata.GetBlockId(docId);
            var    path    = GetBlockPath(blockId);

            using var archive = new ZipArchive(FileSystem.File.OpenRead(path), ZipArchiveMode.Read);
            var entry = archive.GetEntry(docId.ToString() + dataSerializer.FileExtension);

            using var stream = entry.Open();
            var data = dataSerializer.Deserialize(stream);

            if (skipMetadata)
            {
                return(new Document <T>(new DocumentMetadata(docId, string.Empty), data));
            }
            else
            {
                var metadata = ReadMetadata(archive);
                return(new Document <T>(metadata[docId], data));
            }
        }