code: func (s Server) Serve(l net.Listener) error {
  	originalHandler := s.Server.Handler
  	if originalHandler == nil {
  		originalHandler = http.DefaultServeMux
  	}
  	s.Server.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  		if r.Method == "PRI" && r.URL.Path == "*" && r.Proto == "HTTP/2.0" {
  			if http2VerboseLogs {
  				log.Debugf("Attempting h2c with prior knowledge.")
  			}
  			conn, err := initH2CWithPriorKnowledge(w)
  			if err != nil {
  				if http2VerboseLogs {
  					log.Debugf("Error h2c with prior knowledge: %v", err)
  				}
  				return
  			}
  			defer conn.Close()
  			h2cSrv := &http2.Server{}
  			h2cSrv.ServeConn(conn, &http2.ServeConnOpts{Handler: originalHandler})
  			return
  		}
  		if conn, err := h2cUpgrade(w, r); err == nil {
  			defer conn.Close()
  			h2cSrv := &http2.Server{}
  			h2cSrv.ServeConn(conn, &http2.ServeConnOpts{Handler: originalHandler})
  			return
  		}
  		originalHandler.ServeHTTP(w, r)
  	})
  	return s.Server.Serve(l)
  }
docs: // Serve Put a middleware around the original handler to handle h2c