private void SendRecentlyUsedDirectories(IRecentlyUsedFoldersObserver observer)
        {
            using (var logger = _logger.Block()) {
                logger.Trace("Notifying observer to clear list...");
                observer.OnClear();

                logger.Trace("Notifying observer of current state...");
                foreach (var directory in _recentlyUsedDirectories)
                {
                    logger.Trace($@"Notifying observer of ""{directory}""...");
                    observer.OnNext(directory);
                }
            }
        }
        public IDisposable Subscribe(IRecentlyUsedFoldersObserver observer)
        {
            using (var logger = _logger.Block()) {
                logger.Trace("Checking if observer is already subscribed...");
                if (_observers.Contains(observer))
                {
                    return(new Unsubscriber <IRecentlyUsedFoldersObserver>(_observers, observer));
                }

                logger.Trace("Observer is not subscribed.  Subscribing...");
                _observers.Add(observer);

                SendRecentlyUsedDirectories(observer);

                return(new Unsubscriber <IRecentlyUsedFoldersObserver>(_observers, observer));
            }
        }