boolean (PsiMember member) { ProgressManager.checkCanceled(); String name = member.getName(); if (name == null || !matcher.prefixMatches(name)) { return true; } if (!(member instanceof PsiMethod method && method.hasModifier(JvmModifier.STATIC))) { return true; } PsiFile currentFile = method.getContainingFile(); if (method.hasModifier(JvmModifier.PRIVATE) && !file.isEquivalentTo(currentFile)) { return true; } PsiClass containingClass = method.getContainingClass(); String methodName = method.getName(); if (containingClass == null) { return true; } Collection<String> names = classesToSkip.get(containingClass); if (names.contains(methodName)) { return true; } processor.processStaticMember(element -> { size++; result.consume(element); classesToSkip.putValue(containingClass, methodName); }, member, new HashSet<>()); return size < MAX_SIZE; }