Program: 125515
Project: 125515
Buggy source:
@Override protected Control createDialogArea(Composite parent){
  Composite composite=new Composite(parent,SWT.NONE);
  composite.setLayout(new GridLayout());
  composite.setLayoutData(new GridData(GridData.FILL_BOTH));
  table=new Table(composite,SWT.NONE | SWT.CHECK);
  table.setLayoutData(new GridData(GridData.FILL_BOTH));
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  TableColumn version=new TableColumn(table,SWT.NONE);
  version.setWidth(100);
  version.setText("String_Node_Str");
  TableColumn cretationTime=new TableColumn(table,SWT.NONE);
  cretationTime.setWidth(200);
  cretationTime.setText("String_Node_Str");
  TableColumn modificationTime=new TableColumn(table,SWT.NONE);
  modificationTime.setWidth(200);
  modificationTime.setText("String_Node_Str");
  for (  IRepositoryViewObject object : versions) {
    TableItem item=new TableItem(table,SWT.NONE);
    item.setData(object);
    item.setText(0,object.getVersion());
    item.setText(1,object.getCreationDate().toString());
    if (object.getModificationDate() != null) {
      item.setText(2,object.getModificationDate().toString());
    }
  }
  Composite buttonContainer=new Composite(composite,SWT.NONE);
  GridLayout layout=new GridLayout();
  layout.numColumns=2;
  buttonContainer.setLayout(layout);
  buttonContainer.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
  selectAll=new Button(buttonContainer,SWT.PUSH);
  selectAll.setText("String_Node_Str");
  selectNone=new Button(buttonContainer,SWT.PUSH);
  selectNone.setText("String_Node_Str");
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      if (e.detail == SWT.CHECK) {
        TableItem tableItem=(TableItem)e.item;
        Property property=((IRepositoryObject)tableItem.getData()).getProperty();
        if (property != null && property.getItem() != null) {
          if (tableItem.getChecked()) {
            selectedVersionItems.add((IRepositoryObject)tableItem.getData());
          }
 else {
            selectedVersionItems.remove(tableItem.getData());
          }
        }
      }
      checkSelectedItems();
    }
  }
);
  selectAll.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      for (int i=0; i < table.getItemCount(); i++) {
        table.getItem(i).setChecked(true);
        IRepositoryObject data=(IRepositoryObject)table.getItem(i).getData();
        selectedVersionItems.add(data);
      }
      checkSelectedItems();
    }
  }
);
  selectNone.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      for (int i=0; i < table.getItemCount(); i++) {
        table.getItem(i).setChecked(false);
        selectedVersionItems.remove(table.getItem(i).getData());
      }
      checkSelectedItems();
    }
  }
);
  return composite;
}

Fixed version (ground truth):
@Override protected Control createDialogArea(Composite parent){
  Composite composite=new Composite(parent,SWT.NONE);
  composite.setLayout(new GridLayout());
  composite.setLayoutData(new GridData(GridData.FILL_BOTH));
  table=new Table(composite,SWT.NONE | SWT.CHECK);
  table.setLayoutData(new GridData(GridData.FILL_BOTH));
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  TableColumn version=new TableColumn(table,SWT.NONE);
  version.setWidth(100);
  version.setText("String_Node_Str");
  TableColumn cretationTime=new TableColumn(table,SWT.NONE);
  cretationTime.setWidth(200);
  cretationTime.setText("String_Node_Str");
  TableColumn modificationTime=new TableColumn(table,SWT.NONE);
  modificationTime.setWidth(200);
  modificationTime.setText("String_Node_Str");
  for (  IRepositoryViewObject object : versions) {
    TableItem item=new TableItem(table,SWT.NONE);
    item.setData(object);
    item.setText(0,object.getVersion());
    item.setText(1,object.getCreationDate().toString());
    if (object.getModificationDate() != null) {
      item.setText(2,object.getModificationDate().toString());
    }
    if (testParentVersions.contains(object.getVersion())) {
      item.setChecked(true);
      selectedVersionItems.add(object);
    }
  }
  Composite buttonContainer=new Composite(composite,SWT.NONE);
  GridLayout layout=new GridLayout();
  layout.numColumns=2;
  buttonContainer.setLayout(layout);
  buttonContainer.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
  selectAll=new Button(buttonContainer,SWT.PUSH);
  selectAll.setText("String_Node_Str");
  selectNone=new Button(buttonContainer,SWT.PUSH);
  selectNone.setText("String_Node_Str");
  selectNone.setEnabled(this.testParentVersions.isEmpty());
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      if (e.detail == SWT.CHECK) {
        TableItem tableItem=(TableItem)e.item;
        Property property=((IRepositoryObject)tableItem.getData()).getProperty();
        if (testParentVersions.contains(property.getVersion())) {
          tableItem.setChecked(true);
          checkSelectedItems();
          return;
        }
        if (property != null && property.getItem() != null) {
          if (tableItem.getChecked()) {
            selectedVersionItems.add((IRepositoryObject)tableItem.getData());
          }
 else {
            selectedVersionItems.remove(tableItem.getData());
          }
        }
      }
      checkSelectedItems();
    }
  }
);
  selectAll.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      for (int i=0; i < table.getItemCount(); i++) {
        table.getItem(i).setChecked(true);
        IRepositoryObject data=(IRepositoryObject)table.getItem(i).getData();
        selectedVersionItems.add(data);
      }
      checkSelectedItems();
    }
  }
);
  selectNone.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      for (int i=0; i < table.getItemCount(); i++) {
        table.getItem(i).setChecked(false);
        selectedVersionItems.remove(table.getItem(i).getData());
      }
      checkSelectedItems();
    }
  }
);
  return composite;
}