public override int GetHashCode()
        {
            int hash = 1;

            if (metadataTypeCase_ == MetadataTypeOneofCase.Potion)
            {
                hash ^= Potion.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.Wrackspurt)
            {
                hash ^= Wrackspurt.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.FirstTimeCollection)
            {
                hash ^= FirstTimeCollection.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.Challenge)
            {
                hash ^= Challenge.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.SpellGame)
            {
                hash ^= SpellGame.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.ChallengeBonus)
            {
                hash ^= ChallengeBonus.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.ShardConversion)
            {
                hash ^= ShardConversion.GetHashCode();
            }
            if (metadataTypeCase_ == MetadataTypeOneofCase.ChallengeChamberBonus)
            {
                hash ^= ChallengeChamberBonus.GetHashCode();
            }
            hash ^= (int)metadataTypeCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
        public void MergeFrom(BonusMetadata other)
        {
            if (other == null)
            {
                return;
            }
            switch (other.MetadataTypeCase)
            {
            case MetadataTypeOneofCase.Potion:
                if (Potion == null)
                {
                    Potion = new global::WUProtos.Data.Potion.PotionBonusMetadata();
                }
                Potion.MergeFrom(other.Potion);
                break;

            case MetadataTypeOneofCase.Wrackspurt:
                if (Wrackspurt == null)
                {
                    Wrackspurt = new global::WUProtos.Data.WrackspurtBonusMetadata();
                }
                Wrackspurt.MergeFrom(other.Wrackspurt);
                break;

            case MetadataTypeOneofCase.FirstTimeCollection:
                if (FirstTimeCollection == null)
                {
                    FirstTimeCollection = new global::WUProtos.Data.FirstTimeCollectionBonusMetadata();
                }
                FirstTimeCollection.MergeFrom(other.FirstTimeCollection);
                break;

            case MetadataTypeOneofCase.Challenge:
                if (Challenge == null)
                {
                    Challenge = new global::WUProtos.Data.Challenge.ChallengeBonus();
                }
                Challenge.MergeFrom(other.Challenge);
                break;

            case MetadataTypeOneofCase.SpellGame:
                if (SpellGame == null)
                {
                    SpellGame = new global::WUProtos.Data.SpellGameBonusMetadata();
                }
                SpellGame.MergeFrom(other.SpellGame);
                break;

            case MetadataTypeOneofCase.ChallengeBonus:
                if (ChallengeBonus == null)
                {
                    ChallengeBonus = new global::WUProtos.Data.Challenge.ChallengeBonusMetadata();
                }
                ChallengeBonus.MergeFrom(other.ChallengeBonus);
                break;

            case MetadataTypeOneofCase.ShardConversion:
                if (ShardConversion == null)
                {
                    ShardConversion = new global::WUProtos.Data.ShardConversionBonusMetadata();
                }
                ShardConversion.MergeFrom(other.ShardConversion);
                break;

            case MetadataTypeOneofCase.ChallengeChamberBonus:
                if (ChallengeChamberBonus == null)
                {
                    ChallengeChamberBonus = new global::WUProtos.Data.Challenge.ChallengeChamberBonusMetadata();
                }
                ChallengeChamberBonus.MergeFrom(other.ChallengeChamberBonus);
                break;
            }

            _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }