Program: 109030
Project: 109030
Buggy source:
/** 
 * Prints the result
 * @param result
 * @param data
 */
protected static void printResult(final ARXResult result,final Data data){
  final ARXNode optimum=result.getGlobalOptimum();
  final List<String> qis=new ArrayList<String>(data.getDefinition().getQuasiIdentifyingAttributes());
  final StringBuffer[] identifiers=new StringBuffer[qis.size()];
  final StringBuffer[] generalizations=new StringBuffer[qis.size()];
  int lengthI=0;
  int lengthG=0;
  for (int i=0; i < qis.size(); i++) {
    identifiers[i]=new StringBuffer();
    generalizations[i]=new StringBuffer();
    identifiers[i].append(qis.get(i));
    generalizations[i].append(optimum.getGeneralization(qis.get(i))).append("String_Node_Str").append(data.getDefinition().getHierarchyHeight(qis.get(i)) - 1);
    lengthI=Math.max(lengthI,identifiers[i].length());
    lengthG=Math.max(lengthG,generalizations[i].length());
  }
  for (int i=0; i < qis.size(); i++) {
    while (identifiers[i].length() < lengthI) {
      identifiers[i].append("String_Node_Str");
    }
    while (generalizations[i].length() < lengthG) {
      generalizations[i].insert(0,"String_Node_Str");
    }
  }
  final DecimalFormat df1=new DecimalFormat("String_Node_Str");
  final String sTotal=df1.format(result.getTime() / 1000d) + "String_Node_Str";
  System.out.println("String_Node_Str" + sTotal);
  System.out.println("String_Node_Str" + result.getGlobalOptimum().getMaximumInformationLoss().getValue());
  System.out.println("String_Node_Str");
  for (int i=0; i < qis.size(); i++) {
    System.out.println("String_Node_Str" + identifiers[i] + "String_Node_Str"+ generalizations[i]);
  }
}

Fixed version (ground truth):
/** 
 * Prints the result
 * @param result
 * @param data
 */
protected static void printResult(final ARXResult result,final Data data){
  final DecimalFormat df1=new DecimalFormat("String_Node_Str");
  final String sTotal=df1.format(result.getTime() / 1000d) + "String_Node_Str";
  System.out.println("String_Node_Str" + sTotal);
  final ARXNode optimum=result.getGlobalOptimum();
  final List<String> qis=new ArrayList<String>(data.getDefinition().getQuasiIdentifyingAttributes());
  if (optimum == null) {
    System.out.println("String_Node_Str");
    return;
  }
  final StringBuffer[] identifiers=new StringBuffer[qis.size()];
  final StringBuffer[] generalizations=new StringBuffer[qis.size()];
  int lengthI=0;
  int lengthG=0;
  for (int i=0; i < qis.size(); i++) {
    identifiers[i]=new StringBuffer();
    generalizations[i]=new StringBuffer();
    identifiers[i].append(qis.get(i));
    generalizations[i].append(optimum.getGeneralization(qis.get(i))).append("String_Node_Str").append(data.getDefinition().getHierarchyHeight(qis.get(i)) - 1);
    lengthI=Math.max(lengthI,identifiers[i].length());
    lengthG=Math.max(lengthG,generalizations[i].length());
  }
  for (int i=0; i < qis.size(); i++) {
    while (identifiers[i].length() < lengthI) {
      identifiers[i].append("String_Node_Str");
    }
    while (generalizations[i].length() < lengthG) {
      generalizations[i].insert(0,"String_Node_Str");
    }
  }
  System.out.println("String_Node_Str" + result.getGlobalOptimum().getMaximumInformationLoss().getValue());
  System.out.println("String_Node_Str");
  for (int i=0; i < qis.size(); i++) {
    System.out.println("String_Node_Str" + identifiers[i] + "String_Node_Str"+ generalizations[i]);
  }
}