in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacTreeRefScanner.java [152:172]
public Tree visitMethodInvocation(MethodInvocationTree node, JavacReferenceCollectorListener.ReferenceCollector collector) {
if (node.getMethodSelect() instanceof IdentifierTree) {
Element element = collector.getReferencedElement(node.getMethodSelect());
if (element != null && element.getKind() != ElementKind.CONSTRUCTOR) {
Set<Modifier> modifiers = element.getModifiers();
if (!modifiers.contains(Modifier.STATIC) && !modifiers.contains(Modifier.PRIVATE)) {
final TypeElement currentClass = getCurrentEnclosingTypeElement();
TypeElement actualQualifier = findQualifier(element, currentClass);
//means java.lang.Object's method called from an interface
if (actualQualifier == null) {
actualQualifier = currentClass;
}
collector.sinkReference(collector.asJavacRef(currentClass, element, actualQualifier));
scan(node.getTypeArguments(), collector);
scan(node.getArguments(), collector);
return null;
}
}
}
return super.visitMethodInvocation(node, collector);
}