public override bool Equals(object obj) { return(obj is ProcessedPeak <I> peak && EqualityComparer <I> .Default.Equals(Source, peak.Source) && ((double.IsNaN(XSquared) && double.IsNaN(peak.XSquared)) || XSquared == peak.XSquared) && ((double.IsNaN(RTP) && double.IsNaN(peak.RTP)) || RTP == peak.RTP) && !SupportingPeaks.Except(peak.SupportingPeaks).Any() && Reason == peak.Reason && !Classification.Except(peak.Classification).Any() && ((double.IsNaN(AdjPValue) && double.IsNaN(peak.AdjPValue)) || AdjPValue == peak.AdjPValue)); }