Program: 108663
Project: 108663
Buggy source:
/** 
 * Internal method for importing data
 * @param path
 * @param separator
 */
private void actionImportData(DataSourceConfiguration config){
  final WorkerImport worker=new WorkerImport(config);
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    Throwable error=worker.getError();
    if (error instanceof RuntimeException) {
      if (error.getCause() != null) {
        error=error.getCause();
      }
    }
    if ((error instanceof IllegalArgumentException) || (error instanceof IOException)) {
      main.showInfoDialog(main.getShell(),"String_Node_Str",error.getMessage());
    }
 else {
      main.showErrorDialog(main.getShell(),Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str"),error);
    }
    return;
  }
  reset();
  final Data data=worker.getResult();
  if (model.getOutput() != null) {
    this.actionResetOutput();
  }
  model.reset();
  if (model.getMaximalSizeForComplexOperations() > 0 && data.getHandle().getNumRows() > model.getMaximalSizeForComplexOperations()) {
    model.setVisualizationEnabled(false);
  }
  RowSet subset=RowSet.create(data);
  for (int i=0; i < subset.length(); i++) {
    subset.add(i);
  }
  model.getInputConfig().setResearchSubset(subset);
  model.getInputConfig().setInput(data);
  if (config instanceof CSVFileConfiguration) {
    model.setInputBytes(new File(((CSVFileConfiguration)config).getFileLocation()).length());
  }
 else {
    model.setInputBytes(0);
  }
  final DataDefinition definition=data.getDefinition();
  for (int i=0; i < data.getHandle().getNumColumns(); i++) {
    definition.setAttributeType(model.getInputConfig().getInput().getHandle().getAttributeName(i),AttributeType.INSENSITIVE_ATTRIBUTE);
  }
  model.resetCriteria();
  model.setGroups(null);
  model.setOutput(null,null);
  model.setViewConfig(new ModelViewConfig());
  update(new ModelEvent(this,ModelPart.MODEL,model));
  update(new ModelEvent(this,ModelPart.INPUT,data.getHandle()));
  if (data.getHandle().getNumColumns() > 0) {
    model.setSelectedAttribute(data.getHandle().getAttributeName(0));
    update(new ModelEvent(this,ModelPart.SELECTED_ATTRIBUTE,data.getHandle().getAttributeName(0)));
    update(new ModelEvent(this,ModelPart.CRITERION_DEFINITION,null));
    update(new ModelEvent(this,ModelPart.RESEARCH_SUBSET,subset));
  }
}

Fixed version (ground truth):
/** 
 * Internal method for importing data
 * @param path
 * @param separator
 */
private void actionImportData(DataSourceConfiguration config){
  final WorkerImport worker=new WorkerImport(config);
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    Throwable error=worker.getError();
    if (error instanceof RuntimeException) {
      if (error.getCause() != null) {
        error=error.getCause();
      }
    }
    if ((error instanceof IllegalArgumentException) || (error instanceof IOException)) {
      main.showInfoDialog(main.getShell(),"String_Node_Str",error.getMessage());
    }
 else {
      main.showErrorDialog(main.getShell(),Resources.getMessage("String_Node_Str"),error);
    }
    return;
  }
  reset();
  final Data data=worker.getResult();
  if (model.getOutput() != null) {
    this.actionResetOutput();
  }
  model.reset();
  if (model.getMaximalSizeForComplexOperations() > 0 && data.getHandle().getNumRows() > model.getMaximalSizeForComplexOperations()) {
    model.setVisualizationEnabled(false);
  }
  RowSet subset=RowSet.create(data);
  for (int i=0; i < subset.length(); i++) {
    subset.add(i);
  }
  model.getInputConfig().setResearchSubset(subset);
  model.getInputConfig().setInput(data);
  if (config instanceof CSVFileConfiguration) {
    model.setInputBytes(new File(((CSVFileConfiguration)config).getFileLocation()).length());
  }
 else {
    model.setInputBytes(0);
  }
  final DataDefinition definition=data.getDefinition();
  for (int i=0; i < data.getHandle().getNumColumns(); i++) {
    definition.setAttributeType(model.getInputConfig().getInput().getHandle().getAttributeName(i),AttributeType.INSENSITIVE_ATTRIBUTE);
  }
  model.resetCriteria();
  model.setGroups(null);
  model.setOutput(null,null);
  model.setViewConfig(new ModelViewConfig());
  update(new ModelEvent(this,ModelPart.MODEL,model));
  update(new ModelEvent(this,ModelPart.INPUT,data.getHandle()));
  if (data.getHandle().getNumColumns() > 0) {
    model.setSelectedAttribute(data.getHandle().getAttributeName(0));
    update(new ModelEvent(this,ModelPart.SELECTED_ATTRIBUTE,data.getHandle().getAttributeName(0)));
    update(new ModelEvent(this,ModelPart.CRITERION_DEFINITION,null));
    update(new ModelEvent(this,ModelPart.RESEARCH_SUBSET,subset));
  }
}