  Line 50) setLevels(levels) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setLevels(java.util.List<com.github.javaparser.ast.ArrayCreationLevel>)
  Line 51) setType(type) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setType(com.github.javaparser.ast.type.Type)
  Line 52) setInitializer(initializer) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setInitializer(com.github.javaparser.ast.expr.ArrayInitializerExpr)
  Line 57) setLevels(levels) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setLevels(java.util.List<com.github.javaparser.ast.ArrayCreationLevel>)
  Line 58) setType(type) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setType(com.github.javaparser.ast.type.Type)
  Line 59) setInitializer(initializer) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setInitializer(com.github.javaparser.ast.expr.ArrayInitializerExpr)
  Line 63) setType(type) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setType(com.github.javaparser.ast.type.Type)
  Line 64) setInitializer(null) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setInitializer(com.github.javaparser.ast.expr.ArrayInitializerExpr)
  Line 69) setType(type) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setType(com.github.javaparser.ast.type.Type)
  Line 70) setInitializer(null) ==> com.github.javaparser.ast.expr.ArrayCreationExpr.setInitializer(com.github.javaparser.ast.expr.ArrayInitializerExpr)
  Line 75) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.expr.ArrayCreationExpr, A)
  Line 80) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.expr.ArrayCreationExpr, A)
  Line 94) setAsParentNodeOf(this.initializer) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 101) setAsParentNodeOf(this.type) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 106) ensureNotNull(levels) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 112) setAsParentNodeOf(levels) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
