Throwable inner = new RuntimeException("Inner");
Throwable middle = new TapestryException("Middle", l, inner);
Throwable outer = new RuntimeException("Outer: Middle", middle);
ExceptionAnalysis ea = analyzer.analyze(outer);
assertEquals(ea.getExceptionInfos().size(), 3);
ExceptionInfo ei = ea.getExceptionInfos().get(0);
assertEquals(ei.getMessage(), "Outer: Middle");
assertTrue(ei.getStackTrace().isEmpty());
ei = ea.getExceptionInfos().get(1);
assertEquals(ei.getMessage(), "Middle");
assertTrue(ei.getStackTrace().isEmpty());
ei = ea.getExceptionInfos().get(2);
assertEquals(ei.getMessage(), "Inner");
assertFalse(ei.getStackTrace().isEmpty());
verify();