protected override void Parse(ref ByteStreamReader bsr)
        {
            SourceFileHeader = new SourceFileHeader(this);
            SourceFileHeader.ParseStream(ref bsr);
            SaveInfo.ParseContext.CurrentSymbolTable = bsr.ReadSymbolTable(SourceFileHeader.TokenCount, SourceFileHeader.TokenTableSize) !;
            GameHeader = bsr.ReadDataMap("GameHeader", SaveInfo);
            Globals    = bsr.ReadDataMap("GLOBAL", SaveInfo);
            StateFiles = new EmbeddedStateFile[bsr.ReadSInt()];

            for (int i = 0; i < StateFiles.Length; i++)
            {
                StateFiles[i] = EmbeddedStateFile.CreateFromName(this, bsr.ReadCharArray(260));
                int fileLength = bsr.ReadSInt();
                StateFiles[i].ParseStream(bsr.SplitAndSkip(fileLength));
            }

            SaveInfo.Cleanup();
            Debug.Assert(bsr.BytesRemaining == 0);
            SaveInfo.PrintDeterminedDatamaps();
        }