@Override
 public void visitBinaryExpression(BinaryExpressionTree tree) {
   if (tree.is(
       Kind.CONDITIONAL_AND,
       Kind.CONDITIONAL_OR,
       Kind.ALTERNATIVE_CONDITIONAL_AND,
       Kind.ALTERNATIVE_CONDITIONAL_OR)) {
     incrementComplexity();
   }
   super.visitBinaryExpression(tree);
 }
 @Override
 public void visitCatchBlock(CatchBlockTree tree) {
   incrementComplexity();
   super.visitCatchBlock(tree);
 }
 @Override
 public void visitReturnStatement(ReturnStatementTree tree) {
   incrementComplexity();
   super.visitReturnStatement(tree);
 }
 @Override
 public void visitThrowStatement(ThrowStatementTree tree) {
   incrementComplexity();
   super.visitThrowStatement(tree);
 }
 @Override
 public void visitForEachStatement(ForEachStatementTree tree) {
   incrementComplexity();
   super.visitForEachStatement(tree);
 }
 @Override
 public void visitDoWhileStatement(DoWhileStatementTree tree) {
   incrementComplexity();
   super.visitDoWhileStatement(tree);
 }
 @Override
 public void visitCaseClause(CaseClauseTree tree) {
   incrementComplexity();
   super.visitCaseClause(tree);
 }
 private void processFunction(FunctionTree tree) {
   if (tree.is(Kind.FUNCTION_EXPRESSION) || !endsWithReturn(tree)) {
     incrementComplexity();
   }
 }
 @Override
 public void visitConditionalExpression(ConditionalExpressionTree tree) {
   incrementComplexity();
   super.visitConditionalExpression(tree);
 }