code: func (e *edge) currentIndexKey() *CacheKey {
  	if e.cacheMap == nil {
  		return nil
  	}
  
  	keys := make([][]CacheKeyWithSelector, len(e.deps))
  	for i, d := range e.deps {
  		if len(d.keys) == 0 && d.result == nil {
  			return nil
  		}
  		for _, k := range d.keys {
  			keys[i] = append(keys[i], CacheKeyWithSelector{Selector: e.cacheMap.Deps[i].Selector, CacheKey: k})
  		}
  		if d.result != nil {
  			for _, rk := range d.result.CacheKeys() {
  				keys[i] = append(keys[i], CacheKeyWithSelector{Selector: e.cacheMap.Deps[i].Selector, CacheKey: rk})
  			}
  			if d.slowCacheKey != nil {
  				keys[i] = append(keys[i], CacheKeyWithSelector{CacheKey: ExportableCacheKey{CacheKey: d.slowCacheKey.CacheKey, Exporter: &exporter{k: d.slowCacheKey.CacheKey}}})
  			}
  		}
  	}
  
  	k := NewCacheKey(e.cacheMap.Digest, e.edge.Index)
  	k.deps = keys
  
  	return k
  }
docs: // depKeys returns all current dependency cache keys