void (@NotNull PsiElement usage, @NotNull PsiNamedElement newElement) { final PsiFile usageFile = usage.getContainingFile(); if (belongsToSomeMovedElement(usage)) { return; } if (usage instanceof PyQualifiedExpression qualifiedExpr) { if (myMovedElement instanceof PyClass && PyNames.INIT.equals(qualifiedExpr.getName())) { return; } else if (qualifiedExpr.isQualified()) { insertQualifiedImportAndReplaceReference(newElement, qualifiedExpr); } else if (usageFile == myMovedElement.getContainingFile()) { if (usage.getParent() instanceof PyGlobalStatement) { myScopeOwnersWithGlobal.add(ScopeUtil.getScopeOwner(usage)); if (((PyGlobalStatement)usage.getParent()).getGlobals().length == 1) { usage.getParent().delete(); } else { usage.delete(); } } else if (myScopeOwnersWithGlobal.contains(ScopeUtil.getScopeOwner(usage))) { insertQualifiedImportAndReplaceReference(newElement, qualifiedExpr); } else { insertImportFromAndReplaceReference(newElement, qualifiedExpr); } } else { final PyImportStatementBase importStmt = getImportStatementByElement(usage); if (importStmt != null) { PyClassRefactoringUtil.updateUnqualifiedImportOfElement(importStmt, newElement); } else if (resolvesToLocalStarImport(usage)) { PyPsiRefactoringUtil.insertImport(usage, newElement); myFilesWithStarUsages.add(usageFile); } } } else if (usage instanceof PyStringLiteralExpression) { for (PsiReference ref : usage.getReferences()) { if (ref instanceof PyDunderAllReference) { usage.delete(); } else { if (ref.isReferenceTo(myMovedElement)) { ref.bindToElement(newElement); } } } } }