void (PsiMember member, PsiElement scope, @NotNull Set<? extends GrMember> membersToMove, @Nullable Set<? extends PsiMethod> abstractMethods, @Nullable PsiClass targetClass, @NotNull PsiElement context, MultiMap<PsiElement, String> conflicts) { final Set<PsiMember> moving = new HashSet<>(membersToMove); if (abstractMethods != null) { moving.addAll(abstractMethods); } if (scope instanceof GrReferenceExpression) { GrReferenceExpression refExpr = (GrReferenceExpression)scope; PsiElement refElement = refExpr.resolve(); if (refElement instanceof PsiMember) { if (!RefactoringHierarchyUtil.willBeInTargetClass(refElement, moving, targetClass, false)) { GrExpression qualifier = refExpr.getQualifierExpression(); PsiClass accessClass = (PsiClass)(qualifier != null ? PsiUtil.getAccessObjectClass( qualifier).getElement() : null); RefactoringConflictsUtilImpl.analyzeAccessibilityAfterMove((PsiMember)refElement, context, accessClass, member, conflicts); } } } else if (scope instanceof GrNewExpression newExpression) { final GrAnonymousClassDefinition anonymousClass = newExpression.getAnonymousClassDefinition(); if (anonymousClass != null) { if (!RefactoringHierarchyUtil.willBeInTargetClass(anonymousClass, moving, targetClass, false)) { RefactoringConflictsUtilImpl.analyzeAccessibilityAfterMove(anonymousClass, context, anonymousClass, member, conflicts); } } else { final PsiMethod refElement = newExpression.resolveMethod(); if (refElement != null) { if (!RefactoringHierarchyUtil.willBeInTargetClass(refElement, moving, targetClass, false)) { RefactoringConflictsUtilImpl.analyzeAccessibilityAfterMove(refElement, context, null, member, conflicts); } } } } else if (scope instanceof GrCodeReferenceElement refExpr) { PsiElement refElement = refExpr.resolve(); if (refElement instanceof PsiMember) { if (!RefactoringHierarchyUtil.willBeInTargetClass(refElement, moving, targetClass, false)) { RefactoringConflictsUtilImpl.analyzeAccessibilityAfterMove((PsiMember)refElement, context, null, member, conflicts); } } } for (PsiElement child : scope.getChildren()) { if (child instanceof PsiWhiteSpace || child instanceof PsiComment) continue; checkUsedElements(member, child, membersToMove, abstractMethods, targetClass, context, conflicts); } }