code: func NewBzz(config *BzzConfig, kad *Kademlia, store state.Store, streamerSpec *protocols.Spec, streamerRun func(*BzzPeer) error) *Bzz {
  	bzz := &Bzz{
  		Hive:         NewHive(config.HiveParams, kad, store),
  		NetworkID:    config.NetworkID,
  		LightNode:    config.LightNode,
  		localAddr:    &BzzAddr{config.OverlayAddr, config.UnderlayAddr},
  		handshakes:   make(map[enode.ID]*HandshakeMsg),
  		streamerRun:  streamerRun,
  		streamerSpec: streamerSpec,
  	}
  
  	if config.BootnodeMode {
  		bzz.streamerRun = nil
  		bzz.streamerSpec = nil
  	}
  
  	return bzz
  }
docs: // NewBzz is the swarm protocol constructor
  // arguments
  // * bzz config
  // * overlay driver
  // * peer store