public bool DeepEquals(DestinyProfileComponent?other)
 {
     return(other is not null &&
            (UserInfo is not null ? UserInfo.DeepEquals(other.UserInfo) : other.UserInfo is null) &&
            DateLastPlayed == other.DateLastPlayed &&
            VersionsOwned == other.VersionsOwned &&
            CharacterIds.DeepEqualsListNaive(other.CharacterIds) &&
            SeasonHashes.DeepEqualsListNaive(other.SeasonHashes) &&
            CurrentSeasonHash == other.CurrentSeasonHash &&
            CurrentSeasonRewardPowerCap == other.CurrentSeasonRewardPowerCap);
 }
 public void Update(DestinyProfileComponent?other)
 {
     if (other is null)
     {
         return;
     }
     if (!UserInfo.DeepEquals(other.UserInfo))
     {
         UserInfo.Update(other.UserInfo);
         OnPropertyChanged(nameof(UserInfo));
     }
     if (DateLastPlayed != other.DateLastPlayed)
     {
         DateLastPlayed = other.DateLastPlayed;
         OnPropertyChanged(nameof(DateLastPlayed));
     }
     if (VersionsOwned != other.VersionsOwned)
     {
         VersionsOwned = other.VersionsOwned;
         OnPropertyChanged(nameof(VersionsOwned));
     }
     if (!CharacterIds.DeepEqualsListNaive(other.CharacterIds))
     {
         CharacterIds = other.CharacterIds;
         OnPropertyChanged(nameof(CharacterIds));
     }
     if (!SeasonHashes.DeepEqualsListNaive(other.SeasonHashes))
     {
         SeasonHashes = other.SeasonHashes;
         OnPropertyChanged(nameof(SeasonHashes));
     }
     if (CurrentSeasonHash != other.CurrentSeasonHash)
     {
         CurrentSeasonHash = other.CurrentSeasonHash;
         OnPropertyChanged(nameof(CurrentSeasonHash));
     }
     if (CurrentSeasonRewardPowerCap != other.CurrentSeasonRewardPowerCap)
     {
         CurrentSeasonRewardPowerCap = other.CurrentSeasonRewardPowerCap;
         OnPropertyChanged(nameof(CurrentSeasonRewardPowerCap));
     }
 }