public bool DeepEquals(DestinyClassDefinition other)
 {
     return(other != null &&
            DisplayProperties.DeepEquals(other.DisplayProperties) &&
            ClassType == other.ClassType &&
            GenderedClassNames.DeepEquals(other.GenderedClassNames) &&
            GenderedClassNamesByGender.DeepEqualsReadOnlyDictionaryWithDefinitionKeyAndSimpleValue(other.GenderedClassNamesByGender) &&
            Blacklisted == other.Blacklisted &&
            Hash == other.Hash &&
            Index == other.Index &&
            Redacted == other.Redacted);
 }
 public bool DeepEquals(DestinyClassDefinition?other)
 {
     return(other is not null &&
            ClassType == other.ClassType &&
            (DisplayProperties is not null ? DisplayProperties.DeepEquals(other.DisplayProperties) : other.DisplayProperties is null) &&
            GenderedClassNames.DeepEqualsDictionaryNaive(other.GenderedClassNames) &&
            GenderedClassNamesByGenderHash.DeepEqualsDictionaryNaive(other.GenderedClassNamesByGenderHash) &&
            MentorVendorHash == other.MentorVendorHash &&
            Hash == other.Hash &&
            Index == other.Index &&
            Redacted == other.Redacted);
 }
 public void Update(DestinyClassDefinition?other)
 {
     if (other is null)
     {
         return;
     }
     if (ClassType != other.ClassType)
     {
         ClassType = other.ClassType;
         OnPropertyChanged(nameof(ClassType));
     }
     if (!DisplayProperties.DeepEquals(other.DisplayProperties))
     {
         DisplayProperties.Update(other.DisplayProperties);
         OnPropertyChanged(nameof(DisplayProperties));
     }
     if (!GenderedClassNames.DeepEqualsDictionaryNaive(other.GenderedClassNames))
     {
         GenderedClassNames = other.GenderedClassNames;
         OnPropertyChanged(nameof(GenderedClassNames));
     }
     if (!GenderedClassNamesByGenderHash.DeepEqualsDictionaryNaive(other.GenderedClassNamesByGenderHash))
     {
         GenderedClassNamesByGenderHash = other.GenderedClassNamesByGenderHash;
         OnPropertyChanged(nameof(GenderedClassNamesByGenderHash));
     }
     if (MentorVendorHash != other.MentorVendorHash)
     {
         MentorVendorHash = other.MentorVendorHash;
         OnPropertyChanged(nameof(MentorVendorHash));
     }
     if (Hash != other.Hash)
     {
         Hash = other.Hash;
         OnPropertyChanged(nameof(Hash));
     }
     if (Index != other.Index)
     {
         Index = other.Index;
         OnPropertyChanged(nameof(Index));
     }
     if (Redacted != other.Redacted)
     {
         Redacted = other.Redacted;
         OnPropertyChanged(nameof(Redacted));
     }
 }
        public bool Equals(DestinyClassDefinition input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     ClassType == input.ClassType ||
                     (ClassType != null && ClassType.Equals(input.ClassType))
                     ) &&
                 (
                     DisplayProperties == input.DisplayProperties ||
                     (DisplayProperties != null && DisplayProperties.Equals(input.DisplayProperties))
                 ) &&
                 (
                     GenderedClassNames == input.GenderedClassNames ||
                     (GenderedClassNames != null && GenderedClassNames.SequenceEqual(input.GenderedClassNames))
                 ) &&
                 (
                     GenderedClassNamesByGenderHash == input.GenderedClassNamesByGenderHash ||
                     (GenderedClassNamesByGenderHash != null && GenderedClassNamesByGenderHash.SequenceEqual(input.GenderedClassNamesByGenderHash))
                 ) &&
                 (
                     MentorVendorHash == input.MentorVendorHash ||
                     (MentorVendorHash.Equals(input.MentorVendorHash))
                 ) &&
                 (
                     Hash == input.Hash ||
                     (Hash.Equals(input.Hash))
                 ) &&
                 (
                     Index == input.Index ||
                     (Index.Equals(input.Index))
                 ) &&
                 (
                     Redacted == input.Redacted ||
                     (Redacted != null && Redacted.Equals(input.Redacted))
                 ));
        }