in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacTreeRefScanner.java [128:149]
private void processMemberDefinition(JavacReferenceCollectorListener.ReferenceCollector refCollector,
JavacRef.JavacElementRefBase ref,
Element element,
TypeMirror retType) {
refCollector.sinkReference(ref);
byte dimension = 0;
if (retType.getKind() == TypeKind.ARRAY) {
retType = ((ArrayType)retType).getComponentType();
dimension = 1;
}
else if (retType.getKind() == TypeKind.DECLARED) {
List<? extends TypeMirror> typeArguments = ((DeclaredType)retType).getTypeArguments();
if (typeArguments.size() == 1 && isIterator((TypeElement)((DeclaredType)retType).asElement(), refCollector)) {
dimension = -1;
retType = typeArguments.get(0);
}
}
final JavacRef.JavacElementRefBase returnType = refCollector.asJavacRef(getCurrentEnclosingTypeElement(), retType);
if (returnType != null) {
refCollector.sinkDeclaration(new JavacDef.JavacMemberDef(ref, returnType, dimension, isStatic(element)));
}
}