Program: 107887
Project: 107887
Buggy source:
@Override public void createControl(final Composite parent){
  Composite composite=new Composite(parent,SWT.NONE);
  composite.setLayout(SWTUtil.createGridLayout(1,false));
  Group group1=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group1.setText(Resources.getMessage("String_Node_Str"));
  group1.setLayout(SWTUtil.createGridLayout(1,false));
  group1.setLayoutData(SWTUtil.createFillGridData());
  table=SWTUtil.createTableDynamic(group1,SWT.CHECK | SWT.SINGLE | SWT.BORDER);
  table.setLayoutData(SWTUtil.createFillGridData());
  DynamicTableColumn column1=new DynamicTableColumn(table,SWT.NONE);
  column1.setWidth("String_Node_Str","String_Node_Str");
  createItems(table);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      if (table.getSelection() == null || table.getSelection().length == 0) {
        text.setText("String_Node_Str");
        text.setEnabled(false);
        setPageComplete(isPageComplete());
        return;
      }
      Granularity g=(Granularity)table.getSelection()[0].getData();
      if (g.isFormatSupported()) {
        String _format=model.getFormat().get(g);
        _format=_format != null ? _format : g.getDefaultFormat();
        text.setText(_format);
        text.setEnabled(true);
      }
 else {
        text.setText("String_Node_Str");
        text.setEnabled(false);
      }
      model.getGranularities().clear();
      for (      TableItem item : table.getItems()) {
        if (item.getChecked()) {
          model.getGranularities().add((Granularity)item.getData());
        }
      }
    }
  }
);
  Group group2=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group2.setText(Resources.getMessage("String_Node_Str"));
  group2.setLayout(SWTUtil.createGridLayout(1,false));
  group2.setLayoutData(SWTUtil.createFillHorizontallyGridData());
  text=new Text(group2,SWT.BORDER);
  text.setLayoutData(SWTUtil.createFillGridData());
  decorateAndStore(text);
  Group group3=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group3.setText(Resources.getMessage("String_Node_Str"));
  group3.setLayout(SWTUtil.createGridLayout(2,false));
  group3.setLayoutData(SWTUtil.createFillHorizontallyGridData());
  combo=new Combo(group3,SWT.SINGLE);
  combo.setLayoutData(SWTUtil.createFillGridData());
  createItems(combo);
  combo.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      if (combo.getSelectionIndex() < 0) {
        return;
      }
      String label=combo.getItem(combo.getSelectionIndex());
      String[] ids=TimeZone.getAvailableIDs();
      for (      String id : ids) {
        TimeZone timezone=TimeZone.getTimeZone(id);
        if (label.equals(timezone.getDisplayName())) {
          model.setTimeZone(timezone);
        }
      }
    }
  }
);
  updatePage();
  setControl(composite);
}

Fixed version (ground truth):
@Override public void createControl(final Composite parent){
  Composite composite=new Composite(parent,SWT.NONE);
  composite.setLayout(SWTUtil.createGridLayout(1,false));
  Group group1=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group1.setText(Resources.getMessage("String_Node_Str"));
  group1.setLayout(SWTUtil.createGridLayout(1,false));
  group1.setLayoutData(SWTUtil.createFillGridData());
  table=SWTUtil.createTableDynamic(group1,SWT.CHECK | SWT.SINGLE | SWT.BORDER);
  table.setLayoutData(SWTUtil.createFillGridData());
  DynamicTableColumn column1=new DynamicTableColumn(table,SWT.NONE);
  column1.setWidth("String_Node_Str","String_Node_Str");
  createItems(table);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      if (table.getSelection() == null || table.getSelection().length == 0) {
        text.setText("String_Node_Str");
        text.setEnabled(false);
        setPageComplete(isPageComplete());
        return;
      }
      Granularity g=(Granularity)table.getSelection()[0].getData();
      if (g.isFormatSupported()) {
        String _format=model.getFormat().get(g);
        _format=_format != null ? _format : g.getDefaultFormat();
        text.setText(_format);
        text.setEnabled(true);
      }
 else {
        text.setText("String_Node_Str");
        text.setEnabled(false);
      }
      List<Granularity> granularities=new ArrayList<>();
      for (      TableItem item : table.getItems()) {
        if (item.getChecked()) {
          granularities.add((Granularity)item.getData());
        }
      }
      model.setGranularities(granularities);
    }
  }
);
  Group group2=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group2.setText(Resources.getMessage("String_Node_Str"));
  group2.setLayout(SWTUtil.createGridLayout(1,false));
  group2.setLayoutData(SWTUtil.createFillHorizontallyGridData());
  text=new Text(group2,SWT.BORDER);
  text.setLayoutData(SWTUtil.createFillGridData());
  text.addModifyListener(new ModifyListener(){
    ControlDecoration decoration=new ControlDecoration(text,SWT.RIGHT);
    @Override public void modifyText(    ModifyEvent arg0){
      Granularity g=null;
      if (table.getSelection() != null && table.getSelection().length != 0) {
        g=(Granularity)table.getSelection()[0].getData();
      }
      if (g.isFormatSupported()) {
        String formatString=text.getText();
        if (g != null && model.getFormat().isValid(formatString,g.getDefaultFormat())) {
          decoration.hide();
          Format format=model.getFormat();
          format.set((Granularity)table.getSelection()[0].getData(),formatString);
          model.setFormat(format);
        }
 else {
          decoration.setDescriptionText(Resources.getMessage("String_Node_Str"));
          Image image=FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_ERROR).getImage();
          decoration.setImage(image);
          decoration.show();
        }
      }
 else {
        decoration.hide();
      }
    }
  }
);
  Group group3=new Group(composite,SWT.SHADOW_ETCHED_IN);
  group3.setText(Resources.getMessage("String_Node_Str"));
  group3.setLayout(SWTUtil.createGridLayout(2,false));
  group3.setLayoutData(SWTUtil.createFillHorizontallyGridData());
  combo=new Combo(group3,SWT.SINGLE);
  combo.setLayoutData(SWTUtil.createFillGridData());
  createItems(combo);
  combo.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      if (combo.getSelectionIndex() < 0) {
        return;
      }
      String label=combo.getItem(combo.getSelectionIndex());
      String[] ids=TimeZone.getAvailableIDs();
      for (      String id : ids) {
        TimeZone timezone=TimeZone.getTimeZone(id);
        if (label.equals(timezone.getDisplayName())) {
          model.setTimeZone(timezone);
        }
      }
    }
  }
);
  updatePage();
  setControl(composite);
}