code: func (msm *MultistreamMuxer) Ls(w io.Writer) error {
  	buf := new(bytes.Buffer)
  
  	msm.handlerlock.RLock()
  	err := writeUvarint(buf, uint64(len(msm.handlers)))
  	if err != nil {
  		return err
  	}
  
  	for _, h := range msm.handlers {
  		err := delimWrite(buf, []byte(h.AddName))
  		if err != nil {
  			msm.handlerlock.RUnlock()
  			return err
  		}
  	}
  	msm.handlerlock.RUnlock()
  
  	ll := make([]byte, 16)
  	nw := binary.PutUvarint(ll, uint64(buf.Len()))
  
  	r := io.MultiReader(bytes.NewReader(ll[:nw]), buf)
  
  	_, err = io.Copy(w, r)
  	return err
  }
docs: // Ls implements the "ls" command which writes the list of
  // supported protocols to the given Writer.