public void report(final String reportPath) throws IOException {
    //// Preconditions 
    if (reportPath == null)
      throw new NullPointerException("reportPath must not be null");
    if (reportPath.length() == 0)
      throw new IllegalArgumentException("reportPath must not be an empty string");  
    assert mostTimeConsumingSubLCommandInfos != null : "mostTimeConsumingSubLCommandInfos must not be null";

    fileWriter = new FileWriter(reportPath);
    fileWriter.write("Longest Duration Cyc API Requests");
    fileWriter.write("\n\n");
    for (int i = mostTimeConsumingSubLCommandInfos.size() - 1; i >= 0; i--) {
      final SubLCommandInfo subLCommandInfo = (SubLCommandInfo) mostTimeConsumingSubLCommandInfos.get(i);
      fileWriter.write("----------------------------------------------------------------------\n");
      final String subLCommandInfoString = subLCommandInfo.toString();
      fileWriter.write(subLCommandInfo.toString());  
    }
    fileWriter.close();
  }