Program: 108128
Project: 108128
Buggy source:
/** 
 * Instantiates a new handle.
 * @param result
 * @param registry
 * @param manager
 * @param bufferGH
 * @param bufferOT
 * @param node
 * @param statistics
 * @param definition
 * @param config
 */
protected DataHandleOutput(final ARXResult result,final DataRegistry registry,final DataManager manager,final Data bufferGH,final Data bufferOT,final ARXNode node,final StatisticsEquivalenceClasses statistics,final DataDefinition definition,final ARXConfiguration config){
  registry.updateOutput(node,this);
  this.setRegistry(registry);
  this.suppressionString=config.getSuppressionString();
  this.suppressedAttributeTypes=convert(config.getSuppressedAttributeTypes());
  this.result=result;
  this.definition=definition;
  this.statistics=new StatisticsBuilder(new DataHandleStatistics(this),statistics);
  this.node=node;
  this.dataGH=bufferGH;
  this.dataOT=bufferOT;
  this.dataDI=manager.getDataAnalyzed();
  this.dataIS=manager.getDataStatic();
  this.header=manager.getHeader();
  this.startIndexMA=manager.getMicroaggregationStartIndex();
  this.inverseMap=new int[header.length * 2];
  for (int i=0; i < this.inverseMap.length; i+=2) {
    this.inverseMap[i]=AttributeTypeInternal.IDENTIFYING;
    this.inverseMap[i + 1]=-1;
  }
  for (int i=0; i < this.dataGH.getMap().length; i++) {
    final int pos=dataGH.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < this.startIndexMA; i++) {
    final int pos=dataDI.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.SENSITIVE;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < dataOT.getMap().length; i++) {
    final int pos=dataOT.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < dataIS.getMap().length; i++) {
    final int pos=dataIS.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.INSENSITIVE;
    this.inverseMap[pos + 1]=i;
  }
  this.inverseData=new int[5][][];
  this.inverseData[AttributeTypeInternal.INSENSITIVE]=this.dataIS.getArray();
  this.inverseData[AttributeTypeInternal.SENSITIVE]=this.dataDI.getArray();
  this.inverseData[AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED]=this.dataGH.getArray();
  this.inverseData[AttributeTypeInternal.IDENTIFYING]=null;
  this.inverseData[AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED]=this.dataOT.getArray();
  this.inverseDictionaries=new Dictionary[5];
  this.inverseDictionaries[AttributeTypeInternal.INSENSITIVE]=this.dataIS.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.SENSITIVE]=this.dataDI.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED]=this.dataGH.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.IDENTIFYING]=null;
  this.inverseDictionaries[AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED]=this.dataOT.getDictionary();
  this.getRegistry().createOutputSubset(node,config,statistics);
  this.dataTypes=getDataTypeArray();
}

Fixed version (ground truth):
/** 
 * Instantiates a new handle.
 * @param result
 * @param registry
 * @param manager
 * @param outputGeneralized
 * @param outputMicroaggregated
 * @param node
 * @param statistics
 * @param definition
 * @param config
 */
protected DataHandleOutput(final ARXResult result,final DataRegistry registry,final DataManager manager,final Data outputGeneralized,final Data outputMicroaggregated,final ARXNode node,final StatisticsEquivalenceClasses statistics,final DataDefinition definition,final ARXConfiguration config){
  registry.updateOutput(node,this);
  this.setRegistry(registry);
  this.suppressionString=config.getSuppressionString();
  this.suppressedAttributeTypes=convert(config.getSuppressedAttributeTypes());
  this.result=result;
  this.definition=definition;
  this.statistics=new StatisticsBuilder(new DataHandleStatistics(this),statistics);
  this.node=node;
  this.outputGeneralized=outputGeneralized;
  this.outputMicroaggregated=outputMicroaggregated;
  this.inputAnalyzed=manager.getDataAnalyzed();
  this.inputStatic=manager.getDataStatic();
  this.header=manager.getHeader();
  this.microaggregationStartIndex=manager.getMicroaggregationStartIndex();
  this.inverseMap=new int[header.length * 2];
  for (int i=0; i < this.inverseMap.length; i+=2) {
    this.inverseMap[i]=AttributeTypeInternal.IDENTIFYING;
    this.inverseMap[i + 1]=-1;
  }
  for (int i=0; i < this.outputGeneralized.getMap().length; i++) {
    final int pos=outputGeneralized.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < this.microaggregationStartIndex; i++) {
    final int pos=inputAnalyzed.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.SENSITIVE;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < outputMicroaggregated.getMap().length; i++) {
    final int pos=outputMicroaggregated.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED;
    this.inverseMap[pos + 1]=i;
  }
  for (int i=0; i < inputStatic.getMap().length; i++) {
    final int pos=inputStatic.getMap()[i] * 2;
    this.inverseMap[pos]=AttributeTypeInternal.INSENSITIVE;
    this.inverseMap[pos + 1]=i;
  }
  this.inverseData=new int[5][][];
  this.inverseData[AttributeTypeInternal.INSENSITIVE]=this.inputStatic.getArray();
  this.inverseData[AttributeTypeInternal.SENSITIVE]=this.inputAnalyzed.getArray();
  this.inverseData[AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED]=this.outputGeneralized.getArray();
  this.inverseData[AttributeTypeInternal.IDENTIFYING]=null;
  this.inverseData[AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED]=this.outputMicroaggregated.getArray();
  this.inverseDictionaries=new Dictionary[5];
  this.inverseDictionaries[AttributeTypeInternal.INSENSITIVE]=this.inputStatic.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.SENSITIVE]=this.inputAnalyzed.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.QUASI_IDENTIFYING_GENERALIZED]=this.outputGeneralized.getDictionary();
  this.inverseDictionaries[AttributeTypeInternal.IDENTIFYING]=null;
  this.inverseDictionaries[AttributeTypeInternal.QUASI_IDENTIFYING_MICROAGGREGATED]=this.outputMicroaggregated.getDictionary();
  this.getRegistry().createOutputSubset(node,config,statistics);
  this.dataTypes=getDataTypeArray();
}