in javac-ast-extension/src/org/jetbrains/jps/javac/ast/api/JavacRef.java [257:280]
public static JavacElementRefBase fromElement(@Nullable String containigClass, Element element, Element qualifier, JavacNameTable nameTableCache, @Nullable ImportProperties importProps) {
if (qualifier != null) {
TypeMirror type = qualifier.asType();
if (!isValidType(type)) {
return null;
}
}
if (element instanceof TypeElement) {
return new JavacElementClassImpl(element, qualifier, nameTableCache, importProps);
}
else if (element instanceof VariableElement) {
if (qualifier == null && !checkEnclosingElement(element)) return null;
return new JavacElementFieldImpl(containigClass, element, qualifier, nameTableCache, importProps);
}
else if (element instanceof ExecutableElement) {
if (qualifier == null && !checkEnclosingElement(element)) return null;
return new JavacElementMethodImpl(containigClass, element, qualifier, nameTableCache, importProps);
}
else if (element == null || element.getKind() == ElementKind.OTHER || element.getKind() == ElementKind.TYPE_PARAMETER) {
// javac reserved symbol kind (e.g: com.sun.tools.javac.comp.Resolve.ResolveError)
return null;
}
throw new AssertionError("unexpected element: " + element + " class: " + element.getClass());
}