Program: 149197
Project: 149197
Buggy source:
public void createControl(Composite parent){
  Composite composite=new Composite(parent,SWT.BORDER);
  composite.setLayout(new GridLayout(1,false));
  browseViewer=new TableViewer(composite,SWT.FULL_SELECTION | SWT.SINGLE | SWT.H_SCROLL);
  GridData gd=new GridData(SWT.FILL,SWT.FILL,true,true,1,1);
  gd.widthHint=600;
  browseViewer.getControl().setLayoutData(gd);
  ((GridData)browseViewer.getControl().getLayoutData()).heightHint=100;
  Table table=browseViewer.getTable();
  TableColumn column=new TableColumn(table,SWT.CENTER);
  column.setText(INSTANCE_NAME);
  column.setWidth(615);
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  browseViewer.setContentProvider(new IStructuredContentProvider(){
    public void dispose(){
    }
    public void inputChanged(    Viewer viewer,    Object oldInput,    Object newInput){
    }
    public Object[] getElements(    Object inputElement){
      ArrayList<String> values=new ArrayList<String>();
      for (      XSDElementDeclaration decl : declList) {
        String name=decl.getName();
        name=BROWSE_ITEMS + name;
        values.add(name);
      }
      return values.toArray(new String[values.size()]);
    }
  }
);
  browseViewer.setLabelProvider(new ITableLabelProvider(){
    public boolean isLabelProperty(    Object element,    String property){
      return false;
    }
    public void dispose(){
    }
    public void addListener(    ILabelProviderListener listener){
    }
    public void removeListener(    ILabelProviderListener listener){
    }
    public String getColumnText(    Object element,    int columnIndex){
      return element.toString();
    }
    public Image getColumnImage(    Object element,    int columnIndex){
      return null;
    }
  }
);
  browseViewer.setCellModifier(new ICellModifier(){
    public boolean canModify(    Object element,    String property){
      return false;
    }
    public void modify(    Object element,    String property,    Object value){
    }
    public Object getValue(    Object element,    String property){
      return element.toString();
    }
  }
);
  browseViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      String name=(String)((IStructuredSelection)event.getSelection()).getFirstElement();
      refreshRoleView(name);
    }
  }
);
  browseViewer.setInput(declList);
  browseViewer.refresh();
  Label infoLabel=new Label(composite,SWT.NONE);
  infoLabel.setText("String_Node_Str");
  ComplexTableViewerColumn ruleColumn=roleConfigurationColumns[0];
  ruleColumn.setColumnWidth(250);
  List<String> roles=Util.getCachedXObjectsNameSet(page.getXObject(),TreeObject.ROLE);
  ruleColumn.setComboValues(roles.toArray(new String[]{}));
  ComplexTableViewerColumn acsColumn=roleConfigurationColumns[1];
  acsColumn.setColumnWidth(250);
  acsColumn.setComboValues(new String[]{"String_Node_Str","String_Node_Str"});
  complexTableViewer=new ComplexTableViewer(Arrays.asList(roleConfigurationColumns),page.getManagedForm().getToolkit(),composite);
  complexTableViewer.setMainPage(page);
  complexTableViewer.setKeyColumns(new ComplexTableViewerColumn[]{roleConfigurationColumns[0]});
  complexTableViewer.create();
  complexTableViewer.getViewer().setInput(browseItemToRoles.get(declList.get(0)));
  setControl(composite);
}

Fixed version (ground truth):
public void createControl(Composite parent){
  Composite composite=new Composite(parent,SWT.BORDER);
  composite.setLayout(new GridLayout(1,false));
  browseViewer=new TableViewer(composite,SWT.FULL_SELECTION | SWT.SINGLE | SWT.H_SCROLL);
  GridData gd=new GridData(SWT.FILL,SWT.FILL,true,true,1,1);
  gd.widthHint=600;
  browseViewer.getControl().setLayoutData(gd);
  ((GridData)browseViewer.getControl().getLayoutData()).heightHint=100;
  Table table=browseViewer.getTable();
  TableColumn column=new TableColumn(table,SWT.CENTER);
  column.setText(INSTANCE_NAME);
  column.setWidth(615);
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  browseViewer.setContentProvider(new IStructuredContentProvider(){
    public void dispose(){
    }
    public void inputChanged(    Viewer viewer,    Object oldInput,    Object newInput){
    }
    public Object[] getElements(    Object inputElement){
      ArrayList<XSDElementDeclaration> values=(ArrayList<XSDElementDeclaration>)inputElement;
      return values.toArray(new XSDElementDeclaration[values.size()]);
    }
  }
);
  browseViewer.setLabelProvider(new ITableLabelProvider(){
    public boolean isLabelProperty(    Object element,    String property){
      return false;
    }
    public void dispose(){
    }
    public void addListener(    ILabelProviderListener listener){
    }
    public void removeListener(    ILabelProviderListener listener){
    }
    public String getColumnText(    Object element,    int columnIndex){
      return BROWSE_ITEMS + ((XSDElementDeclaration)element).getName();
    }
    public Image getColumnImage(    Object element,    int columnIndex){
      return null;
    }
  }
);
  browseViewer.setCellModifier(new ICellModifier(){
    public boolean canModify(    Object element,    String property){
      return false;
    }
    public void modify(    Object element,    String property,    Object value){
    }
    public Object getValue(    Object element,    String property){
      return element.toString();
    }
  }
);
  browseViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      XSDElementDeclaration decl=(XSDElementDeclaration)((IStructuredSelection)event.getSelection()).getFirstElement();
      refreshRoleView(BROWSE_ITEMS + decl.getName());
      UpdateComplexViewButton(true);
    }
  }
);
  browseViewer.setInput(declList);
  browseViewer.setColumnProperties(new String[]{INSTANCE_NAME});
  browseViewer.refresh();
  Label infoLabel=new Label(composite,SWT.NONE);
  infoLabel.setText("String_Node_Str");
  ComplexTableViewerColumn ruleColumn=roleConfigurationColumns[0];
  ruleColumn.setColumnWidth(250);
  List<String> roles=Util.getCachedXObjectsNameSet(page.getXObject(),TreeObject.ROLE);
  ruleColumn.setComboValues(roles.toArray(new String[]{}));
  ComplexTableViewerColumn acsColumn=roleConfigurationColumns[1];
  acsColumn.setColumnWidth(250);
  acsColumn.setComboValues(new String[]{"String_Node_Str","String_Node_Str"});
  complexTableViewer=new ComplexTableViewer(Arrays.asList(roleConfigurationColumns),page.getManagedForm().getToolkit(),composite);
  complexTableViewer.setMainPage(page);
  complexTableViewer.setKeyColumns(new ComplexTableViewerColumn[]{roleConfigurationColumns[0]});
  complexTableViewer.create();
  complexTableViewer.getViewer().setInput(new ArrayList<Line>());
  UpdateComplexViewButton(false);
  setControl(composite);
}