  Line 43) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 44) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 45) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 47) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 54) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 55) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 57) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 69) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 70) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 71) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 73) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 81) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 81) n.getType() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getType()
  Line 86) n.getDefaultValue() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getDefaultValue()
  Line 88) n.getDefaultValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 88) n.getDefaultValue() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getDefaultValue()
  Line 99) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 101) n.getName().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 101) n.getName() ==> com.github.javaparser.ast.expr.ArrayAccessExpr.getName()
  Line 107) n.getIndex().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 107) n.getIndex() ==> com.github.javaparser.ast.expr.ArrayAccessExpr.getIndex()
  Line 117) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 119) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 119) n.getType() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getType()
  Line 124) n.getLevels() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getLevels()
  Line 125) level.accept(this, arg) ==> com.github.javaparser.ast.ArrayCreationLevel.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 130) n.getInitializer() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getInitializer()
  Line 131) n.getInitializer().accept(this, arg) ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 131) n.getInitializer() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getInitializer()
  Line 141) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 142) n.getValues() ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.getValues()
  Line 143) n.getValues() ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.getValues()
  Line 145) expr.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 157) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 159) n.getCheck().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 159) n.getCheck() ==> com.github.javaparser.ast.stmt.AssertStmt.getCheck()
  Line 164) n.getMessage() ==> com.github.javaparser.ast.stmt.AssertStmt.getMessage()
  Line 166) n.getMessage().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 166) n.getMessage() ==> com.github.javaparser.ast.stmt.AssertStmt.getMessage()
  Line 177) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 179) n.getTarget().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 179) n.getTarget() ==> com.github.javaparser.ast.expr.AssignExpr.getTarget()
  Line 185) n.getValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 185) n.getValue() ==> com.github.javaparser.ast.expr.AssignExpr.getValue()
  Line 195) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 197) n.getLeft().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 197) n.getLeft() ==> com.github.javaparser.ast.expr.BinaryExpr.getLeft()
  Line 203) n.getRight().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 203) n.getRight() ==> com.github.javaparser.ast.expr.BinaryExpr.getRight()
  Line 213) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 214) n.getStmts() ==> com.github.javaparser.ast.stmt.BlockStmt.getStmts()
  Line 215) n.getStmts() ==> com.github.javaparser.ast.stmt.BlockStmt.getStmts()
  Line 217) s.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 230) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 236) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 242) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 244) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 244) n.getType() ==> com.github.javaparser.ast.expr.CastExpr.getType()
  Line 250) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 250) n.getExpr() ==> com.github.javaparser.ast.expr.CastExpr.getExpr()
  Line 260) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 262) n.getParam().accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 262) n.getParam() ==> com.github.javaparser.ast.stmt.CatchClause.getParam()
  Line 268) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 268) n.getBody() ==> com.github.javaparser.ast.stmt.CatchClause.getBody()
  Line 279) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 285) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 287) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 287) n.getType() ==> com.github.javaparser.ast.expr.ClassExpr.getType()
  Line 297) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 298) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 299) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 301) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 308) n.getTypeParameters() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getTypeParameters()
  Line 309) n.getTypeParameters() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getTypeParameters()
  Line 311) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 318) n.getExtends() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getExtends()
  Line 319) n.getExtends() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getExtends()
  Line 321) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 329) n.getImplements() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getImplements()
  Line 330) n.getImplements() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getImplements()
  Line 332) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 339) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 340) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 342) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 354) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 355) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 356) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 361) n.getScope() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getScope()
  Line 363) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 363) n.getScope() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getScope()
  Line 369) n.getTypeArguments() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getTypeArguments()
  Line 370) n.getTypeArguments() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getTypeArguments()
  Line 371) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 382) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 383) n.getPackage() ==> com.github.javaparser.ast.CompilationUnit.getPackage()
  Line 385) n.getPackage().accept(this, arg) ==> com.github.javaparser.ast.PackageDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 385) n.getPackage() ==> com.github.javaparser.ast.CompilationUnit.getPackage()
  Line 391) n.getImports() ==> com.github.javaparser.ast.CompilationUnit.getImports()
  Line 392) n.getImports() ==> com.github.javaparser.ast.CompilationUnit.getImports()
  Line 394) i.accept(this, arg) ==> com.github.javaparser.ast.ImportDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 401) n.getTypes() ==> com.github.javaparser.ast.CompilationUnit.getTypes()
  Line 402) n.getTypes() ==> com.github.javaparser.ast.CompilationUnit.getTypes()
  Line 404) typeDeclaration.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 416) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 418) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 418) n.getCondition() ==> com.github.javaparser.ast.expr.ConditionalExpr.getCondition()
  Line 424) n.getThenExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 424) n.getThenExpr() ==> com.github.javaparser.ast.expr.ConditionalExpr.getThenExpr()
  Line 430) n.getElseExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 430) n.getElseExpr() ==> com.github.javaparser.ast.expr.ConditionalExpr.getElseExpr()
  Line 440) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 441) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 442) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 444) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 451) n.getTypeParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()
  Line 452) n.getTypeParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()
  Line 454) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 461) n.getParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()
  Line 462) n.getParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()
  Line 464) p.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 471) n.getThrows() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()
  Line 472) n.getThrows() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()
  Line 474) name.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 482) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 482) n.getBody() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getBody()
  Line 492) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 498) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 500) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 500) n.getBody() ==> com.github.javaparser.ast.stmt.DoStmt.getBody()
  Line 506) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 506) n.getCondition() ==> com.github.javaparser.ast.stmt.DoStmt.getCondition()
  Line 516) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 522) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 528) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 534) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 540) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 542) n.getInner().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 542) n.getInner() ==> com.github.javaparser.ast.expr.EnclosedExpr.getInner()
  Line 552) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 553) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 554) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 556) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 563) n.getArgs() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getArgs()
  Line 564) n.getArgs() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getArgs()
  Line 566) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 573) n.getClassBody() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getClassBody()
  Line 574) n.getClassBody() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getClassBody()
  Line 576) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 588) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 589) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 590) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 592) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 599) n.getImplements() ==> com.github.javaparser.ast.body.EnumDeclaration.getImplements()
  Line 600) n.getImplements() ==> com.github.javaparser.ast.body.EnumDeclaration.getImplements()
  Line 602) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 609) n.getEntries() ==> com.github.javaparser.ast.body.EnumDeclaration.getEntries()
  Line 610) n.getEntries() ==> com.github.javaparser.ast.body.EnumDeclaration.getEntries()
  Line 612) e.accept(this, arg) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 619) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 620) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 622) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 634) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 635) n.isThis() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.isThis()
  Line 635) n.getExpr() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getExpr()
  Line 637) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 637) n.getExpr() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getExpr()
  Line 643) n.getTypeArguments() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getTypeArguments()
  Line 644) n.getTypeArguments() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getTypeArguments()
  Line 645) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 651) n.getArgs() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getArgs()
  Line 652) n.getArgs() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getArgs()
  Line 654) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 666) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 668) n.getExpression().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 668) n.getExpression() ==> com.github.javaparser.ast.stmt.ExpressionStmt.getExpression()
  Line 678) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 680) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 680) n.getScope() ==> com.github.javaparser.ast.expr.FieldAccessExpr.getScope()
  Line 686) n.getTypeArguments() ==> com.github.javaparser.ast.expr.FieldAccessExpr.getTypeArguments()
  Line 687) n.getTypeArguments() ==> com.github.javaparser.ast.expr.FieldAccessExpr.getTypeArguments()
  Line 688) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 700) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 701) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 702) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 704) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 712) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 712) n.getElementType() ==> com.github.javaparser.ast.body.FieldDeclaration.getElementType()
  Line 717) n.getVariables() ==> com.github.javaparser.ast.body.FieldDeclaration.getVariables()
  Line 719) var.accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclarator.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 730) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 732) n.getVariable().accept(this, arg) ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 732) n.getVariable() ==> com.github.javaparser.ast.stmt.ForeachStmt.getVariable()
  Line 738) n.getIterable().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 738) n.getIterable() ==> com.github.javaparser.ast.stmt.ForeachStmt.getIterable()
  Line 744) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 744) n.getBody() ==> com.github.javaparser.ast.stmt.ForeachStmt.getBody()
  Line 754) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 755) n.getInit() ==> com.github.javaparser.ast.stmt.ForStmt.getInit()
  Line 756) n.getInit() ==> com.github.javaparser.ast.stmt.ForStmt.getInit()
  Line 758) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 765) n.getCompare() ==> com.github.javaparser.ast.stmt.ForStmt.getCompare()
  Line 767) n.getCompare().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 767) n.getCompare() ==> com.github.javaparser.ast.stmt.ForStmt.getCompare()
  Line 773) n.getUpdate() ==> com.github.javaparser.ast.stmt.ForStmt.getUpdate()
  Line 774) n.getUpdate() ==> com.github.javaparser.ast.stmt.ForStmt.getUpdate()
  Line 776) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 784) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 784) n.getBody() ==> com.github.javaparser.ast.stmt.ForStmt.getBody()
  Line 794) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 796) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 796) n.getCondition() ==> com.github.javaparser.ast.stmt.IfStmt.getCondition()
  Line 802) n.getThenStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 802) n.getThenStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getThenStmt()
  Line 807) n.getElseStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getElseStmt()
  Line 809) n.getElseStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 809) n.getElseStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getElseStmt()
  Line 820) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 822) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 822) n.getName() ==> com.github.javaparser.ast.ImportDeclaration.getName()
  Line 832) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 834) n.getBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 834) n.getBlock() ==> com.github.javaparser.ast.body.InitializerDeclaration.getBlock()
  Line 844) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 846) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 846) n.getExpr() ==> com.github.javaparser.ast.expr.InstanceOfExpr.getExpr()
  Line 852) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 852) n.getType() ==> com.github.javaparser.ast.expr.InstanceOfExpr.getType()
  Line 862) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 868) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 879) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 881) n.getStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 881) n.getStmt() ==> com.github.javaparser.ast.stmt.LabeledStmt.getStmt()
  Line 891) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 897) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 903) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 905) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 905) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 915) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 917) n.getValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 917) n.getValue() ==> com.github.javaparser.ast.expr.MemberValuePair.getValue()
  Line 927) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 928) n.getScope() ==> com.github.javaparser.ast.expr.MethodCallExpr.getScope()
  Line 930) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 930) n.getScope() ==> com.github.javaparser.ast.expr.MethodCallExpr.getScope()
  Line 936) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodCallExpr.getTypeArguments()
  Line 937) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodCallExpr.getTypeArguments()
  Line 938) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 944) n.getArgs() ==> com.github.javaparser.ast.expr.MethodCallExpr.getArgs()
  Line 945) n.getArgs() ==> com.github.javaparser.ast.expr.MethodCallExpr.getArgs()
  Line 947) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 959) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 960) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 961) n.getAnnotations() ==> com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()
  Line 963) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 970) n.getTypeParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getTypeParameters()
  Line 971) n.getTypeParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getTypeParameters()
  Line 973) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 981) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 981) n.getElementType() ==> com.github.javaparser.ast.body.MethodDeclaration.getElementType()
  Line 986) n.getParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getParameters()
  Line 987) n.getParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getParameters()
  Line 989) p.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 996) n.getThrows() ==> com.github.javaparser.ast.body.MethodDeclaration.getThrows()
  Line 997) n.getThrows() ==> com.github.javaparser.ast.body.MethodDeclaration.getThrows()
  Line 999) name.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1006) n.getBody() ==> com.github.javaparser.ast.body.MethodDeclaration.getBody()
  Line 1008) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1008) n.getBody() ==> com.github.javaparser.ast.body.MethodDeclaration.getBody()
  Line 1019) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1025) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1027) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1027) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 1032) n.getPairs() ==> com.github.javaparser.ast.expr.NormalAnnotationExpr.getPairs()
  Line 1033) n.getPairs() ==> com.github.javaparser.ast.expr.NormalAnnotationExpr.getPairs()
  Line 1035) m.accept(this, arg) ==> com.github.javaparser.ast.expr.MemberValuePair.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1047) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1053) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1054) n.getScope() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getScope()
  Line 1056) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1056) n.getScope() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getScope()
  Line 1062) n.getTypeArguments() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getTypeArguments()
  Line 1063) n.getTypeArguments() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getTypeArguments()
  Line 1064) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1071) n.getType().accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1071) n.getType() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getType()
  Line 1076) n.getArgs() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getArgs()
  Line 1077) n.getArgs() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getArgs()
  Line 1079) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1086) n.getAnonymousClassBody() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getAnonymousClassBody()
  Line 1087) n.getAnonymousClassBody() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getAnonymousClassBody()
  Line 1089) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1101) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1102) n.getAnnotations() ==> com.github.javaparser.ast.PackageDeclaration.getAnnotations()
  Line 1103) n.getAnnotations() ==> com.github.javaparser.ast.PackageDeclaration.getAnnotations()
  Line 1105) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1113) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1113) n.getName() ==> com.github.javaparser.ast.PackageDeclaration.getName()
  Line 1123) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1124) n.getAnnotations() ==> com.github.javaparser.ast.body.Parameter.getAnnotations()
  Line 1125) n.getAnnotations() ==> com.github.javaparser.ast.body.Parameter.getAnnotations()
  Line 1127) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1135) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1135) n.getElementType() ==> com.github.javaparser.ast.body.Parameter.getElementType()
  Line 1141) n.getId().accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclaratorId.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1141) n.getId() ==> com.github.javaparser.ast.body.Parameter.getId()
  Line 1151) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1152) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1153) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1163) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1165) n.getQualifier().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1165) n.getQualifier() ==> com.github.javaparser.ast.expr.QualifiedNameExpr.getQualifier()
  Line 1175) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1176) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1177) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1183) n.getComponentType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1183) n.getComponentType() ==> com.github.javaparser.ast.type.ArrayType.getComponentType()
  Line 1193) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1194) n.getAnnotations() ==> com.github.javaparser.ast.ArrayCreationLevel.getAnnotations()
  Line 1195) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1201) n.getDimension() ==> com.github.javaparser.ast.ArrayCreationLevel.getDimension()
  Line 1202) n.getDimension().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1202) n.getDimension() ==> com.github.javaparser.ast.ArrayCreationLevel.getDimension()
  Line 1213) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1214) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1215) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1221) n.getElements() ==> com.github.javaparser.ast.type.IntersectionType.getElements()
  Line 1222) element.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1233) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1234) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1235) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1241) n.getElements() ==> com.github.javaparser.ast.type.UnionType.getElements()
  Line 1242) element.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1253) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1254) n.getExpr() ==> com.github.javaparser.ast.stmt.ReturnStmt.getExpr()
  Line 1256) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1256) n.getExpr() ==> com.github.javaparser.ast.stmt.ReturnStmt.getExpr()
  Line 1267) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1269) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1269) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 1275) n.getMemberValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1275) n.getMemberValue() ==> com.github.javaparser.ast.expr.SingleMemberAnnotationExpr.getMemberValue()
  Line 1285) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1291) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1292) n.getClassExpr() ==> com.github.javaparser.ast.expr.SuperExpr.getClassExpr()
  Line 1294) n.getClassExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1294) n.getClassExpr() ==> com.github.javaparser.ast.expr.SuperExpr.getClassExpr()
  Line 1305) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1306) n.getLabel() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getLabel()
  Line 1308) n.getLabel().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1308) n.getLabel() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getLabel()
  Line 1314) n.getStmts() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getStmts()
  Line 1315) n.getStmts() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getStmts()
  Line 1317) s.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1329) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1331) n.getSelector().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1331) n.getSelector() ==> com.github.javaparser.ast.stmt.SwitchStmt.getSelector()
  Line 1336) n.getEntries() ==> com.github.javaparser.ast.stmt.SwitchStmt.getEntries()
  Line 1337) n.getEntries() ==> com.github.javaparser.ast.stmt.SwitchStmt.getEntries()
  Line 1339) e.accept(this, arg) ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1352) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1354) n.getExpr() ==> com.github.javaparser.ast.stmt.SynchronizedStmt.getExpr()
  Line 1355) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1355) n.getExpr() ==> com.github.javaparser.ast.stmt.SynchronizedStmt.getExpr()
  Line 1362) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1362) n.getBody() ==> com.github.javaparser.ast.stmt.SynchronizedStmt.getBody()
  Line 1372) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1373) n.getClassExpr() ==> com.github.javaparser.ast.expr.ThisExpr.getClassExpr()
  Line 1375) n.getClassExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1375) n.getClassExpr() ==> com.github.javaparser.ast.expr.ThisExpr.getClassExpr()
  Line 1386) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1388) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1388) n.getExpr() ==> com.github.javaparser.ast.stmt.ThrowStmt.getExpr()
  Line 1398) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1399) n.getResources() ==> com.github.javaparser.ast.stmt.TryStmt.getResources()
  Line 1400) n.getResources() ==> com.github.javaparser.ast.stmt.TryStmt.getResources()
  Line 1402) v.accept(this, arg) ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1410) n.getTryBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1410) n.getTryBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getTryBlock()
  Line 1415) n.getCatchs() ==> com.github.javaparser.ast.stmt.TryStmt.getCatchs()
  Line 1416) n.getCatchs() ==> com.github.javaparser.ast.stmt.TryStmt.getCatchs()
  Line 1418) c.accept(this, arg) ==> com.github.javaparser.ast.stmt.CatchClause.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1425) n.getFinallyBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getFinallyBlock()
  Line 1427) n.getFinallyBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1427) n.getFinallyBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getFinallyBlock()
  Line 1438) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1440) n.getTypeDeclaration().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1440) n.getTypeDeclaration() ==> com.github.javaparser.ast.stmt.TypeDeclarationStmt.getTypeDeclaration()
  Line 1450) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1451) n.getTypeBound() ==> com.github.javaparser.ast.type.TypeParameter.getTypeBound()
  Line 1452) n.getTypeBound() ==> com.github.javaparser.ast.type.TypeParameter.getTypeBound()
  Line 1454) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1466) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1468) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1468) n.getExpr() ==> com.github.javaparser.ast.expr.UnaryExpr.getExpr()
  Line 1478) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1484) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1485) n.getAnnotations() ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.getAnnotations()
  Line 1486) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1492) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1492) n.getElementType() ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.getElementType()
  Line 1497) n.getVariables() ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.getVariables()
  Line 1499) v.accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclarator.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1510) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1512) n.getId().accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclaratorId.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1512) n.getId() ==> com.github.javaparser.ast.body.VariableDeclarator.getId()
  Line 1517) n.getInit() ==> com.github.javaparser.ast.body.VariableDeclarator.getInit()
  Line 1519) n.getInit().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1519) n.getInit() ==> com.github.javaparser.ast.body.VariableDeclarator.getInit()
  Line 1530) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1536) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1537) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1538) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1548) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1550) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1550) n.getCondition() ==> com.github.javaparser.ast.stmt.WhileStmt.getCondition()
  Line 1556) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1556) n.getBody() ==> com.github.javaparser.ast.stmt.WhileStmt.getBody()
  Line 1566) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1567) n.getAnnotations() ==> com.github.javaparser.ast.type.Type.getAnnotations()
  Line 1568) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1573) n.getExtends() ==> com.github.javaparser.ast.type.WildcardType.getExtends()
  Line 1575) n.getExtends().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1575) n.getExtends() ==> com.github.javaparser.ast.type.WildcardType.getExtends()
  Line 1581) n.getSuper() ==> com.github.javaparser.ast.type.WildcardType.getSuper()
  Line 1583) n.getSuper().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1583) n.getSuper() ==> com.github.javaparser.ast.type.WildcardType.getSuper()
  Line 1594) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1595) n.getParameters() ==> com.github.javaparser.ast.expr.LambdaExpr.getParameters()
  Line 1596) n.getParameters() ==> com.github.javaparser.ast.expr.LambdaExpr.getParameters()
  Line 1597) a.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1603) n.getBody() ==> com.github.javaparser.ast.expr.LambdaExpr.getBody()
  Line 1604) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1604) n.getBody() ==> com.github.javaparser.ast.expr.LambdaExpr.getBody()
  Line 1614) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1616) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getTypeArguments()
  Line 1617) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getTypeArguments()
  Line 1618) type.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1625) n.getScope() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getScope()
  Line 1626) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1626) n.getScope() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getScope()
  Line 1636) visitComment(n, arg) ==> com.github.javaparser.ast.visitor.GenericVisitorAdapter.visitComment(com.github.javaparser.ast.Node, A)
  Line 1637) n.getType() ==> com.github.javaparser.ast.expr.TypeExpr.getType()
  Line 1638) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1638) n.getType() ==> com.github.javaparser.ast.expr.TypeExpr.getType()
  Line 1648) n.getAnnotations() ==> com.github.javaparser.ast.ArrayBracketPair.getAnnotations()
  Line 1650) a.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1670) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 1671) n.getComment().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)
  Line 1671) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 1673) n.setComment(result) ==> com.github.javaparser.ast.Node.setComment(com.github.javaparser.ast.comments.Comment)
