code: func calculateRoute(rootRouter *Router, req *Request) (*route, map[string]string) {
  	var leaf *pathLeaf
  	var wildcardMap map[string]string
  	method := httpMethod(req.Method)
  	tree, ok := rootRouter.root[method]
  	if ok {
  		leaf, wildcardMap = tree.Match(req.URL.Path)
  	}
  
  	// If no match and this is a HEAD, route on GET.
  	if leaf == nil && method == httpMethodHead {
  		tree, ok := rootRouter.root[httpMethodGet]
  		if ok {
  			leaf, wildcardMap = tree.Match(req.URL.Path)
  		}
  	}
  
  	if leaf == nil {
  		return nil, nil
  	}
  
  	return leaf.route, wildcardMap
  }
docs: // Strange performance characteristics: this hurts benchmark scores.
  // func (ah *actionHandler) invoke(ctx reflect.Value, rw ResponseWriter, req *Request) {
  // 	if ah.Generic {
  // 		ah.GenericHandler(rw, req)
  // 	} else {
  // 		ah.DynamicHandler.Call([]reflect.Value{ctx, reflect.ValueOf(rw), reflect.ValueOf(req)})
  // 	}
  // }