internal AsynchronousTaggerProvider(
            IAsynchronousOperationListener asyncListener,
            IForegroundNotificationService notificationService,
            IAsynchronousTaggerDataSource <TTag> dataSource)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource));
            }

            _taggerImplementation = new AsynchronousTaggerProviderImpl(asyncListener, notificationService, dataSource);
        }
 public AsynchronousTaggerProviderImpl(IAsynchronousOperationListener asyncListener, IForegroundNotificationService notificationService, IAsynchronousTaggerDataSource <TTag> dataSource)
     : base(asyncListener, notificationService)
 {
     _dataSource = dataSource;
 }
 /// <summary>
 /// Creates a new <see cref="AsynchronousTaggerProvider{TTag}"/> using the provided
 /// <see cref="IAsynchronousTaggerDataSource{TTag}"/> to determine when to compute tags
 /// and to produce tags when appropriate.
 /// </summary>
 public AsynchronousTaggerProvider(IAsynchronousTaggerDataSource <TTag> dataSource)
     : this(null, null, dataSource)
 {
 }