private long AllocateSpace(int sizeBytes, bool zero)
        {
            long pos;

            if (!_freeSpace.TryAllocate(sizeBytes, out pos))
            {
                pos = Utilities.RoundUp(_file.Length, Sizes.OneMiB);
                _file.SetLength(pos + sizeBytes);
                _freeSpace.ExtendTo(pos + sizeBytes, false);
            }
            else if (zero)
            {
                _file.Position = pos;
                _file.Clear(sizeBytes);
            }

            return(pos);
        }