code: func (t *TemplateAdapter) Execute(w io.Writer, data interface{}) (execErr error) {
  	defer func() {
  		// Panics in templates are a little bit too common (nil pointers etc.)
  		// See https://github.com/gohugoio/hugo/issues/5327
  		if r := recover(); r != nil {
  			execErr = t.addFileContext(t.Name(), fmt.Errorf(`panic in Execute: %s. See "https://github.com/gohugoio/hugo/issues/5327" for the reason why we cannot provide a better error message for this`, r))
  		}
  	}()
  
  	if t.Metrics != nil {
  		defer t.Metrics.MeasureSince(t.Name(), time.Now())
  	}
  
  	execErr = t.Template.Execute(w, data)
  	if execErr != nil {
  		execErr = t.addFileContext(t.Name(), execErr)
  	}
  
  	return
  }
docs: // Execute executes the current template. The actual execution is performed
  // by the embedded text or html template, but we add an implementation here so
  // we can add a timer for some metrics.