Program: 97169
Project: 97169
Buggy source:
private Button createButton(Composite parent,String option){
  final IOptionConfigurationHandler<?> configHandler=configurableOptionSet.get(option);
  Composite mainComposite=parent;
  if (configHandler != null) {
    mainComposite=new Composite(parent,SWT.NONE);
    mainComposite.setLayout(ALayout.getZeroMarginLayout(4,false));
    mainComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false));
  }
  Button toReturn=new Button(mainComposite,SWT.CHECK);
  toReturn.setData(option);
  toReturn.setFont(getFont());
  toReturn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      Object object=e.getSource();
      if (object instanceof Button) {
        Button button=(Button)object;
        optionsMap.put((String)button.getData(),button.getSelection());
        updateExactMatchOptions();
      }
    }
  }
);
  if (configHandler != null) {
    Label label=new Label(mainComposite,SWT.NONE);
    label.setText(option + "String_Node_Str");
    Button filterConfig=new Button(mainComposite,SWT.PUSH);
    String configToolTip=configHandler.getConfigToolTip();
    filterConfig.setToolTipText(Strings.isValid(configToolTip) ? configToolTip : CONFIG_BUTTON_TOOLTIP);
    filterConfig.setImage(ImageManager.getImage(FrameworkImage.GEAR));
    filterConfig.addSelectionListener(new SelectionAdapter(){
      @Override public void widgetSelected(      SelectionEvent e){
        configHandler.configure();
        searchText.setText(configHandler.toString());
      }
    }
);
    searchText=new Text(mainComposite,SWT.READ_ONLY | SWT.BORDER);
    searchText.setText(configHandler.toString());
    GridData data=new GridData(SWT.FILL,SWT.FILL,true,false);
    data.minimumWidth=100;
    searchText.setLayoutData(data);
    textAreas.put(option,searchText);
  }
 else {
    toReturn.setText(option);
  }
  return toReturn;
}

Fixed version (ground truth):
private Button createButton(Composite parent,SearchOption option){
  final IOptionConfigurationHandler<?> configHandler=configurableOptionSet.get(option);
  Composite mainComposite=parent;
  if (configHandler != null) {
    mainComposite=new Composite(parent,SWT.NONE);
    mainComposite.setLayout(ALayout.getZeroMarginLayout(4,false));
    mainComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false));
  }
  Button toReturn=new Button(mainComposite,SWT.CHECK);
  toReturn.setData(option);
  toReturn.setFont(getFont());
  toReturn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      Object object=e.getSource();
      if (object instanceof Button) {
        Button button=(Button)object;
        optionsMap.put((SearchOption)button.getData(),button.getSelection());
        updateExactMatchOptions();
      }
    }
  }
);
  if (configHandler != null) {
    Label label=new Label(mainComposite,SWT.NONE);
    label.setText(option.asLabel() + "String_Node_Str");
    Button filterConfig=new Button(mainComposite,SWT.PUSH);
    String configToolTip=configHandler.getConfigToolTip();
    filterConfig.setToolTipText(Strings.isValid(configToolTip) ? configToolTip : CONFIG_BUTTON_TOOLTIP);
    filterConfig.setImage(ImageManager.getImage(FrameworkImage.GEAR));
    filterConfig.addSelectionListener(new TypeSelectionFilter(option,configHandler));
    Text searchText=new Text(mainComposite,SWT.READ_ONLY | SWT.BORDER);
    searchText.setText(configHandler.toString());
    GridData data=new GridData(SWT.FILL,SWT.FILL,true,false);
    data.minimumWidth=100;
    searchText.setLayoutData(data);
    if (option.equals(SearchOption.Attribute_Types)) {
      attributeSearchText=searchText;
    }
 else     if (option.equals(SearchOption.Artifact_Types)) {
      artifactSearchText=searchText;
    }
    textAreas.put(option,searchText);
  }
 else {
    toReturn.setText(option.asLabel());
  }
  return toReturn;
}