  Line 55) setId(id) ==> com.github.javaparser.ast.body.VariableDeclarator.setId(com.github.javaparser.ast.body.VariableDeclaratorId)
  Line 59) setId(new VariableDeclaratorId(variableName)) ==> com.github.javaparser.ast.body.VariableDeclarator.setId(com.github.javaparser.ast.body.VariableDeclaratorId)
  Line 71) setId(id) ==> com.github.javaparser.ast.body.VariableDeclarator.setId(com.github.javaparser.ast.body.VariableDeclaratorId)
  Line 72) setInit(init) ==> com.github.javaparser.ast.body.VariableDeclarator.setInit(com.github.javaparser.ast.expr.Expression)
  Line 76) setId(new VariableDeclaratorId(variableName)) ==> com.github.javaparser.ast.body.VariableDeclarator.setId(com.github.javaparser.ast.body.VariableDeclaratorId)
  Line 77) setInit(init) ==> com.github.javaparser.ast.body.VariableDeclarator.setInit(com.github.javaparser.ast.expr.Expression)
  Line 82) setId(id) ==> com.github.javaparser.ast.body.VariableDeclarator.setId(com.github.javaparser.ast.body.VariableDeclaratorId)
  Line 83) setInit(init) ==> com.github.javaparser.ast.body.VariableDeclarator.setInit(com.github.javaparser.ast.expr.Expression)
  Line 88) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.GenericVisitor.visit(com.github.javaparser.ast.body.VariableDeclarator, A)
  Line 93) v.visit(this, arg) ==> com.github.javaparser.ast.visitor.VoidVisitor.visit(com.github.javaparser.ast.body.VariableDeclarator, A)
  Line 106) setAsParentNodeOf(this.id) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 112) setAsParentNodeOf(this.init) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 121) setAsParentNodeOf(this.init) ==> com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
  Line 128) getParentNodeOfType(NodeWithElementType.class) ==> com.github.javaparser.ast.Node.getParentNodeOfType(java.lang.Class<T>)
  Line 130) wrapInArrayTypes(elementType.getElementType(), elementType.getArrayBracketPairsAfterElementType(), getId().getArrayBracketPairsAfterId()) ==> com.github.javaparser.ast.type.ArrayType.wrapInArrayTypes(com.github.javaparser.ast.type.Type, java.util.List<com.github.javaparser.ast.ArrayBracketPair>...)
  Line 130) elementType.getElementType() ==> com.github.javaparser.ast.nodeTypes.NodeWithElementType.getElementType()
  Line 131) elementType.getArrayBracketPairsAfterElementType() ==> com.github.javaparser.ast.nodeTypes.NodeWithElementType.getArrayBracketPairsAfterElementType()
  Line 132) getId().getArrayBracketPairsAfterId() ==> com.github.javaparser.ast.body.VariableDeclaratorId.getArrayBracketPairsAfterId()
  Line 132) getId() ==> com.github.javaparser.ast.body.VariableDeclarator.getId()
  Line 137) ArrayType.unwrapArrayTypes(type) ==> com.github.javaparser.ast.type.ArrayType.unwrapArrayTypes(com.github.javaparser.ast.type.Type)
  Line 138) getParentNodeOfType(NodeWithElementType.class) ==> com.github.javaparser.ast.Node.getParentNodeOfType(java.lang.Class<T>)
  Line 142) nodeWithElementType.setElementType(unwrapped.a) ==> com.github.javaparser.ast.nodeTypes.NodeWithElementType.setElementType(com.github.javaparser.ast.type.Type<?>)
  Line 143) nodeWithElementType.setArrayBracketPairsAfterElementType(null) ==> com.github.javaparser.ast.nodeTypes.NodeWithElementType.setArrayBracketPairsAfterElementType(java.util.List<com.github.javaparser.ast.ArrayBracketPair>)
  Line 144) getId().setArrayBracketPairsAfterId(unwrapped.b) ==> com.github.javaparser.ast.body.VariableDeclaratorId.setArrayBracketPairsAfterId(java.util.List<com.github.javaparser.ast.ArrayBracketPair>)
  Line 144) getId() ==> com.github.javaparser.ast.body.VariableDeclarator.getId()
