public bool DeepEquals(DestinyVendorReceipt?other)
 {
     return(other is not null &&
            CurrencyPaid.DeepEqualsList(other.CurrencyPaid) &&
            (ItemReceived is not null ? ItemReceived.DeepEquals(other.ItemReceived) : other.ItemReceived is null) &&
            LicenseUnlockHash == other.LicenseUnlockHash &&
            PurchasedByCharacterId == other.PurchasedByCharacterId &&
            RefundPolicy == other.RefundPolicy &&
            SequenceNumber == other.SequenceNumber &&
            TimeToExpiration == other.TimeToExpiration &&
            ExpiresOn == other.ExpiresOn);
 }
 public void Update(DestinyVendorReceipt?other)
 {
     if (other is null)
     {
         return;
     }
     if (!CurrencyPaid.DeepEqualsList(other.CurrencyPaid))
     {
         CurrencyPaid = other.CurrencyPaid;
         OnPropertyChanged(nameof(CurrencyPaid));
     }
     if (!ItemReceived.DeepEquals(other.ItemReceived))
     {
         ItemReceived.Update(other.ItemReceived);
         OnPropertyChanged(nameof(ItemReceived));
     }
     if (LicenseUnlockHash != other.LicenseUnlockHash)
     {
         LicenseUnlockHash = other.LicenseUnlockHash;
         OnPropertyChanged(nameof(LicenseUnlockHash));
     }
     if (PurchasedByCharacterId != other.PurchasedByCharacterId)
     {
         PurchasedByCharacterId = other.PurchasedByCharacterId;
         OnPropertyChanged(nameof(PurchasedByCharacterId));
     }
     if (RefundPolicy != other.RefundPolicy)
     {
         RefundPolicy = other.RefundPolicy;
         OnPropertyChanged(nameof(RefundPolicy));
     }
     if (SequenceNumber != other.SequenceNumber)
     {
         SequenceNumber = other.SequenceNumber;
         OnPropertyChanged(nameof(SequenceNumber));
     }
     if (TimeToExpiration != other.TimeToExpiration)
     {
         TimeToExpiration = other.TimeToExpiration;
         OnPropertyChanged(nameof(TimeToExpiration));
     }
     if (ExpiresOn != other.ExpiresOn)
     {
         ExpiresOn = other.ExpiresOn;
         OnPropertyChanged(nameof(ExpiresOn));
     }
 }
        public bool Equals(DestinyVendorReceipt input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     CurrencyPaid == input.CurrencyPaid ||
                     (CurrencyPaid != null && CurrencyPaid.SequenceEqual(input.CurrencyPaid))
                     ) &&
                 (
                     ItemReceived == input.ItemReceived ||
                     (ItemReceived != null && ItemReceived.Equals(input.ItemReceived))
                 ) &&
                 (
                     LicenseUnlockHash == input.LicenseUnlockHash ||
                     (LicenseUnlockHash.Equals(input.LicenseUnlockHash))
                 ) &&
                 (
                     PurchasedByCharacterId == input.PurchasedByCharacterId ||
                     (PurchasedByCharacterId.Equals(input.PurchasedByCharacterId))
                 ) &&
                 (
                     RefundPolicy == input.RefundPolicy ||
                     (RefundPolicy != null && RefundPolicy.Equals(input.RefundPolicy))
                 ) &&
                 (
                     SequenceNumber == input.SequenceNumber ||
                     (SequenceNumber.Equals(input.SequenceNumber))
                 ) &&
                 (
                     TimeToExpiration == input.TimeToExpiration ||
                     (TimeToExpiration.Equals(input.TimeToExpiration))
                 ) &&
                 (
                     ExpiresOn == input.ExpiresOn ||
                     (ExpiresOn != null && ExpiresOn.Equals(input.ExpiresOn))
                 ));
        }