  Line 47) setScope(scope) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setScope(com.github.javaparser.ast.expr.Expression)
  Line 48) setField(field) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setField(java.lang.String)
  Line 53) setScope(scope) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setScope(com.github.javaparser.ast.expr.Expression)
  Line 54) setTypeArguments(typeArguments) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setTypeArguments(java.util.List<com.github.javaparser.ast.type.Type<?>>)
  Line 55) setField(field) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setField(java.lang.String)
  Line 59) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.expr.FieldAccessExpr, A)
  Line 63) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.expr.FieldAccessExpr, A)
  Line 67) field.getName() ==> com.github.javaparser.ast.expr.NameExpr.getName()
  Line 79) setFieldExpr(new NameExpr(field)) ==> com.github.javaparser.ast.expr.FieldAccessExpr.setFieldExpr(com.github.javaparser.ast.expr.NameExpr)
  Line 85) setAsParentNodeOf(this.field) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 91) setAsParentNodeOf(this.scope) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 104) setAsParentNodeOf(this.typeArguments) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)
