code: func (e *edge) allDepsHaveKeys(matching bool) bool {
  	if e.cacheMap == nil {
  		return false
  	}
  	for _, d := range e.deps {
  		cond := len(d.keys) == 0
  		if matching {
  			cond = len(d.keyMap) == 0
  		}
  		if cond && d.slowCacheKey == nil && d.result == nil {
  			return false
  		}
  	}
  	return true
  }
docs: // allDepsHaveKeys checks if all dependencies have at least one key. used for
  // determining if there is enough data for combining cache key for edge