code: func (tpl *Template) Clone() *Template {
  	result := newTemplate(tpl.source)
  
  	result.program = tpl.program
  
  	tpl.mutex.RLock()
  	defer tpl.mutex.RUnlock()
  
  	for name, helper := range tpl.helpers {
  		result.RegisterHelper(name, helper.Interface())
  	}
  
  	for name, partial := range tpl.partials {
  		result.addPartial(name, partial.source, partial.tpl)
  	}
  
  	return result
  }
docs: // Clone returns a copy of that template.