public StateBuilderContext(IWorkItem workItem, string stateName, IDictionary <string, object> dependencies, IDictionary <string, object> optionalDependencies, IDictionary <string, object> additionalData)
        {
            _workItem            = workItem;
            Dependencies         = new ReadOnlyDictionary <string, object>(dependencies);
            OptionalDependencies = new ReadOnlyDictionary <string, object>(optionalDependencies);
            AdditionalData       = new ReadOnlyDictionary <string, object>(additionalData);

            _completionSource = new TaskCompletionSource <TStateObject>();

            Task task = _completionSource.Task.ContinueWith(x =>
            {
                workItem.State[stateName] = x.Result;
                //_workItem.State[stateName] = x.Result;
#if DEBUG
                Debug.WriteLine($"************StateBuilderContext**************\n{stateName}\n***************************");
#endif
                _workItem.BroadCastState(_workItem, new BroadCastStateEventArgs(stateName, x.Result));
            }, TaskContinuationOptions.OnlyOnRanToCompletion);
            var taskList = _workItem.Container.Resolve <IList <Task> >();

            taskList.Add(task);
            //task.Start();
        }