code: func (e *EnsureQuestAttempts) RollForward(c context.Context) (muts []tumble.Mutation, err error) {
  	if !e.DoNotMergeQuest {
  		if _, err = (&MergeQuest{Quest: e.Quest}).RollForward(c); err != nil {
  			return
  		}
  	}
  
  	if len(e.AIDs) > 0 {
  		lim := len(e.AIDs)
  		if lim > MaxEnsureAttempts {
  			lim = MaxEnsureAttempts + 1
  		}
  		muts = make([]tumble.Mutation, 0, lim)
  		for i, aid := range e.AIDs {
  			if i > MaxEnsureAttempts {
  				muts = append(muts, &EnsureQuestAttempts{e.Quest, e.AIDs[i:], true})
  				break
  			}
  			muts = append(muts, &EnsureAttempt{dm.NewAttemptID(e.Quest.ID, aid)})
  		}
  	}
  
  	return
  }
docs: // RollForward implements tumble.Mutation.