PsiFile (@NotNull PsiElement element, PsiElement[] elements) { final PsiFile containingFile = element.getContainingFile(); final PsiClass[] classes = ((PsiClassOwner)containingFile).getClasses(); final Set<PsiClass> nonMovedClasses = new HashSet<>(); for (PsiClass aClass : classes) { if (ArrayUtilRt.find(elements, aClass) < 0) { nonMovedClasses.add(aClass); } } if (nonMovedClasses.isEmpty()) { return containingFile; } else { final PsiDirectory containingDirectory = containingFile.getContainingDirectory(); if (containingDirectory != null) { try { JavaDirectoryServiceImpl.checkCreateClassOrInterface(containingDirectory, ((PsiClass)element).getName()); final PsiElement createdClass = containingDirectory.add(element); element.delete(); return createdClass.getContainingFile(); } catch (IncorrectOperationException e) { final Iterator<PsiClass> iterator = nonMovedClasses.iterator(); final PsiClass nonMovedClass = iterator.next(); final PsiElement createdFile = containingDirectory.add(nonMovedClass).getContainingFile(); nonMovedClass.delete(); while (iterator.hasNext()) { final PsiClass currentClass = iterator.next(); createdFile.add(currentClass); currentClass.delete(); } return containingFile; } } } return null; }