code: func (k *Kademlia) Off(p *Peer) {
  	k.lock.Lock()
  	defer k.lock.Unlock()
  	var del bool
  	if !p.BzzPeer.LightNode {
  		k.addrs, _, _, _ = pot.Swap(k.addrs, p, Pof, func(v pot.Val) pot.Val {
  			// v cannot be nil, must check otherwise we overwrite entry
  			if v == nil {
  				panic(fmt.Sprintf("connected peer not found %v", p))
  			}
  			del = true
  			return newEntry(p.BzzAddr)
  		})
  	} else {
  		del = true
  	}
  
  	if del {
  		k.conns, _, _, _ = pot.Swap(k.conns, p, Pof, func(_ pot.Val) pot.Val {
  			// v cannot be nil, but no need to check
  			return nil
  		})
  		// send new address count value only if the peer is deleted
  		if k.addrCountC != nil {
  			k.addrCountC <- k.addrs.Size()
  		}
  		k.sendNeighbourhoodDepthChange()
  	}
  }
docs: // Off removes a peer from among live peers