Program: 107794
Project: 107794
Buggy source:
/** 
 * Applies the given transformation and returns the dataset
 * @param transformation
 * @param microaggregationDictionary A dictionary for microaggregated values
 * @return
 */
public TransformedData applyTransformation(final Transformation transformation,final Dictionary microaggregationDictionary){
  microaggregationDictionary.definalizeAll();
  int initialSize=(int)(inputGeneralized.getDataLength() * 0.01d);
  Transformer transformer=new Transformer(inputGeneralized.getArray(),inputAnalyzed,outputGeneralized,aggregation.getHeader().length,hierarchies,config);
  HashGroupify currentGroupify=new HashGroupify(initialSize,config,aggregation.getHeader().length,inputGeneralized.getArray(),outputGeneralized,inputAnalyzed);
  currentGroupify=transformer.apply(0L,transformation.getGeneralization(),currentGroupify);
  currentGroupify.stateAnalyze(transformation,true);
  if (!currentGroupify.isPrivacyModelFulfilled() && !config.isSuppressionAlwaysEnabled()) {
    currentGroupify.stateResetSuppression();
  }
  InformationLoss<?> loss=transformation.getInformationLoss();
  if (loss == null) {
    loss=metric.getInformationLoss(transformation,currentGroupify).getInformationLoss();
  }
  Data microaggregatedOutput=Data.createWrapper(new DataMatrix(0,0),new String[0],new int[0],new Dictionary(0));
  Data generalizedOutput=Data.createWrapper(transformer.getBuffer(),inputGeneralized.getHeader(),inputGeneralized.getColumns(),inputGeneralized.getDictionary());
  if (aggregation.getColdQIsFunctions().length > 0 || aggregation.getHotQIsNotGeneralizedFunctions().length > 0 || aggregation.getHotQIsGeneralizedFunctions().length > 0) {
    microaggregatedOutput=currentGroupify.performMicroaggregation(aggregation,microaggregationDictionary);
  }
  if (config.getAbsoluteMaxOutliers() != 0 || !currentGroupify.isPrivacyModelFulfilled()) {
    currentGroupify.performSuppression();
  }
  return new TransformedData(generalizedOutput,microaggregatedOutput,new TransformationResult(currentGroupify.isPrivacyModelFulfilled(),minimalClassSizeRequired ? currentGroupify.isMinimalClassSizeFulfilled() : null,loss,null));
}

Fixed version (ground truth):
/** 
 * Applies the given transformation and returns the dataset
 * @param transformation
 * @param microaggregationDictionary A dictionary for microaggregated values
 * @return
 */
public TransformedData applyTransformation(final Transformation transformation,final Dictionary microaggregationDictionary){
  microaggregationDictionary.definalizeAll();
  int initialSize=(int)(inputGeneralized.getDataLength() * 0.01d);
  Transformer transformer=new Transformer(inputGeneralized.getArray(),inputAnalyzed,outputGeneralized,aggregation.getHeader().length,hierarchies,config);
  HashGroupify currentGroupify=new HashGroupify(initialSize,config,aggregation.getHeader().length,inputGeneralized.getArray(),outputGeneralized,inputAnalyzed);
  currentGroupify=transformer.apply(0L,transformation.getGeneralization(),currentGroupify);
  currentGroupify.stateAnalyze(transformation,true);
  if (!currentGroupify.isPrivacyModelFulfilled() && !config.isSuppressionAlwaysEnabled()) {
    currentGroupify.stateResetSuppression();
  }
  InformationLoss<?> loss=transformation.getInformationLoss();
  if (loss == null) {
    loss=metric.getInformationLoss(transformation,currentGroupify).getInformationLoss();
  }
  Data microaggregatedOutput=Data.createWrapper(new DataMatrix(0,0),new String[0],new int[0],new Dictionary(0));
  Data generalizedOutput=Data.createWrapper(transformer.getBuffer(),inputGeneralized.getHeader(),inputGeneralized.getColumns(),inputGeneralized.getDictionary());
  if (aggregation.getColdQIsFunctions().length > 0 || aggregation.getHotQIsNotGeneralizedFunctions().length > 0 || aggregation.getHotQIsGeneralizedFunctions().length > 0) {
    microaggregatedOutput=currentGroupify.performMicroaggregation(aggregation,microaggregationDictionary);
  }
  if (config.getAbsoluteSuppressionLimit() != 0 || !currentGroupify.isPrivacyModelFulfilled()) {
    currentGroupify.performSuppression();
  }
  return new TransformedData(generalizedOutput,microaggregatedOutput,new TransformationResult(currentGroupify.isPrivacyModelFulfilled(),minimalClassSizeRequired ? currentGroupify.isMinimalClassSizeFulfilled() : null,loss,null));
}