public void Update(DestinyQuestStatus?other)
 {
     if (other is null)
     {
         return;
     }
     if (QuestHash != other.QuestHash)
     {
         QuestHash = other.QuestHash;
         OnPropertyChanged(nameof(QuestHash));
     }
     if (StepHash != other.StepHash)
     {
         StepHash = other.StepHash;
         OnPropertyChanged(nameof(StepHash));
     }
     if (!StepObjectives.DeepEqualsList(other.StepObjectives))
     {
         StepObjectives = other.StepObjectives;
         OnPropertyChanged(nameof(StepObjectives));
     }
     if (Tracked != other.Tracked)
     {
         Tracked = other.Tracked;
         OnPropertyChanged(nameof(Tracked));
     }
     if (ItemInstanceId != other.ItemInstanceId)
     {
         ItemInstanceId = other.ItemInstanceId;
         OnPropertyChanged(nameof(ItemInstanceId));
     }
     if (Completed != other.Completed)
     {
         Completed = other.Completed;
         OnPropertyChanged(nameof(Completed));
     }
     if (Redeemed != other.Redeemed)
     {
         Redeemed = other.Redeemed;
         OnPropertyChanged(nameof(Redeemed));
     }
     if (Started != other.Started)
     {
         Started = other.Started;
         OnPropertyChanged(nameof(Started));
     }
     if (VendorHash != other.VendorHash)
     {
         VendorHash = other.VendorHash;
         OnPropertyChanged(nameof(VendorHash));
     }
 }
 public bool DeepEquals(DestinyQuestStatus?other)
 {
     return(other is not null &&
            QuestHash == other.QuestHash &&
            StepHash == other.StepHash &&
            StepObjectives.DeepEqualsList(other.StepObjectives) &&
            Tracked == other.Tracked &&
            ItemInstanceId == other.ItemInstanceId &&
            Completed == other.Completed &&
            Redeemed == other.Redeemed &&
            Started == other.Started &&
            VendorHash == other.VendorHash);
 }