in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacTreeRefScanner.java [301:325]
private static boolean isInheritorOrSelf(TypeElement aClass, TypeElement baseClass) {
if (aClass == baseClass) return true;
TypeMirror superType = aClass.getSuperclass();
if (isTypeCorrespondsToElement(superType, baseClass)) {
return true;
}
List<? extends TypeMirror> interfaces = aClass.getInterfaces();
for (TypeMirror type : interfaces) {
if (isTypeCorrespondsToElement(type, baseClass)) {
return true;
}
}
if (isInheritorOrSelf(superType, baseClass)) return true;
for (TypeMirror type : interfaces) {
if (isInheritorOrSelf(type, baseClass)) {
return true;
}
}
return false;
}