// This function walks all watched files, collects changes, and updates state private FileChangeList ComputeChangesAndUpdateState() { _version++; var enumerator = new FileSystemChangeEnumerator(this, Path, EnumerationOptions); while (enumerator.MoveNext()) { // Ignore `.Current` } FileChangeList changes = enumerator.Changes; foreach (FileState value in _state) { if (value._version != _version) { changes.AddRemoved(value.Directory, value.Path); _state.Remove(value.Directory, value.Path); } } return(changes); }