  Line 93) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 93) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 94) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 95) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 95) n.getNameExpr() ==> com.github.javaparser.ast.body.TypeDeclaration.getNameExpr()
  Line 96) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 97) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 98) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 104) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 104) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 105) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 106) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 106) n.getType() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getType()
  Line 107) n.getDefaultValue() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getDefaultValue()
  Line 108) n.getDefaultValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 108) n.getDefaultValue() ==> com.github.javaparser.ast.body.AnnotationMemberDeclaration.getDefaultValue()
  Line 113) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 113) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 114) n.getName().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 114) n.getName() ==> com.github.javaparser.ast.expr.ArrayAccessExpr.getName()
  Line 115) n.getIndex().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 115) n.getIndex() ==> com.github.javaparser.ast.expr.ArrayAccessExpr.getIndex()
  Line 119) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 119) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 120) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 120) n.getType() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getType()
  Line 121) n.getLevels() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getLevels()
  Line 122) level.accept(this, arg) ==> com.github.javaparser.ast.ArrayCreationLevel.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 124) n.getInitializer() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getInitializer()
  Line 125) n.getInitializer().accept(this, arg) ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 125) n.getInitializer() ==> com.github.javaparser.ast.expr.ArrayCreationExpr.getInitializer()
  Line 130) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 130) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 131) n.getValues() ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.getValues()
  Line 132) n.getValues() ==> com.github.javaparser.ast.expr.ArrayInitializerExpr.getValues()
  Line 133) expr.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 139) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 139) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 140) n.getCheck().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 140) n.getCheck() ==> com.github.javaparser.ast.stmt.AssertStmt.getCheck()
  Line 141) n.getMessage() ==> com.github.javaparser.ast.stmt.AssertStmt.getMessage()
  Line 142) n.getMessage().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 142) n.getMessage() ==> com.github.javaparser.ast.stmt.AssertStmt.getMessage()
  Line 147) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 147) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 148) n.getTarget().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 148) n.getTarget() ==> com.github.javaparser.ast.expr.AssignExpr.getTarget()
  Line 149) n.getValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 149) n.getValue() ==> com.github.javaparser.ast.expr.AssignExpr.getValue()
  Line 153) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 153) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 154) n.getLeft().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 154) n.getLeft() ==> com.github.javaparser.ast.expr.BinaryExpr.getLeft()
  Line 155) n.getRight().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 155) n.getRight() ==> com.github.javaparser.ast.expr.BinaryExpr.getRight()
  Line 162) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 162) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 163) n.getStmts() ==> com.github.javaparser.ast.stmt.BlockStmt.getStmts()
  Line 164) n.getStmts() ==> com.github.javaparser.ast.stmt.BlockStmt.getStmts()
  Line 165) s.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 171) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 171) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 175) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 175) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 179) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 179) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 180) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 180) n.getType() ==> com.github.javaparser.ast.expr.CastExpr.getType()
  Line 181) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 181) n.getExpr() ==> com.github.javaparser.ast.expr.CastExpr.getExpr()
  Line 185) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 185) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 186) n.getParam().accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 186) n.getParam() ==> com.github.javaparser.ast.stmt.CatchClause.getParam()
  Line 187) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 187) n.getBody() ==> com.github.javaparser.ast.stmt.CatchClause.getBody()
  Line 191) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 191) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 195) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 195) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 196) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 196) n.getType() ==> com.github.javaparser.ast.expr.ClassExpr.getType()
  Line 200) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 200) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 201) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 202) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 202) n.getNameExpr() ==> com.github.javaparser.ast.body.TypeDeclaration.getNameExpr()
  Line 203) n.getTypeParameters() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getTypeParameters()
  Line 204) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 206) n.getExtends() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getExtends()
  Line 207) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 209) n.getImplements() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.getImplements()
  Line 210) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 212) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 213) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 218) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 218) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 219) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 220) n.getScope() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getScope()
  Line 221) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 221) n.getScope() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getScope()
  Line 223) n.getTypeArguments() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getTypeArguments()
  Line 224) n.getTypeArguments() ==> com.github.javaparser.ast.type.ClassOrInterfaceType.getTypeArguments()
  Line 225) t.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 231) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 231) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 232) n.getPackage() ==> com.github.javaparser.ast.CompilationUnit.getPackage()
  Line 233) n.getPackage().accept(this, arg) ==> com.github.javaparser.ast.PackageDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 233) n.getPackage() ==> com.github.javaparser.ast.CompilationUnit.getPackage()
  Line 235) n.getImports() ==> com.github.javaparser.ast.CompilationUnit.getImports()
  Line 236) n.getImports() ==> com.github.javaparser.ast.CompilationUnit.getImports()
  Line 237) i.accept(this, arg) ==> com.github.javaparser.ast.ImportDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 240) n.getTypes() ==> com.github.javaparser.ast.CompilationUnit.getTypes()
  Line 241) n.getTypes() ==> com.github.javaparser.ast.CompilationUnit.getTypes()
  Line 242) typeDeclaration.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 248) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 248) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 249) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 249) n.getCondition() ==> com.github.javaparser.ast.expr.ConditionalExpr.getCondition()
  Line 250) n.getThenExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 250) n.getThenExpr() ==> com.github.javaparser.ast.expr.ConditionalExpr.getThenExpr()
  Line 251) n.getElseExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 251) n.getElseExpr() ==> com.github.javaparser.ast.expr.ConditionalExpr.getElseExpr()
  Line 255) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 255) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 256) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 257) n.getTypeParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()
  Line 258) n.getTypeParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()
  Line 259) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 262) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 262) n.getNameExpr() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getNameExpr()
  Line 263) n.getParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()
  Line 264) n.getParameters() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()
  Line 265) p.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 268) n.getThrows() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()
  Line 269) n.getThrows() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()
  Line 270) name.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 273) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 273) n.getBody() ==> com.github.javaparser.ast.body.ConstructorDeclaration.getBody()
  Line 277) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 277) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 281) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 281) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 282) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 282) n.getBody() ==> com.github.javaparser.ast.stmt.DoStmt.getBody()
  Line 283) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 283) n.getCondition() ==> com.github.javaparser.ast.stmt.DoStmt.getCondition()
  Line 287) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 287) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 291) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 291) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 295) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 295) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 299) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 299) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 300) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 300) n.getNameExpr() ==> com.github.javaparser.ast.body.TypeDeclaration.getNameExpr()
  Line 304) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 304) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 305) n.getInner().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 305) n.getInner() ==> com.github.javaparser.ast.expr.EnclosedExpr.getInner()
  Line 309) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 309) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 310) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 311) n.getArgs() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getArgs()
  Line 312) n.getArgs() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getArgs()
  Line 313) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 316) n.getClassBody() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getClassBody()
  Line 317) n.getClassBody() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getClassBody()
  Line 318) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 324) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 324) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 325) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 326) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 326) n.getNameExpr() ==> com.github.javaparser.ast.body.TypeDeclaration.getNameExpr()
  Line 327) n.getImplements() ==> com.github.javaparser.ast.body.EnumDeclaration.getImplements()
  Line 328) n.getImplements() ==> com.github.javaparser.ast.body.EnumDeclaration.getImplements()
  Line 329) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 332) n.getEntries() ==> com.github.javaparser.ast.body.EnumDeclaration.getEntries()
  Line 333) n.getEntries() ==> com.github.javaparser.ast.body.EnumDeclaration.getEntries()
  Line 334) e.accept(this, arg) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 337) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 338) n.getMembers() ==> com.github.javaparser.ast.body.TypeDeclaration.getMembers()
  Line 339) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 345) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 345) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 346) n.isThis() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.isThis()
  Line 346) n.getExpr() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getExpr()
  Line 347) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 347) n.getExpr() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getExpr()
  Line 349) n.getTypeArguments() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getTypeArguments()
  Line 350) n.getTypeArguments() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getTypeArguments()
  Line 351) t.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 354) n.getArgs() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getArgs()
  Line 355) n.getArgs() ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.getArgs()
  Line 356) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 362) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 362) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 363) n.getExpression().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 363) n.getExpression() ==> com.github.javaparser.ast.stmt.ExpressionStmt.getExpression()
  Line 367) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 367) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 368) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 368) n.getScope() ==> com.github.javaparser.ast.expr.FieldAccessExpr.getScope()
  Line 369) n.getFieldExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 369) n.getFieldExpr() ==> com.github.javaparser.ast.expr.FieldAccessExpr.getFieldExpr()
  Line 373) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 373) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 374) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 375) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 375) n.getElementType() ==> com.github.javaparser.ast.body.FieldDeclaration.getElementType()
  Line 376) n.getVariables() ==> com.github.javaparser.ast.body.FieldDeclaration.getVariables()
  Line 377) var.accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclarator.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 382) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 382) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 383) n.getVariable().accept(this, arg) ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 383) n.getVariable() ==> com.github.javaparser.ast.stmt.ForeachStmt.getVariable()
  Line 384) n.getIterable().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 384) n.getIterable() ==> com.github.javaparser.ast.stmt.ForeachStmt.getIterable()
  Line 385) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 385) n.getBody() ==> com.github.javaparser.ast.stmt.ForeachStmt.getBody()
  Line 389) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 389) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 390) n.getInit() ==> com.github.javaparser.ast.stmt.ForStmt.getInit()
  Line 391) n.getInit() ==> com.github.javaparser.ast.stmt.ForStmt.getInit()
  Line 392) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 395) n.getCompare() ==> com.github.javaparser.ast.stmt.ForStmt.getCompare()
  Line 396) n.getCompare().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 396) n.getCompare() ==> com.github.javaparser.ast.stmt.ForStmt.getCompare()
  Line 398) n.getUpdate() ==> com.github.javaparser.ast.stmt.ForStmt.getUpdate()
  Line 399) n.getUpdate() ==> com.github.javaparser.ast.stmt.ForStmt.getUpdate()
  Line 400) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 403) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 403) n.getBody() ==> com.github.javaparser.ast.stmt.ForStmt.getBody()
  Line 407) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 407) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 408) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 408) n.getCondition() ==> com.github.javaparser.ast.stmt.IfStmt.getCondition()
  Line 409) n.getThenStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 409) n.getThenStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getThenStmt()
  Line 410) n.getElseStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getElseStmt()
  Line 411) n.getElseStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 411) n.getElseStmt() ==> com.github.javaparser.ast.stmt.IfStmt.getElseStmt()
  Line 416) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 416) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 417) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 417) n.getName() ==> com.github.javaparser.ast.ImportDeclaration.getName()
  Line 421) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 421) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 422) n.getBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 422) n.getBlock() ==> com.github.javaparser.ast.body.InitializerDeclaration.getBlock()
  Line 426) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 426) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 427) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 427) n.getExpr() ==> com.github.javaparser.ast.expr.InstanceOfExpr.getExpr()
  Line 428) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 428) n.getType() ==> com.github.javaparser.ast.expr.InstanceOfExpr.getType()
  Line 432) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 432) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 436) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 436) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 443) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 443) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 444) n.getStmt().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 444) n.getStmt() ==> com.github.javaparser.ast.stmt.LabeledStmt.getStmt()
  Line 451) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 451) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 455) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 455) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 459) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 459) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 460) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 460) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 464) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 464) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 465) n.getValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 465) n.getValue() ==> com.github.javaparser.ast.expr.MemberValuePair.getValue()
  Line 469) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 469) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 470) n.getScope() ==> com.github.javaparser.ast.expr.MethodCallExpr.getScope()
  Line 471) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 471) n.getScope() ==> com.github.javaparser.ast.expr.MethodCallExpr.getScope()
  Line 473) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodCallExpr.getTypeArguments()
  Line 474) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodCallExpr.getTypeArguments()
  Line 475) t.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 478) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 478) n.getNameExpr() ==> com.github.javaparser.ast.expr.MethodCallExpr.getNameExpr()
  Line 479) n.getArgs() ==> com.github.javaparser.ast.expr.MethodCallExpr.getArgs()
  Line 480) n.getArgs() ==> com.github.javaparser.ast.expr.MethodCallExpr.getArgs()
  Line 481) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 487) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 487) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 488) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 489) n.getTypeParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getTypeParameters()
  Line 490) n.getTypeParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getTypeParameters()
  Line 491) t.accept(this, arg) ==> com.github.javaparser.ast.type.TypeParameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 494) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 494) n.getElementType() ==> com.github.javaparser.ast.body.MethodDeclaration.getElementType()
  Line 495) n.getNameExpr().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 495) n.getNameExpr() ==> com.github.javaparser.ast.body.MethodDeclaration.getNameExpr()
  Line 496) n.getParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getParameters()
  Line 497) n.getParameters() ==> com.github.javaparser.ast.body.MethodDeclaration.getParameters()
  Line 498) p.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 501) n.getThrows() ==> com.github.javaparser.ast.body.MethodDeclaration.getThrows()
  Line 502) n.getThrows() ==> com.github.javaparser.ast.body.MethodDeclaration.getThrows()
  Line 503) name.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 506) n.getBody() ==> com.github.javaparser.ast.body.MethodDeclaration.getBody()
  Line 507) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 507) n.getBody() ==> com.github.javaparser.ast.body.MethodDeclaration.getBody()
  Line 512) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 512) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 516) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 516) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 517) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 517) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 518) n.getPairs() ==> com.github.javaparser.ast.expr.NormalAnnotationExpr.getPairs()
  Line 519) n.getPairs() ==> com.github.javaparser.ast.expr.NormalAnnotationExpr.getPairs()
  Line 520) m.accept(this, arg) ==> com.github.javaparser.ast.expr.MemberValuePair.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 526) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 526) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 530) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 530) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 531) n.getScope() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getScope()
  Line 532) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 532) n.getScope() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getScope()
  Line 534) n.getTypeArguments() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getTypeArguments()
  Line 535) n.getTypeArguments() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getTypeArguments()
  Line 536) t.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 539) n.getType().accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 539) n.getType() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getType()
  Line 540) n.getArgs() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getArgs()
  Line 541) n.getArgs() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getArgs()
  Line 542) e.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 545) n.getAnonymousClassBody() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getAnonymousClassBody()
  Line 546) n.getAnonymousClassBody() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getAnonymousClassBody()
  Line 547) member.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 553) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 553) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 554) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 555) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 555) n.getName() ==> com.github.javaparser.ast.PackageDeclaration.getName()
  Line 559) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 559) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 560) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 561) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 561) n.getElementType() ==> com.github.javaparser.ast.body.Parameter.getElementType()
  Line 562) n.getId().accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclaratorId.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 562) n.getId() ==> com.github.javaparser.ast.body.Parameter.getId()
  Line 566) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 566) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 567) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 571) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 571) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 572) n.getQualifier().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 572) n.getQualifier() ==> com.github.javaparser.ast.expr.QualifiedNameExpr.getQualifier()
  Line 577) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 577) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 578) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 579) n.getComponentType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 579) n.getComponentType() ==> com.github.javaparser.ast.type.ArrayType.getComponentType()
  Line 584) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 584) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 585) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 586) n.getDimension() ==> com.github.javaparser.ast.ArrayCreationLevel.getDimension()
  Line 587) n.getDimension().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 587) n.getDimension() ==> com.github.javaparser.ast.ArrayCreationLevel.getDimension()
  Line 592) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 592) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 593) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 594) n.getElements() ==> com.github.javaparser.ast.type.IntersectionType.getElements()
  Line 595) element.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 600) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 600) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 601) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 602) n.getElements() ==> com.github.javaparser.ast.type.UnionType.getElements()
  Line 603) element.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 608) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 608) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 609) n.getExpr() ==> com.github.javaparser.ast.stmt.ReturnStmt.getExpr()
  Line 610) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 610) n.getExpr() ==> com.github.javaparser.ast.stmt.ReturnStmt.getExpr()
  Line 615) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 615) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 616) n.getName().accept(this, arg) ==> com.github.javaparser.ast.expr.NameExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 616) n.getName() ==> com.github.javaparser.ast.expr.AnnotationExpr.getName()
  Line 617) n.getMemberValue().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 617) n.getMemberValue() ==> com.github.javaparser.ast.expr.SingleMemberAnnotationExpr.getMemberValue()
  Line 621) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 621) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 625) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 625) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 626) n.getClassExpr() ==> com.github.javaparser.ast.expr.SuperExpr.getClassExpr()
  Line 627) n.getClassExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 627) n.getClassExpr() ==> com.github.javaparser.ast.expr.SuperExpr.getClassExpr()
  Line 632) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 632) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 633) n.getLabel() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getLabel()
  Line 634) n.getLabel().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 634) n.getLabel() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getLabel()
  Line 636) n.getStmts() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getStmts()
  Line 637) n.getStmts() ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.getStmts()
  Line 638) s.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 644) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 644) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 645) n.getSelector().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 645) n.getSelector() ==> com.github.javaparser.ast.stmt.SwitchStmt.getSelector()
  Line 646) n.getEntries() ==> com.github.javaparser.ast.stmt.SwitchStmt.getEntries()
  Line 647) n.getEntries() ==> com.github.javaparser.ast.stmt.SwitchStmt.getEntries()
  Line 648) e.accept(this, arg) ==> com.github.javaparser.ast.stmt.SwitchEntryStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 654) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 654) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 655) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 655) n.getExpr() ==> com.github.javaparser.ast.stmt.SynchronizedStmt.getExpr()
  Line 656) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 656) n.getBody() ==> com.github.javaparser.ast.stmt.SynchronizedStmt.getBody()
  Line 660) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 660) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 661) n.getClassExpr() ==> com.github.javaparser.ast.expr.ThisExpr.getClassExpr()
  Line 662) n.getClassExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 662) n.getClassExpr() ==> com.github.javaparser.ast.expr.ThisExpr.getClassExpr()
  Line 667) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 667) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 668) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 668) n.getExpr() ==> com.github.javaparser.ast.stmt.ThrowStmt.getExpr()
  Line 672) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 672) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 673) n.getResources() ==> com.github.javaparser.ast.stmt.TryStmt.getResources()
  Line 674) n.getResources() ==> com.github.javaparser.ast.stmt.TryStmt.getResources()
  Line 675) v.accept(this, arg) ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 678) n.getTryBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 678) n.getTryBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getTryBlock()
  Line 679) n.getCatchs() ==> com.github.javaparser.ast.stmt.TryStmt.getCatchs()
  Line 680) n.getCatchs() ==> com.github.javaparser.ast.stmt.TryStmt.getCatchs()
  Line 681) c.accept(this, arg) ==> com.github.javaparser.ast.stmt.CatchClause.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 684) n.getFinallyBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getFinallyBlock()
  Line 685) n.getFinallyBlock().accept(this, arg) ==> com.github.javaparser.ast.stmt.BlockStmt.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 685) n.getFinallyBlock() ==> com.github.javaparser.ast.stmt.TryStmt.getFinallyBlock()
  Line 690) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 690) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 691) n.getTypeDeclaration().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 691) n.getTypeDeclaration() ==> com.github.javaparser.ast.stmt.TypeDeclarationStmt.getTypeDeclaration()
  Line 695) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 695) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 696) n.getTypeBound() ==> com.github.javaparser.ast.type.TypeParameter.getTypeBound()
  Line 697) n.getTypeBound() ==> com.github.javaparser.ast.type.TypeParameter.getTypeBound()
  Line 698) c.accept(this, arg) ==> com.github.javaparser.ast.type.ClassOrInterfaceType.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 704) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 704) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 705) n.getExpr().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 705) n.getExpr() ==> com.github.javaparser.ast.expr.UnaryExpr.getExpr()
  Line 709) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 709) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 713) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 713) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 714) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 715) n.getElementType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 715) n.getElementType() ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.getElementType()
  Line 716) n.getVariables() ==> com.github.javaparser.ast.expr.VariableDeclarationExpr.getVariables()
  Line 717) v.accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclarator.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 722) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 722) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 723) n.getId().accept(this, arg) ==> com.github.javaparser.ast.body.VariableDeclaratorId.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 723) n.getId() ==> com.github.javaparser.ast.body.VariableDeclarator.getId()
  Line 724) n.getInit() ==> com.github.javaparser.ast.body.VariableDeclarator.getInit()
  Line 725) n.getInit().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 725) n.getInit() ==> com.github.javaparser.ast.body.VariableDeclarator.getInit()
  Line 730) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 730) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 734) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 734) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 735) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 740) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 740) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 741) n.getCondition().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 741) n.getCondition() ==> com.github.javaparser.ast.stmt.WhileStmt.getCondition()
  Line 742) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 742) n.getBody() ==> com.github.javaparser.ast.stmt.WhileStmt.getBody()
  Line 746) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 746) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 747) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 748) n.getExtends() ==> com.github.javaparser.ast.type.WildcardType.getExtends()
  Line 749) n.getExtends().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 749) n.getExtends() ==> com.github.javaparser.ast.type.WildcardType.getExtends()
  Line 751) n.getSuper() ==> com.github.javaparser.ast.type.WildcardType.getSuper()
  Line 752) n.getSuper().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 752) n.getSuper() ==> com.github.javaparser.ast.type.WildcardType.getSuper()
  Line 758) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 758) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 759) n.getParameters() ==> com.github.javaparser.ast.expr.LambdaExpr.getParameters()
  Line 760) n.getParameters() ==> com.github.javaparser.ast.expr.LambdaExpr.getParameters()
  Line 761) a.accept(this, arg) ==> com.github.javaparser.ast.body.Parameter.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 764) n.getBody() ==> com.github.javaparser.ast.expr.LambdaExpr.getBody()
  Line 765) n.getBody().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 765) n.getBody() ==> com.github.javaparser.ast.expr.LambdaExpr.getBody()
  Line 771) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 771) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 772) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getTypeArguments()
  Line 773) n.getTypeArguments() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getTypeArguments()
  Line 774) t.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 777) n.getScope() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getScope()
  Line 778) n.getScope().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 778) n.getScope() ==> com.github.javaparser.ast.expr.MethodReferenceExpr.getScope()
  Line 784) visitComment(n.getComment(), arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitComment(com.github.javaparser.ast.comments.Comment, A)
  Line 784) n.getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 785) n.getType() ==> com.github.javaparser.ast.expr.TypeExpr.getType()
  Line 786) n.getType().accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 786) n.getType() ==> com.github.javaparser.ast.expr.TypeExpr.getType()
  Line 792) visitAnnotations(n, arg) ==> com.github.javaparser.ast.visitor.VoidVisitorAdapter.visitAnnotations(com.github.javaparser.ast.nodeTypes.NodeWithAnnotations<?>, A)
  Line 797) n.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
  Line 802) n.getAnnotations() ==> com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.getAnnotations()
  Line 803) annotation.accept(this, arg) ==> com.github.javaparser.ast.Node.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)
