public List <string> ExpandDependency(DependencyGraph dg, Func <DependencyItem, bool> isValid) { var newChanges = new List <string>(); if (dg != null) { foreach (var change in (from c in _changeDict where c.Value != ChangeKindWithDependency.None where c.Value != ChangeKindWithDependency.DependencyUpdated select c).ToList()) { foreach (var dt in dg.GetAllDependencyTo(change.Key)) { if (!isValid(dt)) { continue; } string from = dt.From.Value; if (!_changeDict.ContainsKey(from)) { _changeDict[from] = ChangeKindWithDependency.DependencyUpdated; newChanges.Add(from); } else { if (_changeDict[from] == ChangeKindWithDependency.None) { newChanges.Add(from); } _changeDict[from] |= ChangeKindWithDependency.DependencyUpdated; } } } } return(newChanges); }