public static ChangelogEntry?ReadChangeLogEntry(PeekingStreamReader reader)
        {
            var version = string.Empty;
            var supportedGameVersions = Array.Empty <string>();
            var description           = string.Empty;

            var    builder = new StringBuilder();
            string?line;

            while ((line = reader.PeekLine()) != null)
            {
                switch (line)
                {
                case { } str when str.StartsWith("Version:"):
                    version = line.Replace("Version:", "").Trim();

                    reader.ReadLine();
                    continue;

                case { } str when str.StartsWith("Game Versions:"):
                    supportedGameVersions = line.Replace("Game Versions:", "").Trim().Split(',', StringSplitOptions.RemoveEmptyEntries);

                    reader.ReadLine();
                    continue;

                case { } str when str.StartsWith("-"):
                    description = builder.ToString().Trim('\r', '\n');

                    return(new ChangelogEntry(version, supportedGameVersions, description));

                default:
                    builder.AppendLine(line);
                    reader.ReadLine();
                    continue;
                }
            }

            return(null);
        }
        public static IEnumerable <ChangelogEntry> GetChangelogEntries(Stream stream)
        {
            var reader = new PeekingStreamReader(stream);

            string?line;

            while ((line = reader.PeekLine()) != null)
            {
                if (line.StartsWith("-"))
                {
                    reader.ReadLine();
                    var changelogEntry = ReadChangeLogEntry(reader);
                    if (changelogEntry != null)
                    {
                        yield return(changelogEntry);
                    }
                }
                else
                {
                    reader.ReadLine();
                }
            }
        }