Program: 108429
Project: 108429
Buggy source:
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 * @param properties
 */
public ComponentFilterTable(Composite parent,Controller controller,List<String> properties){
  IMAGE_ENABLED=controller.getResources().getImage("String_Node_Str");
  IMAGE_DISABLED=controller.getResources().getImage("String_Node_Str");
  this.listeners=new ArrayList<SelectionListener>();
  this.selected=new HashMap<String,Map<String,Boolean>>();
  this.properties=new ArrayList<String>(properties);
  this.entries=new ArrayList<String>();
  this.items=new HashMap<String,TableItem>();
  this.itemProperties=new HashMap<String,List<String>>();
  this.table=new Table(parent,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
  this.table.setHeaderVisible(true);
  this.setProperties(properties);
  table.addMouseListener(new MouseAdapter(){
    public void mouseDown(    MouseEvent arg0){
      int row=getItemRowAt(arg0.x,arg0.y);
      int column=getItemColumnAt(arg0.x,arg0.y);
      if (row != -1 && column > 0 && column < ComponentFilterTable.this.properties.size()) {
        String property=ComponentFilterTable.this.properties.get(column - 1);
        String entry=ComponentFilterTable.this.entries.get(row);
        if (itemProperties.get(entry).contains(property)) {
          selectedProperty=property;
          selectedEntry=entry;
        }
 else {
          selectedProperty=null;
          selectedEntry=null;
        }
      }
 else {
        selectedProperty=null;
        selectedEntry=null;
      }
    }
  }
);
  table.addMouseListener(new MouseAdapter(){
    public void mouseDown(    MouseEvent arg0){
      if (selectedProperty != null && selectedEntry != null) {
        boolean selected=isSelected(selectedEntry,selectedProperty);
        setSelected(selectedEntry,selectedProperty,!selected);
        fireSelectionEvent();
      }
    }
  }
);
  table.addDisposeListener(new DisposeListener(){
    public void widgetDisposed(    DisposeEvent arg0){
      IMAGE_ENABLED.dispose();
      IMAGE_DISABLED.dispose();
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 * @param properties
 */
public ComponentFilterTable(Composite parent,Controller controller,List<String> properties){
  IMAGE_ENABLED=controller.getResources().getImage("String_Node_Str");
  IMAGE_DISABLED=controller.getResources().getImage("String_Node_Str");
  this.listeners=new ArrayList<SelectionListener>();
  this.selected=new HashMap<String,Map<String,Boolean>>();
  this.properties=new ArrayList<String>(properties);
  this.entries=new ArrayList<String>();
  this.items=new HashMap<String,TableItem>();
  this.itemProperties=new HashMap<String,List<String>>();
  this.table=new Table(parent,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
  this.table.setHeaderVisible(true);
  this.setProperties(properties);
  table.addMouseListener(new MouseAdapter(){
    public void mouseDown(    MouseEvent arg0){
      int row=getItemRowAt(arg0.x,arg0.y);
      int column=getItemColumnAt(arg0.x,arg0.y);
      if (row != -1 && column > 0 && column <= ComponentFilterTable.this.properties.size()) {
        String property=ComponentFilterTable.this.properties.get(column - 1);
        String entry=ComponentFilterTable.this.entries.get(row);
        if (itemProperties.get(entry).contains(property)) {
          selectedProperty=property;
          selectedEntry=entry;
        }
 else {
          selectedProperty=null;
          selectedEntry=null;
        }
      }
 else {
        selectedProperty=null;
        selectedEntry=null;
      }
    }
  }
);
  table.addMouseListener(new MouseAdapter(){
    public void mouseDown(    MouseEvent arg0){
      if (selectedProperty != null && selectedEntry != null) {
        boolean selected=isSelected(selectedEntry,selectedProperty);
        setSelected(selectedEntry,selectedProperty,!selected);
        fireSelectionEvent();
      }
    }
  }
);
  table.addDisposeListener(new DisposeListener(){
    public void widgetDisposed(    DisposeEvent arg0){
      IMAGE_ENABLED.dispose();
      IMAGE_DISABLED.dispose();
    }
  }
);
}