/// <summary>
        /// Loads and parses the provided data.
        /// </summary>
        /// <param name="data">Data.</param>
        public override void PostLoad(byte[] data)
        {
            if (this.Version == WarcraftVersion.Unknown)
            {
                throw new InvalidOperationException("The record data cannot be loaded before SetVersion has been called.");
            }

            using (MemoryStream ms = new MemoryStream(data))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    this.ID   = br.ReadUInt32();
                    this.Name = new StringReference(br.ReadUInt32());

                    if (this.Version >= WarcraftVersion.Warlords)
                    {
                        this.WeaponFlags = (WeaponAnimationFlags)br.ReadUInt32();
                        this.BodyFlags   = br.ReadUInt32();
                    }

                    this.Flags = br.ReadUInt32();

                    this.FallbackAnimation  = new UInt32ForeignKey(RecordName, "ID", br.ReadUInt32());
                    this.BehaviourAnimation = new UInt32ForeignKey(RecordName, "ID", br.ReadUInt32());

                    if (this.Version >= WarcraftVersion.Wrath)
                    {
                        this.BehaviourTier = br.ReadUInt32();
                    }
                }
            }
        }
        /// <summary>
        /// Loads and parses the provided data.
        /// </summary>
        /// <param name="data">Data.</param>
        public override void LoadData(byte[] data)
        {
            if (this.Version == WarcraftVersion.Unknown)
            {
                throw new InvalidOperationException("The record data cannot be loaded before SetVersion has been called.");
            }

            using (MemoryStream ms = new MemoryStream(data))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    this.ID = br.ReadUInt32();
                    this.Name = new StringReference(br.ReadUInt32());

                    if (this.Version >= WarcraftVersion.Warlords)
                    {
                        this.WeaponFlags = (WeaponAnimationFlags)br.ReadUInt32();
                        this.BodyFlags = br.ReadUInt32();
                    }

                    this.Flags = br.ReadUInt32();

                    this.FallbackAnimation = new UInt32ForeignKey(RecordName, "ID", br.ReadUInt32());
                    this.BehaviourAnimation = new UInt32ForeignKey(RecordName, "ID", br.ReadUInt32());

                    if (this.Version >= WarcraftVersion.Wrath)
                    {
                        this.BehaviourTier = br.ReadUInt32();
                    }
                }
            }
        }