code: func (e *edge) commitOptions() ([]*CacheKey, []CachedResult) {
  	k := NewCacheKey(e.cacheMap.Digest, e.edge.Index)
  	if len(e.deps) == 0 {
  		keys := make([]*CacheKey, 0, len(e.cacheMapDigests))
  		for _, dgst := range e.cacheMapDigests {
  			keys = append(keys, NewCacheKey(dgst, e.edge.Index))
  		}
  		return keys, nil
  	}
  
  	inputs := make([][]CacheKeyWithSelector, len(e.deps))
  	results := make([]CachedResult, len(e.deps))
  	for i, dep := range e.deps {
  		for _, k := range dep.result.CacheKeys() {
  			inputs[i] = append(inputs[i], CacheKeyWithSelector{CacheKey: k, Selector: e.cacheMap.Deps[i].Selector})
  		}
  		if dep.slowCacheKey != nil {
  			inputs[i] = append(inputs[i], CacheKeyWithSelector{CacheKey: *dep.slowCacheKey})
  		}
  		results[i] = dep.result
  	}
  
  	k.deps = inputs
  	return []*CacheKey{k}, results
  }
docs: // commitOptions returns parameters for the op execution