Program: 52756
Project: 52756
Buggy source:
protected void createTopTable(Composite parent){
  Composite container=new Composite(parent,SWT.NONE);
  TableColumnLayout layout=new TableColumnLayout();
  container.setLayout(layout);
  portfolios=new TableViewer(container,SWT.FULL_SELECTION);
  ColumnEditingSupport.prepare(portfolios);
  portfolioColumns=new ShowHideColumnHelper(PortfolioListView.class.getSimpleName() + "String_Node_Str",getPreferenceStore(),portfolios,layout);
  Column column=new NameColumn("String_Node_Str",Messages.ColumnPortfolio,SWT.None,100);
  column.getEditingSupport().addListener(this);
  portfolioColumns.addColumn(column);
  column=new Column(Messages.ColumnReferenceAccount,SWT.None,160);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object e){
      Portfolio p=(Portfolio)e;
      return p.getReferenceAccount() != null ? p.getReferenceAccount().getName() : null;
    }
    @Override public Image getImage(    Object e){
      String note=((Portfolio)e).getNote();
      return note != null && note.length() > 0 ? PortfolioPlugin.image(PortfolioPlugin.IMG_NOTE) : null;
    }
  }
);
  ColumnViewerSorter.create(Portfolio.class,"String_Node_Str").attachTo(column);
  new ListEditingSupport(Portfolio.class,"String_Node_Str",getClient().getAccounts()).addListener(this).attachTo(column);
  portfolioColumns.addColumn(column);
  column=new NoteColumn();
  column.getEditingSupport().addListener(this);
  portfolioColumns.addColumn(column);
  portfolioColumns.createColumns();
  portfolios.getTable().setHeaderVisible(true);
  portfolios.getTable().setLinesVisible(true);
  portfolios.setContentProvider(new SimpleListContentProvider());
  portfolios.setInput(getClient().getPortfolios());
  if (!portfolioColumns.isUserConfigured())   ViewerHelper.pack(portfolios);
  portfolios.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      Portfolio portfolio=(Portfolio)((IStructuredSelection)event.getSelection()).getFirstElement();
      if (portfolio != null) {
        transactions.setInput(portfolio,portfolio.getTransactions());
        transactions.refresh();
        statementOfAssets.setInput(PortfolioSnapshot.create(portfolio,Dates.today()));
      }
 else {
        transactions.setInput(null,null);
        transactions.refresh();
        statementOfAssets.setInput((PortfolioSnapshot)null);
      }
    }
  }
);
  hookContextMenu(portfolios.getTable(),new IMenuListener(){
    public void menuAboutToShow(    IMenuManager manager){
      fillPortfolioContextMenu(manager);
    }
  }
);
}

Fixed version (ground truth):
protected void createTopTable(Composite parent){
  Composite container=new Composite(parent,SWT.NONE);
  TableColumnLayout layout=new TableColumnLayout();
  container.setLayout(layout);
  portfolios=new TableViewer(container,SWT.FULL_SELECTION);
  ColumnEditingSupport.prepare(portfolios);
  portfolioColumns=new ShowHideColumnHelper(PortfolioListView.class.getSimpleName() + "String_Node_Str",getPreferenceStore(),portfolios,layout);
  Column column=new NameColumn("String_Node_Str",Messages.ColumnPortfolio,SWT.None,100);
  column.getEditingSupport().addListener(this);
  portfolioColumns.addColumn(column);
  column=new Column(Messages.ColumnReferenceAccount,SWT.None,160);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object e){
      Portfolio p=(Portfolio)e;
      return p.getReferenceAccount() != null ? p.getReferenceAccount().getName() : null;
    }
    @Override public Image getImage(    Object e){
      String note=((Portfolio)e).getNote();
      return note != null && note.length() > 0 ? PortfolioPlugin.image(PortfolioPlugin.IMG_NOTE) : null;
    }
  }
);
  ColumnViewerSorter.create(Portfolio.class,"String_Node_Str").attachTo(column);
  new ListEditingSupport(Portfolio.class,"String_Node_Str",getClient().getAccounts()).addListener(this).attachTo(column);
  portfolioColumns.addColumn(column);
  column=new NoteColumn();
  column.getEditingSupport().addListener(this);
  portfolioColumns.addColumn(column);
  portfolioColumns.createColumns();
  portfolios.getTable().setHeaderVisible(true);
  portfolios.getTable().setLinesVisible(true);
  portfolios.setContentProvider(new SimpleListContentProvider());
  portfolios.setInput(getClient().getPortfolios());
  ViewerHelper.pack(portfolios);
  portfolios.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      Portfolio portfolio=(Portfolio)((IStructuredSelection)event.getSelection()).getFirstElement();
      if (portfolio != null) {
        transactions.setInput(portfolio,portfolio.getTransactions());
        transactions.refresh();
        statementOfAssets.setInput(PortfolioSnapshot.create(portfolio,Dates.today()));
      }
 else {
        transactions.setInput(null,null);
        transactions.refresh();
        statementOfAssets.setInput((PortfolioSnapshot)null);
      }
    }
  }
);
  hookContextMenu(portfolios.getTable(),new IMenuListener(){
    public void menuAboutToShow(    IMenuManager manager){
      fillPortfolioContextMenu(manager);
    }
  }
);
}