/** * (C) 2016 Agilysys NV, LLC. All Rights Reserved. Confidential Information of Agilysys NV, LLC. */ package com.foo; import java.io.File; import java.io.IOException; import com.github.javaparser.JavaParser; import com.github.javaparser.ParseException; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; public class Widget extends com.foo.base.Widget { private static final String PROJECT_ROOT = "/Users/peloquina/dev/javasymbolsolver-issue"; private static final String JAVA_ROOT = PROJECT_ROOT + "/src/main/java"; private static final String CLASS = JAVA_ROOT + "/com/foo/Widget.java"; public static void main(String[] args) throws IOException, ParseException { File src = new File(JAVA_ROOT); CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); combinedTypeSolver.add(new ReflectionTypeSolver(true)); combinedTypeSolver.add(new JavaParserTypeSolver(src)); CompilationUnit compilationUnit = JavaParser.parse(new File(CLASS)); JavaParserFacade parserFacade = JavaParserFacade.get(combinedTypeSolver); MethodDeclaration methodDeclaration = compilationUnit.getNodesByType(MethodDeclaration.class).stream() .filter(node -> node.getName().equals("doSomething")).findAny().orElse(null); methodDeclaration.getNodesByType(MethodCallExpr.class).forEach(parserFacade::solve); } public void doSomething() { doSomethingMore(new Widget()); } public void doSomethingMore(Widget value) { // does something } }