private void compare( String name, LombokTestSource expected, String actualFile, LinkedHashSet<CompilerMessage> actualMessages, boolean printErrors, boolean skipCompareContent) throws Throwable { if (!skipCompareContent) try { compareContent(name, expected.getContent(), actualFile); } catch (Throwable e) { if (printErrors) { System.out.println("***** " + name + " *****"); System.out.println(e.getMessage()); System.out.println("**** Expected ******"); System.out.println(expected.getContent()); System.out.println("**** Actual ******"); System.out.println(actualFile); if (actualMessages != null && !actualMessages.isEmpty()) { System.out.println("**** Actual Errors *****"); for (CompilerMessage actualMessage : actualMessages) { System.out.println(actualMessage); } } System.out.println("*******************"); } if (dumpActualFilesHere != null) { dumpToFile(new File(dumpActualFilesHere, name), actualFile); } throw e; } try { compareMessages(name, expected.getMessages(), actualMessages); } catch (Throwable e) { if (printErrors) { System.out.println("***** " + name + " *****"); System.out.println(e.getMessage()); System.out.println("**** Expected ******"); for (CompilerMessageMatcher expectedMessage : expected.getMessages()) { System.out.println(expectedMessage); } System.out.println("**** Actual ******"); for (CompilerMessage actualMessage : actualMessages) { System.out.println(actualMessage); } System.out.println("*******************"); } if (dumpActualFilesHere != null) { dumpToFile(new File(dumpActualFilesHere, name + ".messages"), actualMessages); } throw e; } }