public bool DeepEquals(DestinyItemComponent?other)
 {
     return(other is not null &&
            ItemHash == other.ItemHash &&
            ItemInstanceId == other.ItemInstanceId &&
            Quantity == other.Quantity &&
            BindStatus == other.BindStatus &&
            Location == other.Location &&
            BucketHash == other.BucketHash &&
            TransferStatus == other.TransferStatus &&
            Lockable == other.Lockable &&
            State == other.State &&
            OverrideStyleItemHash == other.OverrideStyleItemHash &&
            ExpirationDate == other.ExpirationDate &&
            IsWrapper == other.IsWrapper &&
            TooltipNotificationIndexes.DeepEqualsListNaive(other.TooltipNotificationIndexes) &&
            MetricHash == other.MetricHash &&
            (MetricObjective is not null ? MetricObjective.DeepEquals(other.MetricObjective) : other.MetricObjective is null) &&
            VersionNumber == other.VersionNumber &&
            ItemValueVisibility.DeepEqualsListNaive(other.ItemValueVisibility));
 }
 public void Update(DestinyItemComponent?other)
 {
     if (other is null)
     {
         return;
     }
     if (ItemHash != other.ItemHash)
     {
         ItemHash = other.ItemHash;
         OnPropertyChanged(nameof(ItemHash));
     }
     if (ItemInstanceId != other.ItemInstanceId)
     {
         ItemInstanceId = other.ItemInstanceId;
         OnPropertyChanged(nameof(ItemInstanceId));
     }
     if (Quantity != other.Quantity)
     {
         Quantity = other.Quantity;
         OnPropertyChanged(nameof(Quantity));
     }
     if (BindStatus != other.BindStatus)
     {
         BindStatus = other.BindStatus;
         OnPropertyChanged(nameof(BindStatus));
     }
     if (Location != other.Location)
     {
         Location = other.Location;
         OnPropertyChanged(nameof(Location));
     }
     if (BucketHash != other.BucketHash)
     {
         BucketHash = other.BucketHash;
         OnPropertyChanged(nameof(BucketHash));
     }
     if (TransferStatus != other.TransferStatus)
     {
         TransferStatus = other.TransferStatus;
         OnPropertyChanged(nameof(TransferStatus));
     }
     if (Lockable != other.Lockable)
     {
         Lockable = other.Lockable;
         OnPropertyChanged(nameof(Lockable));
     }
     if (State != other.State)
     {
         State = other.State;
         OnPropertyChanged(nameof(State));
     }
     if (OverrideStyleItemHash != other.OverrideStyleItemHash)
     {
         OverrideStyleItemHash = other.OverrideStyleItemHash;
         OnPropertyChanged(nameof(OverrideStyleItemHash));
     }
     if (ExpirationDate != other.ExpirationDate)
     {
         ExpirationDate = other.ExpirationDate;
         OnPropertyChanged(nameof(ExpirationDate));
     }
     if (IsWrapper != other.IsWrapper)
     {
         IsWrapper = other.IsWrapper;
         OnPropertyChanged(nameof(IsWrapper));
     }
     if (!TooltipNotificationIndexes.DeepEqualsListNaive(other.TooltipNotificationIndexes))
     {
         TooltipNotificationIndexes = other.TooltipNotificationIndexes;
         OnPropertyChanged(nameof(TooltipNotificationIndexes));
     }
     if (MetricHash != other.MetricHash)
     {
         MetricHash = other.MetricHash;
         OnPropertyChanged(nameof(MetricHash));
     }
     if (!MetricObjective.DeepEquals(other.MetricObjective))
     {
         MetricObjective.Update(other.MetricObjective);
         OnPropertyChanged(nameof(MetricObjective));
     }
     if (VersionNumber != other.VersionNumber)
     {
         VersionNumber = other.VersionNumber;
         OnPropertyChanged(nameof(VersionNumber));
     }
     if (!ItemValueVisibility.DeepEqualsListNaive(other.ItemValueVisibility))
     {
         ItemValueVisibility = other.ItemValueVisibility;
         OnPropertyChanged(nameof(ItemValueVisibility));
     }
 }
        public bool Equals(DestinyItemComponent input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     ItemHash == input.ItemHash ||
                     (ItemHash.Equals(input.ItemHash))
                     ) &&
                 (
                     ItemInstanceId == input.ItemInstanceId ||
                     (ItemInstanceId.Equals(input.ItemInstanceId))
                 ) &&
                 (
                     Quantity == input.Quantity ||
                     (Quantity.Equals(input.Quantity))
                 ) &&
                 (
                     BindStatus == input.BindStatus ||
                     (BindStatus != null && BindStatus.Equals(input.BindStatus))
                 ) &&
                 (
                     Location == input.Location ||
                     (Location != null && Location.Equals(input.Location))
                 ) &&
                 (
                     BucketHash == input.BucketHash ||
                     (BucketHash.Equals(input.BucketHash))
                 ) &&
                 (
                     TransferStatus == input.TransferStatus ||
                     (TransferStatus != null && TransferStatus.Equals(input.TransferStatus))
                 ) &&
                 (
                     Lockable == input.Lockable ||
                     (Lockable != null && Lockable.Equals(input.Lockable))
                 ) &&
                 (
                     State == input.State ||
                     (State != null && State.Equals(input.State))
                 ) &&
                 (
                     OverrideStyleItemHash == input.OverrideStyleItemHash ||
                     (OverrideStyleItemHash.Equals(input.OverrideStyleItemHash))
                 ) &&
                 (
                     ExpirationDate == input.ExpirationDate ||
                     (ExpirationDate != null && ExpirationDate.Equals(input.ExpirationDate))
                 ) &&
                 (
                     IsWrapper == input.IsWrapper ||
                     (IsWrapper != null && IsWrapper.Equals(input.IsWrapper))
                 ) &&
                 (
                     TooltipNotificationIndexes == input.TooltipNotificationIndexes ||
                     (TooltipNotificationIndexes != null && TooltipNotificationIndexes.SequenceEqual(input.TooltipNotificationIndexes))
                 ) &&
                 (
                     MetricHash == input.MetricHash ||
                     (MetricHash.Equals(input.MetricHash))
                 ) &&
                 (
                     MetricObjective == input.MetricObjective ||
                     (MetricObjective != null && MetricObjective.Equals(input.MetricObjective))
                 ) &&
                 (
                     VersionNumber == input.VersionNumber ||
                     (VersionNumber.Equals(input.VersionNumber))
                 ) &&
                 (
                     ItemValueVisibility == input.ItemValueVisibility ||
                     (ItemValueVisibility != null && ItemValueVisibility.SequenceEqual(input.ItemValueVisibility))
                 ));
        }