code: func Muxer(name string, tpt interface{}) Option {
  	mtpt, err := config.MuxerConstructor(tpt)
  	err = traceError(err, 1)
  	return func(cfg *Config) error {
  		if err != nil {
  			return err
  		}
  		cfg.Muxers = append(cfg.Muxers, config.MsMuxC{MuxC: mtpt, ID: name})
  		return nil
  	}
  }
docs: // Muxer configures libp2p to use the given stream multiplexer (or stream
  // multiplexer constructor).
  //
  // Name is the protocol name.
  //
  // The transport can be a constructed mux.Transport or a function taking any
  // subset of this libp2p node's:
  // * Peer ID
  // * Host
  // * Network
  // * Peerstore