code: func (mtask *managedTask) startContainerTransitions(transitionFunc containerTransitionFunc) (bool, map[string]apicontainer.DependsOn, map[string]apicontainerstatus.ContainerStatus, []error) {
  	anyCanTransition := false
  	var reasons []error
  	blocked := make(map[string]apicontainer.DependsOn)
  	transitions := make(map[string]apicontainerstatus.ContainerStatus)
  	for _, cont := range mtask.Containers {
  		transition := mtask.containerNextState(cont)
  		if transition.reason != nil {
  			// container can't be transitioned
  			reasons = append(reasons, transition.reason)
  			if transition.blockedOn != nil {
  				blocked[cont.Name] = *transition.blockedOn
  			}
  			continue
  		}
  
  		// If the container is already in a transition, skip
  		if transition.actionRequired && !cont.SetAppliedStatus(transition.nextState) {
  			// At least one container is able to be moved forwards, so we're not deadlocked
  			anyCanTransition = true
  			continue
  		}
  
  		// At least one container is able to be moved forwards, so we're not deadlocked
  		anyCanTransition = true
  
  		if !transition.actionRequired {
  			// Updating the container status without calling any docker API, send in
  			// a goroutine so that it won't block here before the waitForContainerTransition
  			// was called after this function. And all the events sent to mtask.dockerMessages
  			// will be handled by handleContainerChange.
  			go func(cont *apicontainer.Container, status apicontainerstatus.ContainerStatus) {
  				mtask.dockerMessages <- dockerContainerChange{
  					container: cont,
  					event: dockerapi.DockerContainerChangeEvent{
  						Status: status,
  					},
  				}
  			}(cont, transition.nextState)
  			continue
  		}
  		transitions[cont.Name] = transition.nextState
  		go transitionFunc(cont, transition.nextState)
  	}
  
  	return anyCanTransition, blocked, transitions, reasons
  }
docs: // startContainerTransitions steps through each container in the task and calls
  // the passed transition function when a transition should occur.