/**
  * Returns a string describing the exception type caught by the given try tree's catch
  * statement(s), defaulting to {@code "Exception"} if more than one exception type is caught.
  */
 private String exceptionToString(TryTree tree) {
   if (tree.getCatches().size() != 1) {
     return "Exception";
   }
   String exceptionType = tree.getCatches().iterator().next().getParameter().getType().toString();
   if (exceptionType.contains("|")) {
     return "Exception";
   }
   return exceptionType;
 }
 private boolean anyCatchBlockMatches(TryTree tree, VisitorState state, Matcher<Tree> matcher) {
   for (CatchTree catchTree : tree.getCatches()) {
     if (matcher.matches(catchTree.getBlock(), state)) {
       return true;
     }
   }
   return false;
 }
 private boolean hasExpectedException(TryTree tree) {
   for (CatchTree catchTree : tree.getCatches()) {
     if (catchTree.getParameter().getName().toString().equals("expected")) {
       return true;
     }
   }
   return false;
 }
 private boolean isInapplicableExceptionType(TryTree tree, VisitorState state) {
   for (CatchTree catchTree : tree.getCatches()) {
     if (INAPPLICABLE_EXCEPTION.matches(catchTree.getParameter(), state)) {
       return true;
     }
   }
   return false;
 }