  Line 59) setName(name) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setName(java.lang.String)
  Line 65) setName(name) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setName(java.lang.String)
  Line 66) setArgs(args) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setArgs(java.util.List<com.github.javaparser.ast.expr.Expression>)
  Line 67) setClassBody(classBody) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setClassBody(java.util.List<com.github.javaparser.ast.body.BodyDeclaration<?>>)
  Line 73) setName(name) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setName(java.lang.String)
  Line 74) setArgs(args) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setArgs(java.util.List<com.github.javaparser.ast.expr.Expression>)
  Line 75) setClassBody(classBody) ==> com.github.javaparser.ast.body.EnumConstantDeclaration.setClassBody(java.util.List<com.github.javaparser.ast.body.BodyDeclaration<?>>)
  Line 80) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.body.EnumConstantDeclaration, A)
  Line 85) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.body.EnumConstantDeclaration, A)
  Line 89) ensureNotNull(args) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 94) ensureNotNull(classBody) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 105) setAsParentNodeOf(this.args) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
  Line 111) setAsParentNodeOf(this.classBody) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
  Line 123) getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 124) getComment() ==> com.github.javaparser.ast.Node.getComment()
  Line 130) getArgs().add(name(valueExpr)) ==> java.util.List.add(E)
  Line 130) getArgs() ==> com.github.javaparser.ast.body.EnumConstantDeclaration.getArgs()
  Line 130) name(valueExpr) ==> com.github.javaparser.ast.expr.NameExpr.name(java.lang.String)
