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); }