boolean (PsiElement element) { final ScopeOwner scopeOwner = ScopeUtil.getScopeOwner(element); final boolean[] isValid = {true}; if (scopeOwner != null) { final String name = element instanceof PsiNamedElement? ((PsiNamedElement)element).getName() : element.getText(); if (name != null && ControlFlowCache.getScope(scopeOwner).containsDeclaration(name)) { return false; } new PyRecursiveElementVisitor() { @Override public void visitPyReferenceExpression(@NotNull PyReferenceExpression node) { super.visitPyReferenceExpression(node); final String name = node.getName(); if (name != null && ControlFlowCache.getScope(scopeOwner).containsDeclaration(name)) { isValid[0] = false; } } }.visitElement(element); } return !isResolvedToParameter(element) && isValid[0]; }