@Override
  public void removeFromSourceClass(PushDownData<MemberInfo, PsiMember> pushDownData) {
    for (MemberInfoBase<? extends PsiElement> memberInfo : pushDownData.getMembersToMove()) {
      final PsiElement member = memberInfo.getMember();

      if (member instanceof PsiField || member instanceof PsiClassInitializer) {
        member.delete();
      }
      else if (member instanceof PsiMethod) {
        if (memberInfo.isToAbstract()) {
          final PsiMethod method = (PsiMethod)member;
          if (method.hasModifierProperty(PsiModifier.PRIVATE)) {
            PsiUtil.setModifierProperty(method, PsiModifier.PROTECTED, true);
          }
          if (method.hasModifierProperty(PsiModifier.DEFAULT)) {
            PsiUtil.setModifierProperty(method, PsiModifier.DEFAULT, false);
          }
          RefactoringUtil.makeMethodAbstract((PsiClass)pushDownData.getSourceClass(), method);
          pushDownData.getCommentPolicy().processOldJavaDoc(method.getDocComment());
        }
        else {
          member.delete();
        }
      }
      else if (member instanceof PsiClass) {
        if (Boolean.FALSE.equals(memberInfo.getOverrides())) {
          RefactoringUtil.removeFromReferenceList(((PsiClass)pushDownData.getSourceClass()).getImplementsList(), (PsiClass)member);
        }
        else {
          member.delete();
        }
      }
    }
  }
@Override
  public void removeFromSourceClass(PushDownData<MemberInfo, PsiMember> pushDownData)