code: func neighbourhoodRadiusForPot(p *pot.Pot, neighbourhoodSize int, pivotAddr []byte) (depth int) {
  	if p.Size() <= neighbourhoodSize {
  		return 0
  	}
  	// total number of peers in iteration
  	var size int
  	f := func(v pot.Val, i int) bool {
  		// po == 256 means that addr is the pivot address(self)
  		if i == 256 {
  			return true
  		}
  		size++
  
  		// this means we have all nn-peers.
  		// depth is by default set to the bin of the farthest nn-peer
  		if size == neighbourhoodSize {
  			depth = i
  			return false
  		}
  
  		return true
  	}
  	p.EachNeighbour(pivotAddr, Pof, f)
  	return depth
  }
docs: // neighbourhoodRadiusForPot returns the neighbourhood radius of the kademlia
  // neighbourhood radius encloses the nearest neighbour set with size >= neighbourhoodSize
  // i.e., neighbourhood radius is the deepest PO such that all bins not shallower altogether
  // contain at least neighbourhoodSize connected peers
  // if there is altogether less than neighbourhoodSize peers connected, it returns 0
  // caller must hold the lock