Program: 14464
Project: 14464
Buggy source:
@Override public void render(ReportArtEntity report,OutputStream os,Units units) throws IOException {
  doc.setWriter(new OutputStreamWriter(os));
  doc.open();
  doc.textLine("String_Node_Str",1);
  doc.textLine("String_Node_Str" + new Date(report.getBeginMs()).toString(),4);
  doc.textLine("String_Node_Str" + new Date(report.getEndMs()).toString(),4);
  doc.textLine("String_Node_Str",3);
  doc.tableOpen();
  doc.newRow().addValCol("String_Node_Str").addValCol("String_Node_Str").addValCol("String_Node_Str" + units.getSizeUnit().toString() + "String_Node_Str").addValCol("String_Node_Str");
  for (  String zoneName : report.getZones().keySet()) {
    AvailabilityZoneArtEntity zone=report.getZones().get(zoneName);
    doc.newRow().addLabelCol(0,"String_Node_Str" + zoneName).addValCol("String_Node_Str");
    addUsageCols(doc,zone.getUsageTotals().getS3ObjectTotals(),units);
    for (    String accountName : zone.getAccounts().keySet()) {
      AccountArtEntity account=zone.getAccounts().get(accountName);
      doc.newRow().addLabelCol(1,"String_Node_Str" + accountName).addValCol("String_Node_Str");
      addUsageCols(doc,account.getUsageTotals().getS3ObjectTotals(),units);
      for (      String userName : account.getUsers().keySet()) {
        UserArtEntity user=account.getUsers().get(userName);
        doc.newRow().addLabelCol(2,"String_Node_Str" + userName).addValCol("String_Node_Str");
        addUsageCols(doc,user.getUsageTotals().getS3ObjectTotals(),units);
        for (        String bucketName : user.getBuckets().keySet()) {
          BucketArtEntity bucket=user.getBuckets().get(bucketName);
          doc.newRow().addValCol(bucketName);
          addUsageCols(doc,bucket.getTotalUsage(),units);
        }
      }
    }
  }
  doc.tableClose();
  doc.close();
}

Fixed version (ground truth):
@Override public void render(ReportArtEntity report,OutputStream os,Units units) throws IOException {
  doc.setWriter(new OutputStreamWriter(os));
  doc.open();
  doc.textLine("String_Node_Str",1);
  doc.textLine("String_Node_Str" + new Date(report.getBeginMs()).toString(),4);
  doc.textLine("String_Node_Str" + new Date(report.getEndMs()).toString(),4);
  doc.textLine("String_Node_Str",3);
  doc.tableOpen();
  doc.newRow().addValCol("String_Node_Str").addValCol("String_Node_Str").addValCol("String_Node_Str" + units.getSizeUnit().toString() + "String_Node_Str").addValCol("String_Node_Str");
  for (  String accountName : report.getAccounts().keySet()) {
    AccountArtEntity account=report.getAccounts().get(accountName);
    doc.newRow().addLabelCol(1,"String_Node_Str" + accountName).addValCol("String_Node_Str");
    addUsageCols(doc,account.getUsageTotals().getS3ObjectTotals(),units);
    for (    String userName : account.getUsers().keySet()) {
      UserArtEntity user=account.getUsers().get(userName);
      doc.newRow().addLabelCol(2,"String_Node_Str" + userName).addValCol("String_Node_Str");
      addUsageCols(doc,user.getUsageTotals().getS3ObjectTotals(),units);
      for (      String bucketName : user.getBuckets().keySet()) {
        BucketArtEntity bucket=user.getBuckets().get(bucketName);
        doc.newRow().addValCol(bucketName);
        addUsageCols(doc,bucket.getTotalUsage(),units);
      }
    }
  }
  doc.tableClose();
  doc.close();
}