code: func (k *Kademlia) isSaturated(peersPerBin []int, depth int) bool {
  	// depth could be calculated from k but as this is called from `GetHealthInfo()`,
  	// the depth has already been calculated so we can require it as a parameter
  
  	// early check for depth
  	if depth != len(peersPerBin) {
  		return false
  	}
  	unsaturatedBins := make([]int, 0)
  	k.conns.EachBin(k.base, Pof, 0, func(po, size int, f func(func(val pot.Val) bool) bool) bool {
  
  		if po >= depth {
  			return false
  		}
  		log.Trace("peers per bin", "peersPerBin[po]", peersPerBin[po], "po", po)
  		// if there are actually peers in the PeerPot who can fulfill k.MinBinSize
  		if size < k.MinBinSize && size < peersPerBin[po] {
  			log.Trace("connections for po", "po", po, "size", size)
  			unsaturatedBins = append(unsaturatedBins, po)
  		}
  		return true
  	})
  
  	log.Trace("list of unsaturated bins", "unsaturatedBins", unsaturatedBins)
  	return len(unsaturatedBins) == 0
  }
docs: // isSaturated returns true if the kademlia is considered saturated, or false if not.
  // It checks this by checking an array of ints called unsaturatedBins; each item in that array corresponds
  // to the bin which is unsaturated (number of connections < k.MinBinSize).
  // The bin is considered unsaturated only if there are actual peers in that PeerPot's bin (peersPerBin)
  // (if there is no peer for a given bin, then no connection could ever be established;
  // in a God's view this is relevant as no more peers will ever appear on that bin)