void (final UsageInfo @NotNull [] usages) { try { final UsageInfo[] infos = ContainerUtil.map2Array(myTargetClasses, UsageInfo.class, UsageInfo::new); new PushDownProcessor<>(mySuperClass, Arrays.asList(myMemberInfos), new DocCommentPolicy(myPolicy), myCurrentInheritor!=null) .pushDownToClasses(infos); CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages); for (UsageInfo usageInfo : usages) { if (!(usageInfo instanceof ReplaceExtendsListUsageInfo || usageInfo instanceof RemoveImportUsageInfo)) { try { ((FixableUsageInfo)usageInfo).fixUsage(); } catch (IncorrectOperationException e) { LOG.info(e); } } } replaceInnerTypeUsages(); //postpone broken hierarchy for (UsageInfo usage : usages) { if (usage instanceof ReplaceExtendsListUsageInfo || usage instanceof RemoveImportUsageInfo) { ((FixableUsageInfo)usage).fixUsage(); } } //delete the class if all refs replaced if (myCurrentInheritor == null) { mySuperClass.delete(); } } catch (IncorrectOperationException e) { LOG.error(e); } }