public bool DeepEquals(DestinyRaceDefinition?other)
 {
     return(other is not null &&
            (DisplayProperties is not null ? DisplayProperties.DeepEquals(other.DisplayProperties) : other.DisplayProperties is null) &&
            RaceType == other.RaceType &&
            GenderedRaceNames.DeepEqualsDictionaryNaive(other.GenderedRaceNames) &&
            GenderedRaceNamesByGenderHash.DeepEqualsDictionaryNaive(other.GenderedRaceNamesByGenderHash) &&
            Hash == other.Hash &&
            Index == other.Index &&
            Redacted == other.Redacted);
 }
 public bool DeepEquals(DestinyRaceDefinition other)
 {
     return(other != null &&
            DisplayProperties.DeepEquals(other.DisplayProperties) &&
            RaceType == other.RaceType &&
            GenderedRaceNames.DeepEquals(other.GenderedRaceNames) &&
            GenderedRaceNamesByGender.DeepEqualsReadOnlyDictionaryWithDefinitionKeyAndSimpleValue(other.GenderedRaceNamesByGender) &&
            Blacklisted == other.Blacklisted &&
            Hash == other.Hash &&
            Index == other.Index &&
            Redacted == other.Redacted);
 }
 public void Update(DestinyRaceDefinition?other)
 {
     if (other is null)
     {
         return;
     }
     if (!DisplayProperties.DeepEquals(other.DisplayProperties))
     {
         DisplayProperties.Update(other.DisplayProperties);
         OnPropertyChanged(nameof(DisplayProperties));
     }
     if (RaceType != other.RaceType)
     {
         RaceType = other.RaceType;
         OnPropertyChanged(nameof(RaceType));
     }
     if (!GenderedRaceNames.DeepEqualsDictionaryNaive(other.GenderedRaceNames))
     {
         GenderedRaceNames = other.GenderedRaceNames;
         OnPropertyChanged(nameof(GenderedRaceNames));
     }
     if (!GenderedRaceNamesByGenderHash.DeepEqualsDictionaryNaive(other.GenderedRaceNamesByGenderHash))
     {
         GenderedRaceNamesByGenderHash = other.GenderedRaceNamesByGenderHash;
         OnPropertyChanged(nameof(GenderedRaceNamesByGenderHash));
     }
     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(DestinyRaceDefinition input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     DisplayProperties == input.DisplayProperties ||
                     (DisplayProperties != null && DisplayProperties.Equals(input.DisplayProperties))
                     ) &&
                 (
                     RaceType == input.RaceType ||
                     (RaceType != null && RaceType.Equals(input.RaceType))
                 ) &&
                 (
                     GenderedRaceNames == input.GenderedRaceNames ||
                     (GenderedRaceNames != null && GenderedRaceNames.SequenceEqual(input.GenderedRaceNames))
                 ) &&
                 (
                     GenderedRaceNamesByGenderHash == input.GenderedRaceNamesByGenderHash ||
                     (GenderedRaceNamesByGenderHash != null && GenderedRaceNamesByGenderHash.SequenceEqual(input.GenderedRaceNamesByGenderHash))
                 ) &&
                 (
                     Hash == input.Hash ||
                     (Hash.Equals(input.Hash))
                 ) &&
                 (
                     Index == input.Index ||
                     (Index.Equals(input.Index))
                 ) &&
                 (
                     Redacted == input.Redacted ||
                     (Redacted != null && Redacted.Equals(input.Redacted))
                 ));
        }