Program: 75711
Project: 75711
Buggy source:
/** 
 * @param aggregation
 * @param aggregationResultRow
 * @param keyNames
 * @param attributeNames
 * @throws IOException
 */
public AggregationResultSet(AggregationDefinition aggregation,IDiskArray aggregationResultRow,String[][] keyNames,String[][] attributeNames) throws IOException {
  Object[] params={aggregation,aggregationResultRow,keyNames,attributeNames};
  logger.entering(AggregationResultSet.class.getName(),"String_Node_Str",params);
  this.aggregation=aggregation;
  this.aggregationResultRows=aggregationResultRow;
  produceaggregationNameMap();
  this.keyNames=keyNames;
  this.attributeNames=attributeNames;
  this.resultObject=(IAggregationResultRow)aggregationResultRow.get(0);
  if (resultObject.getLevelMembers() != null) {
    keyDataTypes=new int[resultObject.getLevelMembers().length][];
    attributeDataTypes=new int[resultObject.getLevelMembers().length][];
    for (int i=0; i < resultObject.getLevelMembers().length; i++) {
      keyDataTypes[i]=new int[resultObject.getLevelMembers()[i].getKeyValues().length];
      for (int j=0; j < resultObject.getLevelMembers()[i].getKeyValues().length; j++) {
        keyDataTypes[i][j]=DataType.getDataType(resultObject.getLevelMembers()[i].getKeyValues()[j].getClass());
      }
      if (resultObject.getLevelMembers()[i].getAttributes() != null) {
        attributeDataTypes[i]=new int[resultObject.getLevelMembers()[i].getAttributes().length];
        for (int j=0; j < attributeDataTypes[i].length; j++) {
          if (resultObject.getLevelMembers()[i].getAttributes()[j] != null)           attributeDataTypes[i][j]=DataType.getDataType(resultObject.getLevelMembers()[i].getAttributes()[j].getClass());
        }
      }
    }
  }
  if (resultObject.getAggregationValues() != null) {
    aggregationDataType=new int[resultObject.getAggregationValues().length];
    for (int i=0; i < resultObject.getAggregationValues().length; i++) {
      aggregationDataType[i]=DataType.getDataType(resultObject.getAggregationValues()[i].getClass());
    }
  }
  logger.exiting(AggregationResultSet.class.getName(),"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * @param aggregation
 * @param aggregationResultRow
 * @param keyNames
 * @param attributeNames
 * @throws IOException
 */
public AggregationResultSet(AggregationDefinition aggregation,IDiskArray aggregationResultRow,String[][] keyNames,String[][] attributeNames) throws IOException {
  Object[] params={aggregation,aggregationResultRow,keyNames,attributeNames};
  logger.entering(AggregationResultSet.class.getName(),"String_Node_Str",params);
  this.aggregation=aggregation;
  this.aggregationResultRows=aggregationResultRow;
  produceaggregationNameMap();
  this.keyNames=keyNames;
  this.attributeNames=attributeNames;
  if (aggregationResultRow.size() == 0)   return;
  this.resultObject=(IAggregationResultRow)aggregationResultRow.get(0);
  if (resultObject.getLevelMembers() != null) {
    keyDataTypes=new int[resultObject.getLevelMembers().length][];
    attributeDataTypes=new int[resultObject.getLevelMembers().length][];
    for (int i=0; i < resultObject.getLevelMembers().length; i++) {
      keyDataTypes[i]=new int[resultObject.getLevelMembers()[i].getKeyValues().length];
      for (int j=0; j < resultObject.getLevelMembers()[i].getKeyValues().length; j++) {
        keyDataTypes[i][j]=DataType.getDataType(resultObject.getLevelMembers()[i].getKeyValues()[j].getClass());
      }
      if (resultObject.getLevelMembers()[i].getAttributes() != null) {
        attributeDataTypes[i]=new int[resultObject.getLevelMembers()[i].getAttributes().length];
        for (int j=0; j < attributeDataTypes[i].length; j++) {
          if (resultObject.getLevelMembers()[i].getAttributes()[j] != null)           attributeDataTypes[i][j]=DataType.getDataType(resultObject.getLevelMembers()[i].getAttributes()[j].getClass());
        }
      }
    }
  }
  if (resultObject.getAggregationValues() != null) {
    aggregationDataType=new int[resultObject.getAggregationValues().length];
    for (int i=0; i < resultObject.getAggregationValues().length; i++) {
      aggregationDataType[i]=DataType.getDataType(resultObject.getAggregationValues()[i].getClass());
    }
  }
  logger.exiting(AggregationResultSet.class.getName(),"String_Node_Str");
}