Program: 52791
Project: 52791
Buggy source:
public IndustryClassificationTreeViewer(Composite parent,int style){
  container=new Composite(parent,style);
  TreeColumnLayout layout=new TreeColumnLayout();
  container.setLayout(layout);
  viewer=new TreeViewer(container);
  TreeViewerColumn column=new TreeViewerColumn(viewer,SWT.NONE);
  column.getColumn().setText(Messages.ShortLabelIndustry);
  column.getColumn().setWidth(400);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(400));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return ((TreeMapItem)element).getLabel();
    }
    @Override public Image getImage(    Object element){
      TreeMapItem node=(TreeMapItem)element;
      if (node.isCategory())       return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
 else       if (node.isSecurity())       return PortfolioPlugin.image(PortfolioPlugin.IMG_SECURITY);
 else       if (node.isAccount())       return PortfolioPlugin.image(PortfolioPlugin.IMG_ACCOUNT);
 else       return null;
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column);
  column=new TreeViewerColumn(viewer,SWT.RIGHT);
  column.getColumn().setText(Messages.ColumnActualPercent);
  column.getColumn().setWidth(60);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(60));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      double percentage=((TreeMapItem)element).getPercentage();
      return String.format("String_Node_Str",percentage * 100d);
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column,true);
  column=new TreeViewerColumn(viewer,SWT.RIGHT);
  column.getColumn().setText(Messages.ColumnActualValue);
  column.getColumn().setWidth(100);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(100));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      long valuation=((TreeMapItem)element).getValuation();
      return Values.Amount.format(valuation);
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column);
  viewer.getTree().setHeaderVisible(true);
  viewer.getTree().setLinesVisible(true);
  viewer.setContentProvider(new ItemContentProvider());
}

Fixed version (ground truth):
public IndustryClassificationTreeViewer(Composite parent,int style){
  container=new Composite(parent,style);
  TreeColumnLayout layout=new TreeColumnLayout();
  container.setLayout(layout);
  viewer=new TreeViewer(container,SWT.FULL_SELECTION);
  TreeViewerColumn column=new TreeViewerColumn(viewer,SWT.NONE);
  column.getColumn().setText(Messages.ShortLabelIndustry);
  column.getColumn().setWidth(400);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(400));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return ((TreeMapItem)element).getLabel();
    }
    @Override public Image getImage(    Object element){
      TreeMapItem node=(TreeMapItem)element;
      if (node.isCategory())       return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
 else       if (node.isSecurity())       return PortfolioPlugin.image(PortfolioPlugin.IMG_SECURITY);
 else       if (node.isAccount())       return PortfolioPlugin.image(PortfolioPlugin.IMG_ACCOUNT);
 else       return null;
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column);
  column=new TreeViewerColumn(viewer,SWT.RIGHT);
  column.getColumn().setText(Messages.ColumnActualPercent);
  column.getColumn().setWidth(60);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(60));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      double percentage=((TreeMapItem)element).getPercentage();
      return String.format("String_Node_Str",percentage * 100d);
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column,true);
  column=new TreeViewerColumn(viewer,SWT.RIGHT);
  column.getColumn().setText(Messages.ColumnActualValue);
  column.getColumn().setWidth(100);
  layout.setColumnData(column.getColumn(),new ColumnPixelData(100));
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      long valuation=((TreeMapItem)element).getValuation();
      return Values.Amount.format(valuation);
    }
  }
);
  ColumnViewerSorter.create(TreeMapItem.class,"String_Node_Str").attachTo(viewer,column);
  viewer.getTree().setHeaderVisible(true);
  viewer.getTree().setLinesVisible(true);
  viewer.setContentProvider(new ItemContentProvider());
}