public static boolean methodMatches(@NotNull PsiMethod psiMethod,
                                      String className,
                                      @Nullable String name,
                                      String signature,
                                      DebugProcessImpl process) {
    PsiClass containingClass = psiMethod.getContainingClass();
    try {
      if (containingClass != null &&
          (name == null || JVMNameUtil.getJVMMethodName(psiMethod).equals(name)) &&
          JVMNameUtil.getJVMSignature(psiMethod).getName(process).equals(signature)) {
        String methodClassName = JVMNameUtil.getClassVMName(containingClass);
        if (Objects.equals(methodClassName, className)) {
          return true;
        }
        if (methodClassName != null) {
          if (ContainerUtil.exists(process.getVirtualMachineProxy().classesByName(className), t -> instanceOf(t, methodClassName))) {
            return true;
          }
          PsiClass aClass = PositionManagerImpl.findClass(process.getProject(), className, process.getSearchScope(), true);
          return aClass != null && aClass.isInheritor(containingClass, true);
        }
      }
    }
    catch (EvaluateException e) {
      LOG.debug(e);
    }
    return false;
  }
public static boolean methodMatches(@NotNull PsiMethod psiMethod,
                                      String className,
                                      @Nullable String name,
                                      String signature,
                                      DebugProcessImpl process)