in tools/javac/ApiCollector.java [140:160]
public Void visitType(TypeElement e, Api api) {
if (api == null || isNonApi(e)) {
collectAllSupertypes(e.asType(), null);
return super.visitType(e, null);
}
Api.Type type = new Api.Type(api, processingEnv.getElementUtils().getBinaryName(e).toString());
type.modifiers.addAll(getModifiers(e));
type.kind = e.getKind();
collectAllSupertypes(e.asType(), type.supertypes);
type.typeParameters = getTypeParameters(e);
type.deprecation = getDeprecationStatus(e);
type.usage = getUsage(e);
if (type.usage == Api.Usage.NONE &&
!type.modifiers.contains(FINAL) &&
(e.getKind() == ElementKind.CLASS || e.getKind() == ElementKind.INTERFACE)) {
nonAnnotatedUnusedApiTypes.add(e);
}
super.visitType(e, type);
api.types.put(type, type);
return null;
}