public bool Equals(VSIExceptionData other)
        {
            if (ReferenceEquals(other, null))
            {
                return(false);
            }

            if (ReferenceEquals(other, this))
            {
                return(true);
            }

            if (!object.Equals(other.CatchSite, CatchSite))
            {
                return(false);
            }

            if (other.ExceptionsChain != ExceptionsChain &&
                (other.ExceptionsChain == null || ExceptionsChain == null) ||
                !other.ExceptionsChain.SequenceEqual(ExceptionsChain))
            {
                return(false);
            }

            return(true);
        }
        public VSIExceptionData Clone()
        {
            var clone = new VSIExceptionData();

            clone.CatchSite       = CatchSite?.Clone();
            clone.ExceptionsChain = ExceptionsChain?.Select(x => x.Clone()).ToList();
            return(clone);
        }