  Line 53) setThis(isThis) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setThis(boolean)
  Line 54) setExpr(expr) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setExpr(com.github.javaparser.ast.expr.Expression)
  Line 55) setArgs(args) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setArgs(java.util.List<com.github.javaparser.ast.expr.Expression>)
  Line 62) setTypeArguments(typeArguments) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setTypeArguments(java.util.List<com.github.javaparser.ast.type.Type<?>>)
  Line 63) setThis(isThis) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setThis(boolean)
  Line 64) setExpr(expr) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setExpr(com.github.javaparser.ast.expr.Expression)
  Line 65) setArgs(args) ==> com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt.setArgs(java.util.List<com.github.javaparser.ast.expr.Expression>)
  Line 70) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt, A)
  Line 75) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt, A)
  Line 79) ensureNotNull(args) ==> com.github.javaparser.utils.Utils.ensureNotNull(java.util.List<T>)
  Line 93) setAsParentNodeOf(this.args) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
  Line 99) setAsParentNodeOf(this.expr) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 116) setAsParentNodeOf(this.typeArguments) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
