public static bool Equals(MergeOperation <Relationship> op, object obj)
        {
            MergeOperation <Relationship> other = (MergeOperation <Relationship>)obj;

            if (op.DisplayName != other.DisplayName)
            {
                return(false);
            }

            if (op.Object != other.Object)
            {
                return(false);
            }

            if (op.ToString() != other.ToString())
            {
                return(false);
            }

            if (op.ChangesToNote.Count() != other.ChangesToNote.Count())
            {
                return(false);
            }

            for (int i = 0; i < op.ChangesToNote.Count(); i++)
            {
                if (op.ChangesToNote.ElementAt(i).ObjectToInspect != other.ChangesToNote.ElementAt(i).ObjectToInspect ||
                    op.ChangesToNote.ElementAt(i).TextForUser != other.ChangesToNote.ElementAt(i).TextForUser)
                {
                    return(false);
                }
            }
            return(true);
        }
        public static int GetHashCode(MergeOperation <Relationship> op)
        {
            int hash = op.DisplayName.GetHashCode() ^ op.ToString().GetHashCode() ^ op.ChangesToNote.Count();

            foreach (var change in op.ChangesToNote)
            {
                hash = hash ^ change.GetHashCode();
            }

            return(hash);
        }