internal override List <BuilderExtent> FixExtents(out long totalLength)
        {
            totalLength = _capacity;

            List <BuilderExtent> extents = new List <BuilderExtent>();

            foreach (var extent in _partitionTable.GetMetadataDiskExtents())
            {
                _bootSectors.Position = extent.Start;
                byte[] buffer = Utilities.ReadFully(_bootSectors, (int)extent.Length);

                extents.Add(new BuilderBufferExtent(extent.Start, buffer));
            }

            extents.AddRange(_partitionContents.Values);
            return(extents);
        }