void (UsageInfo @NotNull [] usages) { myDelegate.prepareToPush(myPushDownData); final PsiElement sourceClass = myPushDownData.getSourceClass(); if (mySubClassData != null) { final PsiElement subClass = myDelegate.createSubClass(sourceClass, mySubClassData); if (subClass != null) { myDelegate.pushDownToClass(subClass, myPushDownData); } } else { for (UsageInfo usage : usages) { final PsiElement element = usage.getElement(); if (element != null) { final PushDownDelegate targetDelegate = PushDownDelegate.findDelegateForTarget(sourceClass, element); if (targetDelegate != null) { targetDelegate.pushDownToClass(element, myPushDownData); } } } } }