public ComparisonResult Compare(IComparisonContext context, object value1, object value2)
        {
            if (!context.ShouldVisitObjects(value1, value2))
            {
                return(ComparisonResult.Pass);
            }

            var comparer = new ComplexObjectComparer(Inner, IgnoreUnmatchedProperties, IgnoredProperties);

            return(comparer.CompareObjects(context, value1, value2));
        }