boolean (@NotNull PyClass pyClass) { final PyClassLikeType metaClass = pyClass.getMetaClassType(false, myTypeEvalContext); if (metaClass != null && PyNames.ABC_META_CLASS.equals(metaClass.getName())) { return true; } for (PyClassLikeType superClassType : pyClass.getSuperClassTypes(myTypeEvalContext)) { if (superClassType != null && PyNames.ABC.equals(superClassType.getClassQName())) { return true; } } for (PyFunction method : pyClass.getMethods()) { if (PyKnownDecoratorUtil.hasAbstractDecorator(method, myTypeEvalContext)) { return true; } } return false; }