private void Compare(Exception ex, ErrorInfo err, int level = 1) {
            Console.WriteLine("Level " + level);
            Assert.Equal(ex.GetType().FullName, err.Type);
            if (String.IsNullOrEmpty(ex.StackTrace))
                Assert.Equal(0, err.StackTrace.Count);
            else {
                string[] lines = Regex.Split(ex.StackTrace, "\r\n|\r|\n");
                Assert.Equal(lines.Length, err.StackTrace.Count);
                Assert.Equal(ex.StackTrace, err.StackTrace.ToString());
            }

            // TODO: Fix formatting bugs with inner exception tostring
            if (level == 1)
                Assert.Equal(ex.ToString(), err.ToString());

            if (ex.InnerException != null)
                Compare(ex.InnerException, err.Inner, level + 1);
        }