public void SetTagDataRaw(Stream stream, TagInstance tag, byte[] data)
{
if (tag == null)
throw new ArgumentNullException(nameof(tag));
// Ensure the data fits
if (tag.HeaderOffset < 0)
tag.HeaderOffset = GetNewTagOffset(tag.Index);
ResizeBlock(stream, tag, tag.HeaderOffset, tag.TotalSize, data.Length);
tag.TotalSize = data.Length;
// Write the data
stream.Position = tag.HeaderOffset;
stream.Write(data, 0, data.Length);
// Re-parse it
stream.Position = tag.HeaderOffset;
tag.ReadHeader(new BinaryReader(stream));
UpdateTagOffsets(new BinaryWriter(stream));
}