void (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(); } } }