code: func (msm *MultistreamMuxer) AddHandlerWithFunc(protocol string, match func(string) bool, handler HandlerFunc) {
  	msm.handlerlock.Lock()
  	defer msm.handlerlock.Unlock()
  
  	msm.removeHandler(protocol)
  	msm.handlers = append(msm.handlers, Handler{
  		MatchFunc: match,
  		Handle:    handler,
  		AddName:   protocol,
  	})
  }
docs: // AddHandlerWithFunc attaches a new protocol handler to the muxer with a match.
  // If the match function returns true for a given protocol tag, the protocol
  // will be selected even if the handler name and protocol tags are different.