code: func (ac *annotationConverter) addSteps(c context.Context, dest *[]buildbot.Step, src []*miloProto.Step_Substep, stepNamePrefix string) error {
  	for _, substep := range src {
  		stepSrc := substep.GetStep()
  		if stepSrc == nil {
  			return errors.Reason("unexpected substep type %T", substep.Substep).Err()
  		}
  
  		stepDst, err := ac.step(c, stepSrc)
  		if err != nil {
  			return errors.Annotate(err, "could not convert step %q", stepNamePrefix+stepDst.Name).Err()
  		}
  		stepDst.Name = stepNamePrefix + stepDst.Name
  		*dest = append(*dest, *stepDst)
  		ac.addSteps(c, dest, stepSrc.Substep, stepDst.Name+".")
  	}
  	return nil
  }
docs: // addSteps converts annotation substeps to buildbot steps and appends them
  // dest.
  // c is used only for logging.