code: function _createTemplateTree(templates) {
    const tree = {};
  
    for (const tpl of templates) {
      const parsed = Template.fromFile(tpl).parse();
  
      for (const [, sectionAttrs] of Object.entries(parsed)) {
        const sectionName = sectionAttrs.name;
  
        tree[sectionName] = tree[sectionName] || { form: false, options: {}, fields: {} };
        Object.assign(tree[sectionName].options, sectionAttrs.params);
        tree[sectionName].form = tree[sectionName].form || sectionAttrs.keyword === 'form';
  
        for (const [, fieldAttrs] of Object.entries(sectionAttrs.fields)) {
          const fieldName = fieldAttrs.name;
          tree[sectionName].fields[fieldName] = Object.assign({ type: 'text' }, tree[sectionName].fields[fieldName] || {}, fieldAttrs.params);
        }
      }
    }
  
    return tree;
  }
docs: @private
  
  Crawls templates, and creates object representing the data model
  
  @param {array} templates - array of file paths
  @return {Object} template tree
  
  @todo Yuck, this is nasty. Clean it up.
   /* eslint-disable no-restricted-syntax