void (@NotNull PyReferenceExpression node) { super.visitPyElement(node); if (myVersionsToProcess.stream().anyMatch(LanguageLevel::isPy3K)) { final String nodeText = node.getText(); if (nodeText.endsWith("iteritems") || nodeText.endsWith("iterkeys") || nodeText.endsWith("itervalues")) { final PyExpression qualifier = node.getQualifier(); if (qualifier != null) { final TypeEvalContext context = TypeEvalContext.codeAnalysis(node.getProject(), node.getContainingFile()); final PyType type = context.getType(qualifier); final PyClassType dictType = PyBuiltinCache.getInstance(node).getDictType(); if (PyTypeChecker.match(dictType, type, context)) { //noinspection DialogTitleCapitalization registerProblem(node, PyPsiBundle.message("INSP.compatibility.old.dict.methods.not.available.in.py3")); } } } if (PyNames.BASESTRING.equals(nodeText)) { final PsiElement res = node.getReference().resolve(); if (res != null) { final PsiFile file = res.getContainingFile(); if (file != null) { final VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile != null && ProjectRootManager.getInstance(node.getProject()).getFileIndex().isInLibraryClasses(virtualFile)) { //noinspection DialogTitleCapitalization registerProblem(node, PyPsiBundle.message("INSP.compatibility.basestring.type.not.available.in.py3")); } } else { //noinspection DialogTitleCapitalization registerProblem(node, PyPsiBundle.message("INSP.compatibility.basestring.type.not.available.in.py3")); } } } } }