Program: 50673
Project: 50673
Buggy source:
/** 
 * Class Constructor
 * @author Michael Barnard
 * @since 02 July 2012
 * @param dataGridResource - The resource that needs to be used for the data grid
 * @param pagerResource - The resource  that needs to be used for the pager
 * @param multiSelect - Whether the data grid supports multiple selects
 */
public SSDataGrid(DataGrid.Resources dataGridResource,SSPager.Resources pagerResource,boolean multiSelect){
  dataGrid=new DataGrid<T>(10,dataGridResource);
  dataGrid.addColumnSortHandler(new ColumnSortEvent.Handler(){
    /** 
 * Will be called on a column sort event
 * @param event - The event that initialise the handler
 */
    @Override public void onColumnSort(    ColumnSortEvent event){
      ColumnSortInfo columnSortInfo;
      if ((columnSortInfo=columnSortDetail.get(event.getColumn())) != null) {
        columnSortDetail.remove(event.getColumn());
        columnSortDetail.put(event.getColumn(),new ColumnSortInfo(event.getColumn(),!columnSortInfo.isAscending()));
      }
 else {
        columnSortDetail.put(event.getColumn(),new ColumnSortInfo(event.getColumn(),true));
      }
      SSDataGrid.this.dataGrid.getColumnSortList().push(columnSortDetail.get(event.getColumn()));
      fireEvent(new DataGridSortEvent(event.getColumn(),columnSortDetail.get(event.getColumn()).isAscending()));
    }
  }
);
  dataProvider.addDataDisplay(dataGrid);
  pager=new SSPager(TextLocation.CENTER,pagerResource,false,0,true);
  pager.setDisplay(dataGrid);
  setMultiSelect(multiSelect);
  setClickAction(false);
  this.initWidget(uiBinder.createAndBindUi(this));
  Resources.INSTANCE.dataGridStyle().ensureInjected();
  actionBar.setStyleName(Resources.INSTANCE.dataGridStyle().actionBarStyle());
}

Fixed version (ground truth):
/** 
 * Class Constructor
 * @author Michael Barnard
 * @since 02 July 2012
 * @param dataGridResource - The resource that needs to be used for the data grid
 * @param pagerResource - The resource  that needs to be used for the pager
 * @param multiSelect - Whether the data grid supports multiple selects
 */
public SSDataGrid(DataGrid.Resources dataGridResource,SSPager.Resources pagerResource,boolean multiSelect){
  dataGrid=new DataGrid<T>(10,dataGridResource);
  dataGrid.addColumnSortHandler(new ColumnSortEvent.Handler(){
    /** 
 * Will be called on a column sort event
 * @param event - The event that initialise the handler
 */
    @Override public void onColumnSort(    ColumnSortEvent event){
      ColumnSortInfo columnSortInfo;
      if ((columnSortInfo=columnSortDetail.get(event.getColumn())) != null) {
        columnSortDetail.remove(event.getColumn());
        columnSortDetail.put(event.getColumn(),new ColumnSortInfo(event.getColumn(),!columnSortInfo.isAscending()));
      }
 else {
        columnSortDetail.put(event.getColumn(),new ColumnSortInfo(event.getColumn(),true));
      }
      SSDataGrid.this.dataGrid.getColumnSortList().push(columnSortDetail.get(event.getColumn()));
      fireEvent(new DataGridSortEvent(event.getColumn(),columnSortDetail.get(event.getColumn()).isAscending()));
    }
  }
);
  dataProvider.addDataDisplay(dataGrid);
  pager=new SSPager(TextLocation.CENTER,pagerResource,false,0,true);
  pager.setDisplay(dataGrid);
  setMultiSelect(multiSelect);
  setClickAction(false);
  this.initWidget(uiBinder.createAndBindUi(this));
  Resources.INSTANCE.dataGridStyle().ensureInjected();
  actionBar.setStyleName(Resources.INSTANCE.dataGridStyle().actionBarStyle());
  dataGrid.addRangeChangeHandler(new RangeChangeEvent.Handler(){
    /** 
 * Event that is called when the pager navigation buttons are clicked
 * @param event - The event that is triggered
 */
    @Override public void onRangeChange(    RangeChangeEvent event){
      refresh();
    }
  }
);
}