docs: private static Method findMatchingMethod(Method originalMethod, String methodName, Type classToSearch, ResolutionContext ctx, Class<?> originalClass) {
          // Check self
          Method result = findMethodOnClass(originalMethod, methodName, classToSearch, ctx, originalClass);
  
          // Check interfaces
          if (result == null) {
              for (Type iface : getClass(classToSearch).getGenericInterfaces()) {
                  ctx.push(iface);
                  result = findMatchingMethod(originalMethod, methodName, iface, ctx, originalClass);
                  ctx.pop();
                  if (result != null) {
                      break;
                  }
              }
          }
  
          // Check superclass
          if (result == null) {
              Type superclass = getClass(classToSearch).getGenericSuperclass();
              if (superclass != null) {
                  ctx.push(superclass);
                  result = findMatchingMethod(originalMethod, methodName, superclass, ctx, originalClass);
                  ctx.pop();
              }
          }
  
          return result;
      }