code: func FwdDepsFromList(c context.Context, base *dm.Attempt_ID, list *dm.AttemptList) []*FwdDep {
  	from := ds.KeyForObj(c, &Attempt{ID: *base})
  	keys := make(sort.StringSlice, 0, len(list.To))
  	amt := 0
  	for qst, nums := range list.To {
  		keys = append(keys, qst)
  		amt += len(nums.Nums)
  	}
  	keys.Sort()
  	idx := uint32(0)
  	ret := make([]*FwdDep, 0, amt)
  	for _, key := range keys {
  		for _, num := range list.To[key].Nums {
  			dep := &FwdDep{Depender: from}
  			dep.Dependee.Quest = key
  			dep.Dependee.Id = num
  			dep.BitIndex = idx
  			idx++
  			ret = append(ret, dep)
  		}
  	}
  	return ret
  }
docs: // FwdDepsFromList creates a slice of *FwdDep given an originating base
  // Attempt_ID, and a list of dependency Attempts.