public bool MoveNext() { currentRule = null; var enumerator = migrationRules.GetEnumerator(); while (currentRule == null && enumerator.MoveNext()) { var migrationRule = enumerator.Current; if (migrationManager.IsApplicable(migrationRule)) { currentRule = migrationRule; migrationRules.Remove(migrationRule); } } return(currentRule != null); }