  Line 79) ((ObjectCreationExpr) node).getAnonymousClassBody().isPresent() ==> java.util.Optional.isPresent()
  Line 79) ((ObjectCreationExpr) node).getAnonymousClassBody() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getAnonymousClassBody()
  Line 84) node.getParentNode().isPresent() ==> java.util.Optional.isPresent()
  Line 84) node.getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 84) node.getParentNode().get() ==> java.util.Optional.get()
  Line 84) node.getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 84) node.getParentNode().get().getParentNode().isPresent() ==> java.util.Optional.isPresent()
  Line 84) node.getParentNode().get().getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 84) node.getParentNode().get() ==> java.util.Optional.get()
  Line 84) node.getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 85) getContext(node.getParentNode().get().getParentNode().get(), typeSolver) ==> com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.getContext(com.github.javaparser.ast.Node, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 85) node.getParentNode().get().getParentNode().get() ==> java.util.Optional.get()
  Line 85) node.getParentNode().get().getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 85) node.getParentNode().get() ==> java.util.Optional.get()
  Line 85) node.getParentNode() ==> com.github.javaparser.ast.Node.getParentNode()
  Line 88) getParentNode(node) ==> com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode(com.github.javaparser.ast.Node)
  Line 89) ((ObjectCreationExpr) parentNode).getType() ==> com.github.javaparser.ast.expr.ObjectCreationExpr.getType()
  Line 90) getContext(getParentNode(parentNode), typeSolver) ==> com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.getContext(com.github.javaparser.ast.Node, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 90) getParentNode(parentNode) ==> com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode(com.github.javaparser.ast.Node)
  Line 92) getContext(parentNode, typeSolver) ==> com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.getContext(com.github.javaparser.ast.Node, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 103) expressionStmt.getExpression() ==> com.github.javaparser.ast.stmt.ExpressionStmt.getExpression()
  Line 104) expressionStmt.getExpression() ==> com.github.javaparser.ast.stmt.ExpressionStmt.getExpression()
  Line 112) foreachStmt.getVariable() ==> com.github.javaparser.ast.stmt.ForeachStmt.getVariable()
  Line 120) ((ClassOrInterfaceDeclaration) node).isInterface() ==> com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.isInterface()
  Line 132) node.getClass().getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 132) node.getClass() ==> java.lang.Object.getClass()
