/// <summary>
        /// Serializes the header's values, storing them into a StructureValueCollection.
        /// </summary>
        /// <returns>The resulting StructureValueCollection.</returns>
        public StructureValueCollection Serialize()
        {
            StructureValueCollection values = new StructureValueCollection();

            if (_originalRawTableOffset != 0)
                values.SetNumber("raw table offset", RawTableOffset);
            else
                values.SetNumber("meta offset", MetaOffset);

            values.SetNumber("virtual base address", VirtualBaseAddress);
            values.SetNumber("raw table offset from header", (uint)(RawTableOffset - HeaderSize));
            values.SetNumber("raw table size", RawTableSize);
            values.SetNumber("locale offset magic", LocaleOffsetMask);
            values.SetNumber("file size", FileSize);
            values.SetNumber("index header address", IndexHeaderLocation.AsAddress());
            values.SetNumber("virtual size", MetaSize);
            values.SetNumber("type", (uint)Type);
            values.SetNumber("string table count", (uint)StringIDCount);
            values.SetNumber("string table size", (uint)StringIDTableSize);
            values.SetNumber("string index table offset", _stringOffsetConverter.PointerToRaw(StringIDIndexTableLocation));
            values.SetNumber("string table offset", _stringOffsetConverter.PointerToRaw(StringIDDataLocation));
            values.SetString("internal name", InternalName);
            values.SetString("scenario name", ScenarioName);
            values.SetNumber("file table count", (uint)FileNameCount);
            values.SetNumber("file table offset", _stringOffsetConverter.PointerToRaw(FileNameDataLocation));
            values.SetNumber("file table size", (uint)FileNameTableSize);
            values.SetNumber("file index table offset", _stringOffsetConverter.PointerToRaw(FileNameIndexTableLocation));
            values.SetNumber("xdk version", (uint)XDKVersion);
            values.SetArray("partitions", SerializePartitions());
            values.SetNumber("locale data index offset", _indexConverter.PointerToRaw(LocaleDataLocation));
            values.SetNumber("locale data size", (uint)LocaleDataSize);
            return values;
        }