Program: 31772
Project: 31772
Buggy source:
public void generateHtml(EvalConfig evalConfig,ModelConfig modelConfig,String fileName,List<PerformanceResult> results,List<String> names) throws IOException {
  BufferedWriter writer=null;
  try {
    writer=ShifuFileUtils.getWriter(fileName,SourceType.LOCAL);
    writer.write(GainChartTemplate.HIGHCHART_BASE_BEGIN);
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_1,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_2,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_3,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_3,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + j + "String_Node_Str");
      for (int i=0; i < result.weightedGains.size(); i++) {
        PerformanceObject po=result.weightedGains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.weightedGains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.weightedGains.size(); i++) {
        PerformanceObject po=result.weightedGains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.weightedGains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (2 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.gains.size(); i++) {
        PerformanceObject po=result.gains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.gains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (3 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.gains.size(); i++) {
        PerformanceObject po=result.gains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.gains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (4 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (5 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (6 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.SCORE_DATA_FORMAT,GainChartTemplate.DF.format(po.scoreCount),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.scoreCount),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    int currIndex=0;
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(GainChartTemplate.HIGHCHART_BASE_END);
  }
  finally {
    if (writer != null) {
      writer.close();
    }
  }
}

Fixed version (ground truth):
public void generateHtml(EvalConfig evalConfig,ModelConfig modelConfig,String fileName,List<PerformanceResult> results,List<String> names) throws IOException {
  BufferedWriter writer=null;
  try {
    writer=ShifuFileUtils.getWriter(fileName,SourceType.LOCAL);
    writer.write(GainChartTemplate.HIGHCHART_BASE_BEGIN);
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_1,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_2,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_3,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_BUTTON_PANEL_TEMPLATE_4,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write(String.format(GainChartTemplate.HIGHCHART_DIV,"String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + j + "String_Node_Str");
      for (int i=0; i < result.weightedGains.size(); i++) {
        PerformanceObject po=result.weightedGains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.weightedGains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.weightedGains.size(); i++) {
        PerformanceObject po=result.weightedGains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.weightedGains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (2 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.gains.size(); i++) {
        PerformanceObject po=result.gains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.gains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (3 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.gains.size(); i++) {
        PerformanceObject po=result.gains.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.gains.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (4 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.weightedRecall * 100),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.weightedPrecision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (5 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.DATA_FORMAT,GainChartTemplate.DF.format(po.recall * 100),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.weightedActionRate * 100),GainChartTemplate.DF.format(po.precision * 100),GainChartTemplate.DF.format(po.actionRate * 100),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    for (int j=0; j < results.size(); j++) {
      PerformanceResult result=results.get(j);
      writer.write("String_Node_Str" + (6 * results.size() + j) + "String_Node_Str");
      for (int i=0; i < result.modelScoreList.size(); i++) {
        PerformanceObject po=result.modelScoreList.get(i);
        writer.write(String.format(GainChartTemplate.SCORE_DATA_FORMAT,GainChartTemplate.DF.format(po.scoreCount),GainChartTemplate.DF.format(po.binLowestScore),GainChartTemplate.DF.format(po.scoreCount),GainChartTemplate.DF.format(po.binLowestScore)));
        if (i != result.modelScoreList.size() - 1) {
          writer.write("String_Node_Str");
        }
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    int currIndex=0;
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_CHART_TEMPLATE_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.SCORE_HIGHCHART_CHART_PREFIX,"String_Node_Str","String_Node_Str",modelConfig.getBasic().getName(),"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    for (int i=0; i < results.size(); i++) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str" + (currIndex++) + "String_Node_Str");
      writer.write("String_Node_Str" + names.get(i) + "String_Node_Str");
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      if (i != results.size() - 1) {
        writer.write("String_Node_Str");
      }
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write(String.format(GainChartTemplate.HIGHCHART_LIST_TOGGLE_TEMPLATE,"String_Node_Str","String_Node_Str","String_Node_Str"));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(GainChartTemplate.HIGHCHART_BASE_END);
  }
  finally {
    if (writer != null) {
      writer.close();
    }
  }
}