Program: 108805
Project: 108805
Buggy source:
/** 
 * Instantiates a new handle.
 * @param registry The registry
 * @param manager The data manager
 * @param checker The node checker
 * @param node The node to apply
 * @param eqStatistics Statistics for the whole data
 * @param peqStatistics Statistics for the subset
 * @param suppressionString The suppression string
 * @param definition The data definition
 * @param removeOutliers Do we remove outliers
 * @param node The underlying transformation
 * @param config The underlying config
 */
protected DataHandleOutput(final DataRegistry registry,final DataManager manager,final Data buffer,final ARXNode node,final EquivalenceClassStatistics eqStatistics,final EquivalenceClassStatistics peqStatistics,final String suppressionString,final DataDefinition definition,final boolean removeOutliers,final ARXConfiguration config){
  registry.updateOutput(node,this);
  this.setRegistry(registry);
  this.removeOutliers=removeOutliers;
  this.suppressionString=suppressionString;
  this.definition=definition;
  this.statistics=new DataStatistics(this,eqStatistics);
  this.node=node;
  this.dataQI=buffer;
  this.dataSE=manager.getDataSE();
  this.dataIS=manager.getDataIS();
  this.header=manager.getHeader();
  GeneralizationHierarchy[] hierarchies=manager.getHierarchies();
  this.quasiIdentifiers=new String[hierarchies.length];
  this.map=new int[hierarchies.length][][];
  for (int i=0; i < hierarchies.length; i++) {
    this.quasiIdentifiers[i]=hierarchies[i].getName();
    this.map[i]=hierarchies[i].getArray();
  }
  this.inverseMap=new int[header.length];
  for (int i=0; i < this.inverseMap.length; i++) {
    this.inverseMap[i]=(AttributeType.ATTR_TYPE_ID << AttributeType.SHIFT);
  }
  for (int i=0; i < this.dataQI.getMap().length; i++) {
    this.inverseMap[dataQI.getMap()[i]]=i | (AttributeType.ATTR_TYPE_QI << AttributeType.SHIFT);
  }
  for (int i=0; i < this.dataSE.getMap().length; i++) {
    this.inverseMap[dataSE.getMap()[i]]=i | (AttributeType.ATTR_TYPE_SE << AttributeType.SHIFT);
  }
  for (int i=0; i < dataIS.getMap().length; i++) {
    inverseMap[dataIS.getMap()[i]]=i | (AttributeType.ATTR_TYPE_IS << AttributeType.SHIFT);
  }
  this.inverseData=new int[3][][];
  this.inverseData[AttributeType.ATTR_TYPE_IS]=this.dataIS.getArray();
  this.inverseData[AttributeType.ATTR_TYPE_SE]=this.dataSE.getArray();
  this.inverseData[AttributeType.ATTR_TYPE_QI]=this.dataQI.getArray();
  this.inverseDictionaries=new Dictionary[3];
  this.inverseDictionaries[AttributeType.ATTR_TYPE_IS]=this.dataIS.getDictionary();
  this.inverseDictionaries[AttributeType.ATTR_TYPE_SE]=this.dataSE.getDictionary();
  this.inverseDictionaries[AttributeType.ATTR_TYPE_QI]=this.dataQI.getDictionary();
  this.getRegistry().createOutputSubset(node,config,peqStatistics);
  this.dataTypes=getDataTypeArray();
}

Fixed version (ground truth):
/** 
 * Instantiates a new handle.
 * @param registry The registry
 * @param manager The data manager
 * @param checker The node checker
 * @param node The node to apply
 * @param statistics Statistics for the dataset
 * @param suppressionString The suppression string
 * @param definition The data definition
 * @param removeOutliers Do we remove outliers
 * @param node The underlying transformation
 * @param config The underlying config
 */
protected DataHandleOutput(final DataRegistry registry,final DataManager manager,final Data buffer,final ARXNode node,final EquivalenceClassStatistics statistics,final String suppressionString,final DataDefinition definition,final boolean removeOutliers,final ARXConfiguration config){
  registry.updateOutput(node,this);
  this.setRegistry(registry);
  this.removeOutliers=removeOutliers;
  this.suppressionString=suppressionString;
  this.definition=definition;
  this.statistics=new DataStatistics(this,statistics);
  this.node=node;
  this.dataQI=buffer;
  this.dataSE=manager.getDataSE();
  this.dataIS=manager.getDataIS();
  this.header=manager.getHeader();
  GeneralizationHierarchy[] hierarchies=manager.getHierarchies();
  this.quasiIdentifiers=new String[hierarchies.length];
  this.map=new int[hierarchies.length][][];
  for (int i=0; i < hierarchies.length; i++) {
    this.quasiIdentifiers[i]=hierarchies[i].getName();
    this.map[i]=hierarchies[i].getArray();
  }
  this.inverseMap=new int[header.length];
  for (int i=0; i < this.inverseMap.length; i++) {
    this.inverseMap[i]=(AttributeType.ATTR_TYPE_ID << AttributeType.SHIFT);
  }
  for (int i=0; i < this.dataQI.getMap().length; i++) {
    this.inverseMap[dataQI.getMap()[i]]=i | (AttributeType.ATTR_TYPE_QI << AttributeType.SHIFT);
  }
  for (int i=0; i < this.dataSE.getMap().length; i++) {
    this.inverseMap[dataSE.getMap()[i]]=i | (AttributeType.ATTR_TYPE_SE << AttributeType.SHIFT);
  }
  for (int i=0; i < dataIS.getMap().length; i++) {
    inverseMap[dataIS.getMap()[i]]=i | (AttributeType.ATTR_TYPE_IS << AttributeType.SHIFT);
  }
  this.inverseData=new int[3][][];
  this.inverseData[AttributeType.ATTR_TYPE_IS]=this.dataIS.getArray();
  this.inverseData[AttributeType.ATTR_TYPE_SE]=this.dataSE.getArray();
  this.inverseData[AttributeType.ATTR_TYPE_QI]=this.dataQI.getArray();
  this.inverseDictionaries=new Dictionary[3];
  this.inverseDictionaries[AttributeType.ATTR_TYPE_IS]=this.dataIS.getDictionary();
  this.inverseDictionaries[AttributeType.ATTR_TYPE_SE]=this.dataSE.getDictionary();
  this.inverseDictionaries[AttributeType.ATTR_TYPE_QI]=this.dataQI.getDictionary();
  this.getRegistry().createOutputSubset(node,config,statistics);
  this.dataTypes=getDataTypeArray();
}