public override object Clone() { var clonedPoller = (IFileSystemPoller) _poller.Clone(); var clonedEncapsWatcher = (IFileSystemWatcher) InternalWatcher.Clone(); var clonedOverseer = new FileSystemOverseer(clonedPoller, clonedEncapsWatcher) { PollerReportsDelay = this.PollerReportsDelay }; clonedOverseer.ClearPolicies(); foreach (var policy in ErrorHandlingPolicies) { clonedOverseer.AddPolicy(policy); } return clonedOverseer; }