title: How can live without inheritance in closure templates in big project?
body: <p>We use closure library and closure compiler, and we want to use closure templates.</p>
  
  <p>But closure templates haven't got inheritance. That's really a problem for us.</p>
  
  <p>As I understand, the reason why closure templates don't have inheritance, is because templates must be simple, and easy to read.</p>
  
  <p>But how can you live without inheritance in big projects?</p>
  
  <p>For example, we have a template file <em>button.soy</em> that generates button with public template <code>project.createButton</code> and private templates: <code>project.createOpenTag_</code>, <code>project.createCSSClasses_</code>, <code>project.createAttributes_</code>, <code>project.createContent_</code>, <code>project.createCloseTag_</code>.</p>
  
  <p>We have JavaScript class <code>project.Button</code>, and we have <code>project.ButtonCircle</code> (perhaps this separate class <code>project.ButtonCircle</code> seems unnecessary, but it's just an example) which extends <code>project.Button</code>.</p>
  
  <p><code>project.ButtonCircle</code> needs little changes made in <code>project.createButton</code> template.</p>
  
  <p>Of course we can add new functionality to <code>project.createButton</code>, but it's a very bad idea, because such approach will create monster templates in the future.</p>
  
  <p>Or we can create public template <code>project.createCircleButton</code> in file <em>button-circle.soy</em>, call all private templates from <code>project.createButton</code> in it, and when we need to 'override' one of these private templates, (for example <code>project.createCSSClasses_</code>), we just create new private template in <em>button-circle.soy</em> with name <code>project.createCSSClassesCirbleButton_</code>.</p>
  
  <p>Yet in this case we need to copy-paste all content from <code>project.createButton</code> to <code>project.createCircleButton</code>. That's terrible.</p>
  
  <p>Also we tried using Delegate Templates, but it's not suited for inheritance.</p>
  
  <p>What is approach towards this problem?</p>