public ICollection <TItem> Collapse(IEnumerable <TItem> elements) { var worker = new WalkerWorker <TItem, TEdge> (this.Sink); NeverRemove(worker, elements); foreach (var item in elements) { worker.RemoveCollapsed(item, this.Sink); } RevoveEdgesOfChanged(worker); CommitRemove(worker); var result = worker.Changes; if (RemoveOrphans) { var changes = new List <TItem> (worker.Changes); worker.Changes.Clear(); worker.RemoveOrphans(this.Sink); CommitRemove(worker); changes.AddRange(worker.Changes); worker.Changes.Clear(); result = changes; } return(result); }
public virtual ICollection <TItem> CollapseToFocused(IEnumerable <TItem> elements) { var worker = new WalkerWorker <TItem, TEdge> (this.Sink); NeverRemove(worker, elements); foreach (TItem item in Sink) { worker.RemoveCollapsed(item, Sink); worker.Remove(item); } CommitRemove(worker); return(worker.Changes); }