private boolean findSuperDeclarations(ClassNode cls, ClassNode declaringClass, MethodNode method) throws IOException {
if (cls == null)
return false;
boolean foundMethod = false;
MethodNode m;
if ((m = getMethod(method, cls)) != null) {
foundMethod = true;
if (!ASMUtil.equals(cls, declaringClass) && !isSuspendable(cls, m)) {
log("Found parent of annotated method: " + declaringClass.name + "." + method.name + method.signature + " in " + cls.name, Project.MSG_VERBOSE);
results.add(cls.name.replace('/', '.') + '.' + method.name);
}
}
boolean methodInParent = false;
methodInParent |= findSuperDeclarations(getClassNode(cls.superName, cl, true), declaringClass, method);
for (String iface : (List<String>) cls.interfaces)
methodInParent |= findSuperDeclarations(getClassNode(iface, cl, true), declaringClass, method);
if (!foundMethod && methodInParent) {
log("Found parent of annotated method in a parent of: " + declaringClass.name + "." + method.name + method.signature + " in " + cls.name, Project.MSG_VERBOSE);
results.add(cls.name.replace('/', '.') + '.' + method.name);
}
return foundMethod | methodInParent;
}