code: func (e *edge) skipPhase2SlowCache(dep *dep) bool {
  	isPhase1 := false
  	for _, dep := range e.deps {
  		if (!dep.slowCacheComplete && e.slowCacheFunc(dep) != nil || dep.state < edgeStatusCacheSlow) && len(dep.keyMap) == 0 {
  			isPhase1 = true
  			break
  		}
  	}
  
  	if isPhase1 && !dep.slowCacheComplete && e.slowCacheFunc(dep) != nil && len(dep.keyMap) > 0 {
  		return true
  	}
  	return false
  }
docs: // slow cache keys can be computed in 2 phases if there are multiple deps.
  // first evaluate ones that didn't match any definition based keys