private static IStateMachineBuilderWithoutStateId <Context, StateId, IStatefulTaskWithRollback <Context, StateId> > FillExecutorWithRollback(
     IStatefulTaskWithRollback <Context, StateId> initialTask)
 {
     return(initialTask.AsInitial(StateId.Initial)
            .On(StateId.StateA).GoTo(new TaskAWithRollback())
            .On(StateId.StateB).GoTo(new TaskBWithRollback())
            .On(StateId.StateC).GoTo(new TaskCWithRollback())
            .OnFinalGoToSelfLoop(StateId.Final));
 }
 // To simplify call (no need in generic arguments).
 public static IStateMachineBuilderWithoutStateId <TContext, TStateId, IStatefulTaskWithRollback <TContext, TStateId> > AsInitial <TContext, TStateId>(
     this IStatefulTaskWithRollback <TContext, TStateId> initialTask,
     TStateId initialStateId)
 {
     return(initialTask.AsInitial <TContext, TStateId, IStatefulTaskWithRollback <TContext, TStateId> >(initialStateId));
 }