code: func (r *Router) Handle(path string, handler http.Handler, httpMethods ...string) *Trie {
  	var version string
  	if i := strings.Index(path, "#"); i != -1 {
  		version = path[i+1:]
  		path = path[:i]
  	}
  	pathParts := r.splitPath(path)
  
  	// search for dynamic routes
  	for _, p := range pathParts {
  		if strings.HasPrefix(p, ":") {
  			if _, ok := r.dynamicRoutes[p]; !ok {
  				r.err = fmt.Errorf("[%s] not found, need to add it using AddRegex(%q, `your regex`", p, p)
  				return nil
  			}
  		}
  	}
  
  	// if no methods, accept ALL
  	methods := "ALL"
  	if len(httpMethods) > 0 && len(strings.TrimSpace(httpMethods[0])) > 0 {
  		methods = httpMethods[0]
  	}
  
  	if r.Verbose {
  		log.Printf("Adding path: %s [%s] %s", path, methods, version)
  	}
  
  	trie, err := r.routes.Set(pathParts, handler, methods, version)
  	if err != nil {
  		r.err = err
  		return nil
  	}
  	return trie
  }
docs: // Handle registers the handler for the given pattern (path, http.Handler, methods).