public void Clean() { List <string> toCopy = new List <string>(); foreach (var point in _points) { if (_cleaner.IsWithin(point.Value)) { toCopy.Add(point.Key); } } Dictionary <string, RestorePoint> tmp = new Dictionary <string, RestorePoint>(); foreach (var name in toCopy) { tmp.Add(name, _points[name]); } _points = tmp; }