private void migrate(boolean autoMigrate, PsiElement... victims) {
    myMigrationRoots = new LinkedList<>();
    myTypeEvaluator = new TypeEvaluator(myMigrationRoots, this, myProject);

    SmartTypePointerManager smartTypePointerManager = SmartTypePointerManager.getInstance(myProject);
    for (PsiElement victim : victims) {
      // use deeply immediate types
      PsiType migrationType = smartTypePointerManager.createSmartTypePointer(myMigrationRootTypeFunction.fun(victim)).getType();
      addMigrationRoot(victim, migrationType, null, false, true, true);
    }

    if (autoMigrate) {
      while (!myMigrationRoots.isEmpty()) {
        iterate();
      }
    }
  }
private void migrate(boolean autoMigrate, PsiElement... victims)