/// <summary>
        /// Called when one of the watchers detects a change in a file
        /// </summary>
        protected override void OnFileChanged(FileInfo file)
        {
            // A track was changed
            if (IsTrack(file))
            {
                var track = FileTrack.GetByPath(file.FullName);
                if (track != null)
                {
                    track.Update(file);
                    track.Save();
                    _masterPlaylist.Update(track);
                }
            }

            // A playlist was changed
            else if (IsPlaylist(file))
            {
                throw new NotImplementedException();
            }
        }
        /// <summary>
        /// Called when one of the watchers detects the deletion of a file
        /// </summary>
        protected override void OnFileDeleted(FileInfo file)
        {
            // A track was deleted
            if (IsTrack(file))
            {
                var track = FileTrack.GetByPath(file.FullName);
                if (track != null)
                {
                    track.Dispose();
                    foreach (var playlist in Medium.Containers.Cast <Playlist>())
                    {
                        playlist.Remove(track);
                    }
                }
            }

            // A playlist was deleted
            else if (IsPlaylist(file))
            {
                throw new NotImplementedException();
            }
        }
        /// <summary>
        /// Called when one of the watchers detects the renaming of a file
        /// </summary>
        protected override void OnFileRenamed(FileInfo file, RenamedEventArgs e)
        {
            // A track was renamed
            if (IsTrack(file))
            {
                var track = FileTrack.GetByPath(e.OldFullPath);
                if (track == null)
                {
                    this.OnFileCreated(file);
                }
                else
                {
                    this.OnFileChanged(file);
                }
            }

            // A playlist was renamed
            else if (IsPlaylist(file))
            {
                throw new NotImplementedException();
            }
        }