code: func (b *Bundle) Render(c context.Context, e *Extra, name string, args Args) ([]byte, error) {
  	templ, err := b.Get(name)
  	if err != nil {
  		return nil, err
  	}
  
  	var defArgs Args
  	if b.DefaultArgs != nil {
  		var err error
  		if defArgs, err = b.DefaultArgs(c, e); err != nil {
  			return nil, err
  		}
  	}
  
  	out := bytes.Buffer{}
  	if b.DefaultTemplate == "" {
  		err = templ.Execute(&out, MergeArgs(defArgs, args))
  	} else {
  		err = templ.ExecuteTemplate(&out, b.DefaultTemplate, MergeArgs(defArgs, args))
  	}
  	if err != nil {
  		return nil, err
  	}
  
  	return out.Bytes(), nil
  }
docs: // Render finds template with given name and calls its Execute or
  // ExecuteTemplate method (depending on the value of DefaultTemplate).
  //
  // It passes the given context and Extra verbatim to DefaultArgs(...).
  // If DefaultArgs(...) doesn't access either of them, it is fine to pass nil
  // instead.
  //
  // It always renders output into byte buffer, to avoid partial results in case
  // of errors.
  //
  // The bundle must be loaded by this point (via call to EnsureLoaded).