private void doMoveClass(PsiSubstitutor substitutor, MemberInfo info) {
    PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(myProject);
    PsiClass aClass = (PsiClass)info.getMember();
    if (Boolean.FALSE.equals(info.getOverrides())) {
      final PsiReferenceList sourceReferenceList = info.getSourceReferenceList();
      PsiJavaCodeReferenceElement ref = sourceReferenceList == null ? null :
                                        mySourceClass.equals(sourceReferenceList.getParent()) ?
                                          RefactoringUtil.removeFromReferenceList(sourceReferenceList, aClass) :
                                          RefactoringUtil.findReferenceToClass(sourceReferenceList, aClass);
      if (ref != null && !myTargetSuperClass.isInheritor(aClass, false)) {
        RefactoringUtil.replaceMovedMemberTypeParameters(ref, PsiUtil.typeParametersIterable(mySourceClass), substitutor, elementFactory);
        final PsiReferenceList referenceList =
          myIsTargetInterface ? myTargetSuperClass.getExtendsList() : myTargetSuperClass.getImplementsList();
        assert referenceList != null;
        referenceList.add(ref);
      }
    }
    else {
      PsiClass copy = (PsiClass)aClass.copy();
      RefactoringUtil.renameConflictingTypeParameters(copy, myTargetSuperClass);
      RefactoringUtil.replaceMovedMemberTypeParameters(copy, PsiUtil.typeParametersIterable(mySourceClass), substitutor, elementFactory);
      fixReferencesToStatic(copy);
      final PsiMember movedElement = (PsiMember)myTargetSuperClass.add(copy);
      myMembersAfterMove.add(movedElement);
      aClass.delete();
    }
  }
private void doMoveClass(PsiSubstitutor substitutor, MemberInfo info)