code: func templateChainDependencies(template Template) []Template {
  	requires := template.Templates()
  	chain := make([]Template, len(requires)*2)
  	for _, req := range requires {
  		chain = append(chain, templateChainDependencies(req)...)
  	}
  	chain = append(chain, template)
  	return chain
  }
docs: //  templateChainDependencies is a recursive function for determining the full chain of template dependencies