public Subscription(
     IProcessInstancesClient userTaskClient,
     OnProcessInstanceCallback callback,
     InstanceSubscriptionSettings subscriptionSettings)
 {
     _instanceClient       = userTaskClient ?? throw new ArgumentNullException(nameof(userTaskClient));
     _callback             = callback ?? throw new ArgumentNullException(nameof(callback));
     _subscriptionSettings = subscriptionSettings ?? throw new ArgumentNullException(nameof(subscriptionSettings));
     _stopSignal           = new CancellationTokenSource();
 }
        public static ISubscription SubscribeForProcessesInstances(
            this IProcessInstancesClient client,
            OnProcessInstanceCallback callback,
            InstanceSubscriptionSettings subscriptionSettings
            )
        {
            var subscriptionSettings1 = subscriptionSettings ?? new InstanceSubscriptionSettings();

            if (subscriptionSettings1.FetchInterval <= TimeSpan.Zero)
            {
                throw new ArgumentException(
                          $"Fetch interval '{subscriptionSettings1.FetchInterval}' should be positive.");
            }

            var subscription = new Subscription(client, callback, subscriptionSettings1);

            subscription.StartAsync();
            return(subscription);
        }