public BinaryReader BeginDeserialize(TagStructureInfo info)
{
if (_resource.DefinitionAddress.Value == 0 || _resource.DefinitionAddress.Type != ResourceAddressType.Definition)
throw new InvalidOperationException("Invalid resource definition address");
// Create a stream with a copy of the resource definition data
var stream = new MemoryStream(_resource.DefinitionData.Length);
stream.Write(_resource.DefinitionData, 0, _resource.DefinitionData.Length);
// Apply fixups
var writer = new BinaryWriter(stream);
foreach (var fixup in _resource.DefinitionFixups)
{
stream.Position = fixup.DefinitionDataOffset;
writer.Write(fixup.Address.Value);
}
stream.Position = _resource.DefinitionAddress.Offset;
return new BinaryReader(stream);
}