public static bool AreEqual <T>(T x, T y) where T : class
        {
            if (x == null && y != null || x != null && y == null)
            {
                return(false);
            }

            ObjectComparison context = new ObjectComparison(x, y);

            bool equal = context.CompareObjects();

            return(equal);
        }
        public static ObjectComparison Compare <T>(T x, T y) where T : class
        {
            if (x == null)
            {
                throw new ArgumentNullException("x");
            }
            if (y == null)
            {
                throw new ArgumentNullException("y");
            }

            var context = new ObjectComparison(x, y);

            context.CompareObjects();

            return(context);
        }