public void RegisterTransition(T beginTransitionState, T endTransitionState, CreateTaskForTransitionCallback createTaskCallback)
    {
        createTaskCallback.AssertNotNull("factory");
        var transitionRegistrationInfo = new TransitionRegistrationInfo(beginTransitionState, createTaskCallback);
        var registered = this.transitionRegistrations.TryAdd(endTransitionState, transitionRegistrationInfo);

        exceptionHelper.ResolveAndThrowIf(!registered, "transitionAlreadyRegistered", endTransitionState);
    }
 public TransitionRegistrationInfo(T beginTransitionState, CreateTaskForTransitionCallback taskFactory)
 {
     this.beginTransitionState = beginTransitionState;
     this.taskFactory          = taskFactory;
 }