boolean (@Nullable TypeEvalContext context) { final PsiFile containingFile = getContainingFile(); if (containingFile instanceof PyFile && ((PyFile)containingFile).getLanguageLevel().isPy3K()) { return true; } final PyClass objClass = PyBuiltinCache.getInstance(this).getClass(PyNames.OBJECT); if (this == objClass) return true; // a rare but possible case if (hasNewStyleMetaClass(this)) return true; for (PyClassLikeType type : getOldStyleAncestorTypes(notNullizeContext(context))) { if (type == null) { // unknown, assume new-style class return true; } if (type instanceof PyClassType) { final PyClass pyClass = ((PyClassType)type).getPyClass(); if (pyClass == objClass || hasNewStyleMetaClass(pyClass)) { return true; } } } return false; }