public override void Deserialize(IDataReader reader)
        {
            base.Deserialize(reader);
            objectGID = reader.ReadVarShort();
            if (objectGID < 0)
            {
                throw new Exception("Forbidden value on objectGID = " + objectGID + ", it doesn't respect the following condition : objectGID < 0");
            }
            var limit    = reader.ReadShort();
            var effects_ = new ObjectEffect[limit];

            for (int i = 0; i < limit; i++)
            {
                effects_[i] = Types.ProtocolTypeManager.GetInstance <ObjectEffect>(reader.ReadShort());
                effects_[i].Deserialize(reader);
            }
            effects   = effects_;
            objectUID = reader.ReadVarInt();
            if (objectUID < 0)
            {
                throw new Exception("Forbidden value on objectUID = " + objectUID + ", it doesn't respect the following condition : objectUID < 0");
            }
            quantity = reader.ReadVarInt();
            if (quantity < 0)
            {
                throw new Exception("Forbidden value on quantity = " + quantity + ", it doesn't respect the following condition : quantity < 0");
            }
        }
        public virtual void Deserialize(IDataReader reader)
        {
            objectUID = reader.ReadVarInt();
            if (objectUID < 0)
            {
                throw new Exception("Forbidden value on objectUID = " + objectUID + ", it doesn't respect the following condition : objectUID < 0");
            }
            var limit    = reader.ReadShort();
            var effects_ = new ObjectEffect[limit];

            for (int i = 0; i < limit; i++)
            {
                effects_[i] = Types.ProtocolTypeManager.GetInstance <ObjectEffect>(reader.ReadShort());
                effects_[i].Deserialize(reader);
            }
            effects = effects_;
            limit   = reader.ReadShort();
            var prices_ = new long[limit];

            for (int i = 0; i < limit; i++)
            {
                prices_[i] = reader.ReadVarLong();
                if (prices_[i] > 9007199254740990)
                {
                    throw new Exception("Forbidden value on prices_[i] = " + prices_[i] + ", it doesn't respect the following condition : prices_[i] > 9007199254740990");
                }
            }
            prices = prices_;
        }