Program: 108177
Project: 108177
Buggy source:
@Override protected void doUpdate(final AnalysisContextRisk context){
  if (!this.isEnabled()) {
    if (manager != null) {
      manager.stop();
    }
    this.setStatusEmpty();
    return;
  }
  final RiskEstimateBuilderInterruptible builder=getBuilder(context);
  Analysis analysis=new Analysis(){
    private boolean stopped=false;
    private double lowestRisk;
    private double fractionOfTuplesAffectedByLowestRisk;
    private double averageRisk;
    private double highestRisk;
    private double fractionOfTuplesAffectedByHighestRisk;
    private double fractionOfUniqueTuples;
    private double fractionOfUniqueTuplesDankar;
    private StatisticalPopulationModel dankarModel;
    @Override public int getProgress(){
      return 0;
    }
    @Override public void onError(){
      setStatusEmpty();
    }
    @Override public void onFinish(){
      if (stopped || !isEnabled()) {
        return;
      }
      table.setRedraw(false);
      for (      final TableItem i : items) {
        i.dispose();
      }
      items.clear();
      createItem(Resources.getMessage("String_Node_Str"),lowestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfTuplesAffectedByLowestRisk);
      createItem(Resources.getMessage("String_Node_Str"),averageRisk);
      createItem(Resources.getMessage("String_Node_Str"),highestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfTuplesAffectedByHighestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfUniqueTuples);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfUniqueTuplesDankar);
      createItem(Resources.getMessage("String_Node_Str"),dankarModel);
      createItem(Resources.getMessage("String_Node_Str"),getQuasiIdentifiers(context));
      table.setRedraw(true);
      setStatusDone();
    }
    @Override public void onInterrupt(){
      if (!isEnabled() || !isValid()) {
        setStatusEmpty();
      }
 else {
        setStatusWorking();
      }
    }
    @Override public void run() throws InterruptedException {
      long time=System.currentTimeMillis();
      RiskModelSampleBasedReidentificationRisk samReidModel=builder.getSampleBasedReidentificationRisk();
      RiskModelSampleBasedUniquenessRisk samUniqueModel=builder.getSampleBasedUniquenessRisk();
      RiskModelPopulationBasedUniquenessRisk popUniqueModel=builder.getPopulationBasedUniquenessRisk();
      lowestRisk=samReidModel.getLowestRisk();
      fractionOfTuplesAffectedByLowestRisk=samReidModel.getFractionOfTuplesAffectedByLowestRisk();
      averageRisk=samReidModel.getAverageRisk();
      highestRisk=samReidModel.getHighestRisk();
      fractionOfTuplesAffectedByHighestRisk=samReidModel.getFractionOfTuplesAffectedByHighestRisk();
      fractionOfUniqueTuples=samUniqueModel.getFractionOfUniqueTuples();
      fractionOfUniqueTuplesDankar=popUniqueModel.getFractionOfUniqueTuplesDankar();
      dankarModel=popUniqueModel.getDankarModel();
      while (System.currentTimeMillis() - time < MINIMAL_WORKING_TIME && !stopped) {
        Thread.sleep(10);
      }
    }
    @Override public void stop(){
      builder.interrupt();
      this.stopped=true;
    }
  }
;
  this.manager.start(analysis);
}

Fixed version (ground truth):
@Override protected void doUpdate(final AnalysisContextRisk context){
  final RiskEstimateBuilderInterruptible builder=getBuilder(context);
  if (!this.isEnabled() || builder == null) {
    if (manager != null) {
      manager.stop();
    }
    this.setStatusEmpty();
    return;
  }
  Analysis analysis=new Analysis(){
    private boolean stopped=false;
    private double lowestRisk;
    private double fractionOfTuplesAffectedByLowestRisk;
    private double averageRisk;
    private double highestRisk;
    private double fractionOfTuplesAffectedByHighestRisk;
    private double fractionOfUniqueTuples;
    private double fractionOfUniqueTuplesDankar;
    private StatisticalPopulationModel dankarModel;
    @Override public int getProgress(){
      return 0;
    }
    @Override public void onError(){
      setStatusEmpty();
    }
    @Override public void onFinish(){
      if (stopped || !isEnabled()) {
        return;
      }
      table.setRedraw(false);
      for (      final TableItem i : items) {
        i.dispose();
      }
      items.clear();
      createItem(Resources.getMessage("String_Node_Str"),lowestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfTuplesAffectedByLowestRisk);
      createItem(Resources.getMessage("String_Node_Str"),averageRisk);
      createItem(Resources.getMessage("String_Node_Str"),highestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfTuplesAffectedByHighestRisk);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfUniqueTuples);
      createItem(Resources.getMessage("String_Node_Str"),fractionOfUniqueTuplesDankar);
      createItem(Resources.getMessage("String_Node_Str"),dankarModel);
      createItem(Resources.getMessage("String_Node_Str"),getQuasiIdentifiers(context));
      table.setRedraw(true);
      setStatusDone();
    }
    @Override public void onInterrupt(){
      if (!isEnabled() || !isValid()) {
        setStatusEmpty();
      }
 else {
        setStatusWorking();
      }
    }
    @Override public void run() throws InterruptedException {
      long time=System.currentTimeMillis();
      RiskModelSampleBasedReidentificationRisk samReidModel=builder.getSampleBasedReidentificationRisk();
      RiskModelSampleBasedUniquenessRisk samUniqueModel=builder.getSampleBasedUniquenessRisk();
      RiskModelPopulationBasedUniquenessRisk popUniqueModel=builder.getPopulationBasedUniquenessRisk();
      lowestRisk=samReidModel.getLowestRisk();
      fractionOfTuplesAffectedByLowestRisk=samReidModel.getFractionOfTuplesAffectedByLowestRisk();
      averageRisk=samReidModel.getAverageRisk();
      highestRisk=samReidModel.getHighestRisk();
      fractionOfTuplesAffectedByHighestRisk=samReidModel.getFractionOfTuplesAffectedByHighestRisk();
      fractionOfUniqueTuples=samUniqueModel.getFractionOfUniqueTuples();
      fractionOfUniqueTuplesDankar=popUniqueModel.getFractionOfUniqueTuplesDankar();
      dankarModel=popUniqueModel.getDankarModel();
      while (System.currentTimeMillis() - time < MINIMAL_WORKING_TIME && !stopped) {
        Thread.sleep(10);
      }
    }
    @Override public void stop(){
      if (builder != null)       builder.interrupt();
      this.stopped=true;
    }
  }
;
  this.manager.start(analysis);
}