protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         _userDataManager.UserDataSaved  -= OnUserDataSaved;
         _sessionManager.PlaybackStart   -= KernelPlaybackStart;
         _sessionManager.PlaybackStopped -= KernelPlaybackStopped;
         _libraryManager.ItemAdded       -= LibraryManagerItemAdded;
         _libraryManager.ItemRemoved     -= LibraryManagerItemRemoved;
         _traktApi = null;
         _libraryManagerEventsHelper.Dispose();
         _libraryManagerEventsHelper = null;
         _userDataManagerEventsHelper.Dispose();
     }
 }