public void DistributeWork(Backlog backlog, Team team) { team.DoNothing(); backlog.FinishStartedWork(); foreach (var backlogItem in new RemainingBacklog(backlog).Items.Take(wipLimit)) { DistributeWork(backlogItem, team); if (wipLimit <= team.Wip) { return; } } }