void (@NotNull PyFunction node) { super.visitPyFunction(node); final PyDecoratorList decoratorList = node.getDecoratorList(); if (!LanguageLevel.forElement(node).isPython2() && decoratorList != null) { for (PyDecorator decorator : decoratorList.getDecorators()) { for (KnownDecorator knownDecorator : PyKnownDecoratorUtil.asKnownDecorators(decorator, myTypeEvalContext)) { final KnownDecorator deprecated; final KnownDecorator builtin; if (knownDecorator == KnownDecorator.ABC_ABSTRACTPROPERTY) { deprecated = KnownDecorator.ABC_ABSTRACTPROPERTY; builtin = KnownDecorator.PROPERTY; } else if (knownDecorator == KnownDecorator.ABC_ABSTRACTCLASSMETHOD) { deprecated = KnownDecorator.ABC_ABSTRACTCLASSMETHOD; builtin = KnownDecorator.CLASSMETHOD; } else if (knownDecorator == KnownDecorator.ABC_ABSTRACTSTATICMETHOD) { deprecated = KnownDecorator.ABC_ABSTRACTSTATICMETHOD; builtin = KnownDecorator.STATICMETHOD; } else { continue; } final KnownDecorator abcAbsMethod = KnownDecorator.ABC_ABSTRACTMETHOD; final String message = PyPsiBundle.message("INSP.deprecation.abc.decorator.deprecated.use.alternative", deprecated.getQualifiedName(), builtin.getQualifiedName(), abcAbsMethod.getQualifiedName()); registerProblem(decorator, message, ProblemHighlightType.LIKE_DEPRECATED); } } } }