public static TaskRoutine <TTask> ToTaskRoutine <TTask, TRunner>(this TTask enumerator, TRunner runner)
        where TTask : IEnumerator <TaskContract> where TRunner : class, IInternalRunner <TaskRoutine <TTask> >
    {
        var taskroutine = TaskRunner.AllocateNewTaskRoutine <TTask, TRunner>(runner);

        taskroutine.SetEnumerator(enumerator);
        return(taskroutine);
    }