code: func (engine *DockerTaskEngine) applyContainerState(task *apitask.Task, container *apicontainer.Container, nextState apicontainerstatus.ContainerStatus) dockerapi.DockerContainerMetadata {
  	transitionFunction, ok := engine.transitionFunctionMap()[nextState]
  	if !ok {
  		seelog.Criticalf("Task engine [%s]: unsupported desired state transition for container [%s]: %s",
  			task.Arn, container.Name, nextState.String())
  		return dockerapi.DockerContainerMetadata{Error: &impossibleTransitionError{nextState}}
  	}
  	metadata := transitionFunction(task, container)
  	if metadata.Error != nil {
  		seelog.Infof("Task engine [%s]: error transitioning container [%s] to [%s]: %v",
  			task.Arn, container.Name, nextState.String(), metadata.Error)
  	} else {
  		seelog.Debugf("Task engine [%s]: transitioned container [%s] to [%s]",
  			task.Arn, container.Name, nextState.String())
  		engine.saver.Save()
  	}
  	return metadata
  }
docs: // applyContainerState moves the container to the given state by calling the
  // function defined in the transitionFunctionMap for the state