Program: 57940
Project: 57940
Buggy source:
/** 
 * Loads the project from a directory
 * @param dirName name of the directory to load the project from
 * @return initialization data for the application from which it can restore itself
 */
public SerializationData loadDirectory(String dirName){
  loadPlugins(dirName);
  SerializationData serializationData=null;
  SerializationManager serializationManager=GeneralManager.get().getSerializationManager();
  JAXBContext projectContext=serializationManager.getProjectContext();
  try {
    Unmarshaller unmarshaller=projectContext.createUnmarshaller();
    try {
      GeneralManager.get().setBasicInfo((BasicInformation)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.BASIC_INFORMATION_FILE_NAME)));
    }
 catch (    FileNotFoundException e) {
      throw new IllegalStateException("String_Node_Str");
    }
    DataDomainList dataDomainList;
    try {
      dataDomainList=(DataDomainList)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.DATA_DOMAIN_FILE_NAME));
    }
 catch (    FileNotFoundException e1) {
      throw new IllegalStateException("String_Node_Str");
    }
    serializationData=new SerializationData();
    for (    ADataDomain dataDomain : dataDomainList.getDataDomains()) {
      Thread thread=new Thread(dataDomain,dataDomain.getDataDomainID());
      thread.start();
      if (dataDomain instanceof ATableBasedDataDomain) {
        String extendedDirName=dirName + dataDomain.getDataDomainID() + "String_Node_Str";
        String setFileName=extendedDirName + ProjectSaver.DATA_TABLE_FILE_NAME;
        DataDomainSerializationData dataInitializationData=new DataDomainSerializationData();
        LoadDataParameters loadingParameters=dataDomain.getLoadDataParameters();
        loadingParameters.setFileName(setFileName);
        loadingParameters.setDataDomain((ATableBasedDataDomain)dataDomain);
        HashMap<String,RecordVirtualArray> recordVAMap=new HashMap<String,RecordVirtualArray>(6);
        String tmpType=DataTable.RECORD;
        recordVAMap.put(DataTable.RECORD,loadContentVirtualArray(unmarshaller,extendedDirName,tmpType));
        HashMap<String,DimensionVirtualArray> dimensionVAMap=new HashMap<String,DimensionVirtualArray>(2);
        String tempDimensionType=DataTable.DIMENSION;
        dimensionVAMap.put(tempDimensionType,loadDimensionVirtualArray(unmarshaller,extendedDirName,tempDimensionType));
        dataInitializationData.setDataDomain((ATableBasedDataDomain)dataDomain);
        dataInitializationData.setRecordVAMap(recordVAMap);
        dataInitializationData.setDimensionVAMap(dimensionVAMap);
        dataDomain.getLoadDataParameters().setGeneTreeFileName(extendedDirName + ProjectSaver.GENE_TREE_FILE_NAME);
        dataDomain.getLoadDataParameters().setExperimentsFileName(extendedDirName + ProjectSaver.EXP_TREE_FILE_NAME);
        serializationData.addDataSerializationData(dataInitializationData);
      }
    }
    ViewList loadViews=null;
    try {
      loadViews=(ViewList)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.VIEWS_FILE_NAME));
    }
 catch (    FileNotFoundException e) {
    }
    if (loadViews != null) {
      serializationData.setViews(loadViews.getViews());
    }
  }
 catch (  JAXBException ex) {
    throw new RuntimeException("String_Node_Str",ex);
  }
  return serializationData;
}

Fixed version (ground truth):
/** 
 * Loads the project from a directory
 * @param dirName name of the directory to load the project from
 * @return initialization data for the application from which it can restore itself
 */
public SerializationData loadDirectory(String dirName){
  loadPlugins(dirName);
  SerializationData serializationData=null;
  SerializationManager serializationManager=GeneralManager.get().getSerializationManager();
  JAXBContext projectContext=serializationManager.getProjectContext();
  try {
    Unmarshaller unmarshaller=projectContext.createUnmarshaller();
    try {
      GeneralManager.get().setBasicInfo((BasicInformation)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.BASIC_INFORMATION_FILE_NAME)));
    }
 catch (    FileNotFoundException e) {
      throw new IllegalStateException("String_Node_Str");
    }
    DataDomainList dataDomainList;
    try {
      dataDomainList=(DataDomainList)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.DATA_DOMAIN_FILE_NAME));
    }
 catch (    FileNotFoundException e1) {
      throw new IllegalStateException("String_Node_Str");
    }
    serializationData=new SerializationData();
    for (    ADataDomain dataDomain : dataDomainList.getDataDomains()) {
      Thread thread=new Thread(dataDomain,dataDomain.getDataDomainID());
      thread.start();
      if (dataDomain instanceof ATableBasedDataDomain) {
        String extendedDirName=dirName + dataDomain.getDataDomainID() + "String_Node_Str";
        String setFileName=extendedDirName + ProjectSaver.DATA_TABLE_FILE_NAME;
        DataDomainSerializationData dataInitializationData=new DataDomainSerializationData();
        HashMap<String,RecordVirtualArray> recordVAMap=new HashMap<String,RecordVirtualArray>(6);
        String tmpType=DataTable.RECORD;
        recordVAMap.put(DataTable.RECORD,loadContentVirtualArray(unmarshaller,extendedDirName,tmpType));
        HashMap<String,DimensionVirtualArray> dimensionVAMap=new HashMap<String,DimensionVirtualArray>(2);
        String tempDimensionType=DataTable.DIMENSION;
        dimensionVAMap.put(tempDimensionType,loadDimensionVirtualArray(unmarshaller,extendedDirName,tempDimensionType));
        dimensionVAMap.put(tempDimensionType,loadDimensionVirtualArray(unmarshaller,extendedDirName,tempDimensionType));
        dataInitializationData.setDataDomain((ATableBasedDataDomain)dataDomain);
        dataInitializationData.setRecordVAMap(recordVAMap);
        dataInitializationData.setDimensionVAMap(dimensionVAMap);
        dataDomain.getLoadDataParameters().setGeneTreeFileName(extendedDirName + ProjectSaver.GENE_TREE_FILE_NAME);
        dataDomain.getLoadDataParameters().setExperimentsFileName(extendedDirName + ProjectSaver.EXP_TREE_FILE_NAME);
        serializationData.addDataSerializationData(dataInitializationData);
      }
    }
    ViewList loadViews=null;
    try {
      loadViews=(ViewList)unmarshaller.unmarshal(GeneralManager.get().getResourceLoader().getResource(dirName + ProjectSaver.VIEWS_FILE_NAME));
    }
 catch (    FileNotFoundException e) {
    }
    if (loadViews != null) {
      serializationData.setViews(loadViews.getViews());
    }
  }
 catch (  JAXBException ex) {
    throw new RuntimeException("String_Node_Str",ex);
  }
  return serializationData;
}