Program: 81528
Project: 81528
Buggy source:
/** 
 * Configure the UI components
 * @param options List of attribute values
 * @param heatMapModel data model delivering the data
 * @param selType type of attribute (factor or readout)
 */
public void configure(List<String> options,final HeatMapModel heatMapModel,final AttributeType selType){
  this.heatMapModel=heatMapModel;
  this.heatMapModel.addChangeListener(this);
  this.selectionType=selType;
  DefaultComboBoxModel<String> readoutModel=new DefaultComboBoxModel<String>(options.toArray(new String[options.size()]));
  setModel(readoutModel);
switch (selType) {
case READOUT:
    if (heatMapModel.getSelectedReadOut() != null) {
      setSelectedItem(heatMapModel.getSelectedReadOut());
    }
 else {
      heatMapModel.setCurrentReadout((String)getSelectedItem());
    }
  break;
case OVERLAY_ANNOTATION:
if (heatMapModel.getCurrentOverlay() != null) {
  setSelectedItem(heatMapModel.getCurrentOverlay());
}
 else {
  heatMapModel.setCurrentOverlay((String)getSelectedItem());
}
break;
}
addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent event){
if (event.getStateChange() == ItemEvent.SELECTED) {
HeatMapModel mapModel=WellAttributeComboBox.this.heatMapModel;
switch (selType) {
case READOUT:
  mapModel.setCurrentReadout((String)getModel().getSelectedItem());
break;
case OVERLAY_ANNOTATION:
mapModel.setCurrentOverlay((String)getModel().getSelectedItem());
break;
}
heatMapModel.fireModelChanged();
}
}
}
);
setRenderer(new MyComboBoxRenderer());
}

Fixed version (ground truth):
/** 
 * Configure the UI components
 * @param options List of attribute values
 * @param heatMapModel data model delivering the data
 * @param selType type of attribute (factor or readout)
 */
public void configure(List<String> options,final HeatMapModel heatMapModel,final AttributeType selType){
  this.heatMapModel=heatMapModel;
  this.heatMapModel.addChangeListener(this);
  this.selectionType=selType;
  String[] items=options.toArray(new String[options.size()]);
  if (selectionType == AttributeType.OVERLAY_ANNOTATION) {
    items=addOverlayOptions(items);
  }
  DefaultComboBoxModel<String> readoutModel=new DefaultComboBoxModel<String>(items);
  setModel(readoutModel);
switch (selType) {
case READOUT:
    if (heatMapModel.getSelectedReadOut() != null) {
      setSelectedItem(heatMapModel.getSelectedReadOut());
    }
 else {
      heatMapModel.setCurrentReadout((String)getSelectedItem());
    }
  break;
case OVERLAY_ANNOTATION:
if (heatMapModel.getCurrentOverlay() != null) {
  setSelectedItem(heatMapModel.getCurrentOverlay());
}
 else {
  heatMapModel.setCurrentOverlay((String)getSelectedItem());
}
break;
}
m_listener=new ItemListener(){
public void itemStateChanged(ItemEvent event){
if (event.getStateChange() == ItemEvent.SELECTED) {
HeatMapModel mapModel=WellAttributeComboBox.this.heatMapModel;
switch (selType) {
case READOUT:
  mapModel.setCurrentReadout((String)getModel().getSelectedItem());
break;
case OVERLAY_ANNOTATION:
mapModel.setCurrentOverlay((String)getModel().getSelectedItem());
break;
}
heatMapModel.fireModelChanged();
}
}
}
;
addItemListener(m_listener);
setRenderer(new MyComboBoxRenderer());
}