  Line 58) setImplements(implementsList) ==> com.github.javaparser.ast.body.EnumDeclaration.setImplements(java.util.List<com.github.javaparser.ast.type.ClassOrInterfaceType>)
  Line 59) setEntries(entries) ==> com.github.javaparser.ast.body.EnumDeclaration.setEntries(java.util.List<com.github.javaparser.ast.body.EnumConstantDeclaration>)
  Line 66) setImplements(implementsList) ==> com.github.javaparser.ast.body.EnumDeclaration.setImplements(java.util.List<com.github.javaparser.ast.type.ClassOrInterfaceType>)
  Line 67) setEntries(entries) ==> com.github.javaparser.ast.body.EnumDeclaration.setEntries(java.util.List<com.github.javaparser.ast.body.EnumConstantDeclaration>)
  Line 72) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.body.EnumDeclaration, A)
  Line 78) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.body.EnumDeclaration, A)
  Line 82) ensureNotNull(entries) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 88) ensureNotNull(implementsList) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 94) setAsParentNodeOf(this.entries) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
  Line 101) setAsParentNodeOf(this.implementsList) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
  Line 109) getEntries().add(enumConstant) ==> java.util.List.add(E)
  Line 109) getEntries() ==> com.github.javaparser.ast.body.EnumDeclaration.getEntries()
  Line 110) enumConstant.setParentNode(this) ==> com.github.javaparser.ast.Node.setParentNode(com.github.javaparser.ast.Node)
