code: private AssertionError createAssertionError() {
  		// convert both sides to strings
  		String expected = TreeQuery.toString(expectedDef, expectedRoot, expectedToString);
  		String actual = TreeQuery.toString(actualDef, actualRoot, actualToString);
  		// try to create a junit ComparisonFailure
  		for (String exceptionType : Arrays.asList(
  				"org.junit.ComparisonFailure",
  				"junit.framework.ComparisonFailure")) {
  			try {
  				return createComparisonFailure(exceptionType, expected, actual);
  			} catch (Exception e) {}
  		}
  		// we'll have to settle for a plain-jane AssertionError
  		return new AssertionError("Expected:\n" + expected + "\n\nActual:\n" + actual);
  	}
docs: Returns an {@link AssertionError} containing the contents of the
  two trees. Attempts to throw a JUnit ComparisonFailure if JUnit
  is on the class path, but it fails to a plain old {@code java.lang.AssertionError}
  if the reflection calls fail.