boolean (@Nullable PsiElement element) { final PyFunction function = as(element, PyFunction.class); if (function == null || function.getContainingClass() == null) { return false; } final String funcName = function.getName(); if (funcName == null || PyUtil.isSpecialName(funcName)) { return false; } final TypeEvalContext typeEvalContext = TypeEvalContext.userInitiated(function.getProject(), function.getContainingFile()); if (PySuperMethodsSearch.search(function, typeEvalContext).findFirst() != null) return false; if (PyOverridingMethodsSearch.search(function, true).findFirst() != null) return false; if (function.getDecoratorList() != null || function.getModifier() != null) return false; if (function.getContainingClass().findPropertyByCallable(function) != null) return false; return true; }