boolean (final GrMethod method) { if (method.hasModifierProperty(PsiModifier.STATIC)) return false; if (method.hasModifierProperty(PsiModifier.SYNCHRONIZED)) return false; if (method.getModifierList().hasExplicitModifier(PsiModifier.ABSTRACT)) return false; if (method.isConstructor()) return false; PsiClass containingClass = method.getContainingClass(); if (containingClass == null) return false; if (myIgnoreTraitMethods && GrTraitUtil.isTrait(containingClass)) return false; if (SuperMethodsSearch.search(method, null, true, false).findFirst() != null) return false; if (OverridingMethodsSearch.search(method).findFirst() != null) return false; if (ignoreMethod(method)) return false; if (myOnlyPrivateOrFinal) { if (!(method.hasModifierProperty(PsiModifier.FINAL) || method.hasModifierProperty(PsiModifier.PRIVATE))) return false; } GrOpenBlock block = method.getBlock(); if (block == null) return false; if (myIgnoreEmptyMethods && block.getStatements().length == 0) return false; if (containingClass.getContainingClass() != null && !containingClass.hasModifierProperty(PsiModifier.STATIC)) { return false; } for (Condition<PsiElement> addin : InspectionManager.CANT_BE_STATIC_EXTENSION.getExtensionList()) { if (addin.value(method)) return false; } MethodMayBeStaticVisitor visitor = new MethodMayBeStaticVisitor(); method.accept(visitor); return !visitor.haveInstanceRefsOutsideClosures(); }