Program: 57719
Project: 57719
Buggy source:
@Override public void init(){
  if (configuration == null || configuration.isDefaultConfiguration()) {
    if (dataSetDescription != null && dataSetDescription.isTransposeMatrix()) {
      if (configuration.isDefaultConfiguration()) {
        IDType.unregisterType(recordIDType);
        IDType.unregisterType(dimensionIDType);
        IDType.unregisterType(recordGroupIDType);
      }
      createDefaultConfigurationWithColumnsAsRecords();
    }
 else     createDefaultConfiguration();
  }
  boolean externalMappingLoaded=false;
  if (configuration.mappingFile != null) {
    IDMappingLoader.get().loadMappingFile(configuration.mappingFile);
    externalMappingLoaded=true;
  }
  if (externalMappingLoaded) {
    recordIDCategory=IDCategory.getIDCategory(configuration.recordIDCategory);
    dimensionIDCategory=IDCategory.getIDCategory(configuration.dimensionIDCategory);
    humanReadableRecordIDType=IDType.getIDType(configuration.humanReadableRecordIDType);
    humanReadableDimensionIDType=IDType.getIDType(configuration.humanReadableDimensionIDType);
  }
 else {
    recordIDCategory=IDCategory.registerCategory(configuration.recordIDCategory);
    dimensionIDCategory=IDCategory.registerCategory(configuration.dimensionIDCategory);
    humanReadableRecordIDType=IDType.registerType(configuration.humanReadableRecordIDType,recordIDCategory,EColumnType.STRING);
    humanReadableDimensionIDType=IDType.registerType(configuration.humanReadableDimensionIDType,dimensionIDCategory,EColumnType.STRING);
  }
  recordIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),recordIDCategory,EColumnType.INT);
  recordIDType.setInternalType(true);
  dimensionIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),dimensionIDCategory,EColumnType.INT);
  dimensionIDType.setInternalType(true);
  recordGroupIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),recordIDCategory,EColumnType.INT);
  recordGroupIDType.setInternalType(true);
  dimensionGroupIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),dimensionIDCategory,EColumnType.INT);
  IDType primaryRecordMappingType;
  if (configuration.primaryRecordMappingType != null) {
    IDType.getIDType(configuration.primaryRecordMappingType);
    primaryRecordMappingType=IDType.getIDType(configuration.primaryRecordMappingType);
  }
 else   primaryRecordMappingType=recordIDType;
  recordIDCategory.setPrimaryMappingType(primaryRecordMappingType);
  IDType primaryDimensionMappingType;
  if (configuration.primaryDimensionMappingType != null)   primaryDimensionMappingType=IDType.getIDType(configuration.primaryDimensionMappingType);
 else   primaryDimensionMappingType=dimensionIDType;
  dimensionIDCategory.setPrimaryMappingType(primaryDimensionMappingType);
  recordDenominationPlural=configuration.recordDenominationPlural;
  recordDenominationSingular=configuration.recordDenominationSingular;
  dimensionDenominationPlural=configuration.dimensionDenominationPlural;
  dimensionDenominationSingular=configuration.dimensionDenominationSingular;
  recordIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(recordIDCategory);
  dimensionIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(dimensionIDCategory);
  recordSelectionManager=new RecordSelectionManager(recordIDType);
  dimensionSelectionManager=new DimensionSelectionManager(dimensionIDType);
  recordGroupSelectionManager=new SelectionManager(recordGroupIDType);
  addIDCategory(dimensionIDCategory);
  addIDCategory(recordIDCategory);
  super.init();
}

Fixed version (ground truth):
@Override public void init(){
  if (configuration == null || configuration.isDefaultConfiguration()) {
    if (dataSetDescription != null && dataSetDescription.isTransposeMatrix()) {
      if (configuration.isDefaultConfiguration()) {
        IDType.unregisterType(recordIDType);
        IDType.unregisterType(dimensionIDType);
        IDType.unregisterType(recordGroupIDType);
        IDType.unregisterType(dimensionGroupIDType);
      }
      createDefaultConfigurationWithColumnsAsRecords();
    }
 else     createDefaultConfiguration();
  }
  boolean externalMappingLoaded=false;
  if (configuration.mappingFile != null) {
    IDMappingLoader.get().loadMappingFile(configuration.mappingFile);
    externalMappingLoaded=true;
  }
  if (externalMappingLoaded) {
    recordIDCategory=IDCategory.getIDCategory(configuration.recordIDCategory);
    dimensionIDCategory=IDCategory.getIDCategory(configuration.dimensionIDCategory);
    humanReadableRecordIDType=IDType.getIDType(configuration.humanReadableRecordIDType);
    humanReadableDimensionIDType=IDType.getIDType(configuration.humanReadableDimensionIDType);
  }
 else {
    recordIDCategory=IDCategory.registerCategory(configuration.recordIDCategory);
    dimensionIDCategory=IDCategory.registerCategory(configuration.dimensionIDCategory);
    humanReadableRecordIDType=IDType.registerType(configuration.humanReadableRecordIDType,recordIDCategory,EColumnType.STRING);
    humanReadableDimensionIDType=IDType.registerType(configuration.humanReadableDimensionIDType,dimensionIDCategory,EColumnType.STRING);
  }
  recordIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),recordIDCategory,EColumnType.INT);
  recordIDType.setInternalType(true);
  dimensionIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),dimensionIDCategory,EColumnType.INT);
  dimensionIDType.setInternalType(true);
  recordGroupIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),recordIDCategory,EColumnType.INT);
  recordGroupIDType.setInternalType(true);
  dimensionGroupIDType=IDType.registerType("String_Node_Str" + dataDomainID + "String_Node_Str"+ hashCode(),dimensionIDCategory,EColumnType.INT);
  IDType primaryRecordMappingType;
  if (configuration.primaryRecordMappingType != null) {
    IDType.getIDType(configuration.primaryRecordMappingType);
    primaryRecordMappingType=IDType.getIDType(configuration.primaryRecordMappingType);
  }
 else   primaryRecordMappingType=recordIDType;
  recordIDCategory.setPrimaryMappingType(primaryRecordMappingType);
  IDType primaryDimensionMappingType;
  if (configuration.primaryDimensionMappingType != null)   primaryDimensionMappingType=IDType.getIDType(configuration.primaryDimensionMappingType);
 else   primaryDimensionMappingType=dimensionIDType;
  dimensionIDCategory.setPrimaryMappingType(primaryDimensionMappingType);
  recordDenominationPlural=configuration.recordDenominationPlural;
  recordDenominationSingular=configuration.recordDenominationSingular;
  dimensionDenominationPlural=configuration.dimensionDenominationPlural;
  dimensionDenominationSingular=configuration.dimensionDenominationSingular;
  recordIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(recordIDCategory);
  dimensionIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(dimensionIDCategory);
  recordSelectionManager=new RecordSelectionManager(recordIDType);
  dimensionSelectionManager=new DimensionSelectionManager(dimensionIDType);
  recordGroupSelectionManager=new SelectionManager(recordGroupIDType);
  addIDCategory(dimensionIDCategory);
  addIDCategory(recordIDCategory);
  super.init();
}