Program: 91755
Project: 91755
Buggy source:
private void createTableViewer(final Composite container){
  search=new Text(container,SWT.SEARCH | SWT.ICON_SEARCH);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,false).applyTo(search);
  search.addModifyListener(onSearch());
  Composite tableArea=new Composite(container,SWT.NONE);
  GridLayoutFactory.fillDefaults().numColumns(1).margins(0,0).applyTo(tableArea);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(tableArea);
  final TableColumnLayout tableLayout=new TableColumnLayout();
  tableArea.setLayout(tableLayout);
  this.viewer=new TableViewer(tableArea,SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL);
  this.viewer.setContentProvider(new DockerImagesContentProvider());
  final Table table=viewer.getTable();
  GridLayoutFactory.fillDefaults().numColumns(1).margins(0,0).applyTo(table);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(table);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  final TableViewerColumn idColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(idColumn,tableLayout,150);
  idColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        final String imageId=((IDockerImage)element).id();
        if (imageId.length() > 12) {
          return imageId.substring(0,12);
        }
        return imageId;
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn tagsColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(tagsColumn,tableLayout,150);
  tagsColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        final IDockerImage image=(IDockerImage)element;
        final StringBuilder messageBuilder=new StringBuilder();
        for (Iterator<String> iterator=image.repoTags().iterator(); iterator.hasNext(); ) {
          final String repoTag=iterator.next();
          messageBuilder.append(repoTag);
          if (iterator.hasNext()) {
            messageBuilder.append('\n');
          }
        }
        return messageBuilder.toString();
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn creationDateColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(creationDateColumn,tableLayout,150);
  creationDateColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        return LabelUtils.toCreatedDate(Long.parseLong(((IDockerImage)element).created()));
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn virtsizeColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(virtsizeColumn,tableLayout,150);
  virtsizeColumn.setLabelProvider(new SpecialColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        Long size=((IDockerImage)element).virtualSize();
        if (size <= 0)         return "String_Node_Str";
        final String[] units=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
        int digitGroups=(int)(Math.log10(size) / Math.log10(1000));
        return new DecimalFormat("String_Node_Str").format(size / Math.pow(1000,digitGroups)) + "String_Node_Str" + units[digitGroups];
      }
      return super.getText(element);
    }
    @Override public String getCompareText(    final Object element){
      if (element instanceof IDockerImage) {
        return new DecimalFormat("String_Node_Str").format((((IDockerImage)element).virtualSize()));
      }
      return super.getText(element);
    }
  }
);
  final DockerImagesComparator comparator=new DockerImagesComparator(this.viewer);
  comparator.setColumn(creationDateColumn.getColumn());
  comparator.setColumn(creationDateColumn.getColumn());
  viewer.setComparator(comparator);
  this.viewer.addFilter(getImagesFilter());
  setConnection(CommandUtils.getCurrentConnection(null));
  getSite().setSelectionProvider(viewer);
}

Fixed version (ground truth):
private void createTableViewer(final Composite container){
  search=new Text(container,SWT.SEARCH | SWT.ICON_SEARCH);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,false).applyTo(search);
  search.addModifyListener(onSearch());
  Composite tableArea=new Composite(container,SWT.NONE);
  GridLayoutFactory.fillDefaults().numColumns(1).margins(0,0).applyTo(tableArea);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(tableArea);
  final TableColumnLayout tableLayout=new TableColumnLayout();
  tableArea.setLayout(tableLayout);
  this.viewer=new TableViewer(tableArea,SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL);
  this.viewer.setContentProvider(new DockerImagesContentProvider());
  final Table table=viewer.getTable();
  GridLayoutFactory.fillDefaults().numColumns(1).margins(0,0).applyTo(table);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(table);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  final TableViewerColumn idColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(idColumn,tableLayout,150);
  idColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        String imageId=((IDockerImage)element).id();
        if (imageId.startsWith("String_Node_Str"))         imageId=imageId.substring(7);
        if (imageId.length() > 12) {
          return imageId.substring(0,12);
        }
        return imageId;
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn tagsColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(tagsColumn,tableLayout,150);
  tagsColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        final IDockerImage image=(IDockerImage)element;
        final StringBuilder messageBuilder=new StringBuilder();
        for (Iterator<String> iterator=image.repoTags().iterator(); iterator.hasNext(); ) {
          final String repoTag=iterator.next();
          messageBuilder.append(repoTag);
          if (iterator.hasNext()) {
            messageBuilder.append('\n');
          }
        }
        return messageBuilder.toString();
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn creationDateColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(creationDateColumn,tableLayout,150);
  creationDateColumn.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        return LabelUtils.toCreatedDate(Long.parseLong(((IDockerImage)element).created()));
      }
      return super.getText(element);
    }
  }
);
  final TableViewerColumn virtsizeColumn=createColumn(DVMessages.getString("String_Node_Str"));
  setLayout(virtsizeColumn,tableLayout,150);
  virtsizeColumn.setLabelProvider(new SpecialColumnLabelProvider(){
    @Override public String getText(    final Object element){
      if (element instanceof IDockerImage) {
        Long size=((IDockerImage)element).virtualSize();
        if (size <= 0)         return "String_Node_Str";
        final String[] units=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
        int digitGroups=(int)(Math.log10(size) / Math.log10(1000));
        return new DecimalFormat("String_Node_Str").format(size / Math.pow(1000,digitGroups)) + "String_Node_Str" + units[digitGroups];
      }
      return super.getText(element);
    }
    @Override public String getCompareText(    final Object element){
      if (element instanceof IDockerImage) {
        return new DecimalFormat("String_Node_Str").format((((IDockerImage)element).virtualSize()));
      }
      return super.getText(element);
    }
  }
);
  final DockerImagesComparator comparator=new DockerImagesComparator(this.viewer);
  comparator.setColumn(creationDateColumn.getColumn());
  comparator.setColumn(creationDateColumn.getColumn());
  viewer.setComparator(comparator);
  this.viewer.addFilter(getImagesFilter());
  setConnection(CommandUtils.getCurrentConnection(null));
  getSite().setSelectionProvider(viewer);
}