code: private void emitOutputFromTemplates (
              final List<Map<String, String>> groupMaps,
              final List<Map<String, String>> featureMaps)
      {
          try {
              /* ------------------------------------------------------------------- */
              /* You should do this ONLY ONCE in the whole application life-cycle:   */
              final Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
              cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_23));
  
              // We need to set up a scheme to load our settings from wherever they may live.
              // This means we need to set up a multi-loader including the classpath and any specified options:
  
              TemplateLoader templateLoader;
  
              // Only add the settings directory if we're supposed to:
              if ( useDefaultTemplates ) {
                  templateLoader = new ClassTemplateLoader(getClass(), DEFAULT_SETTINGS_CLASSPATH);
              }
              else {
                  templateLoader = new FileTemplateLoader(new File(settingsDir.getPath()));
              }
  
              // Tell freemarker to load our templates as we specified above:
              cfg.setTemplateLoader(templateLoader);
  
              // Generate one template file for each work unit
              workUnits.stream().forEach(workUnit -> processWorkUnitTemplate(cfg, workUnit, groupMaps, featureMaps));
              processIndexTemplate(cfg, new ArrayList<>(workUnits), groupMaps);
  
          } catch (FileNotFoundException e) {
              throw new RuntimeException("FileNotFoundException processing javadoc template", e);
          } catch (IOException e) {
              throw new RuntimeException("IOException processing javadoc template", e);
          }
      }
docs: Actually write out the output files (html and gson file for each feature) and the index file.