Program: 108071
Project: 108071
Buggy source:
private void collectAll(){
  DeviceData info=display.getDeviceData();
  if (!info.tracking) {
    MessageBox dialog=new MessageBox(shell,SWT.ICON_WARNING | SWT.OK);
    dialog.setText(shell.getText());
    dialog.setMessage("String_Node_Str");
    dialog.open();
  }
  newObjects=info.objects;
  newErrors=info.errors;
  Map<String,Integer> objectTypesTimes=new TreeMap<String,Integer>();
  Map<String,Object> objectSameStackTrace=new HashMap<String,Object>();
  final Map<Object,Integer> objectSameStackTraceTimes=new HashMap<Object,Integer>();
  Map<Object,Integer> objectSameStackTraceIDX=new HashMap<Object,Integer>();
  for (int i=0; i < newObjects.length; i++) {
    String className=newObjects[i].getClass().getSimpleName();
    Integer count=objectTypesTimes.get(className);
    if (count == null) {
      objectTypesTimes.put(className,1);
    }
 else {
      objectTypesTimes.put(className,count + 1);
    }
    String stackTrace=getStackTrace(newErrors[i]);
    if (!objectSameStackTrace.containsKey(stackTrace)) {
      objectSameStackTrace.put(stackTrace,newObjects[i]);
      objectSameStackTraceTimes.put(newObjects[i],1);
      objectSameStackTraceIDX.put(newObjects[i],i);
    }
 else {
      Object object=objectSameStackTrace.get(stackTrace);
      objectSameStackTraceTimes.put(object,objectSameStackTraceTimes.get(object) + 1);
    }
  }
  equalObjects=new Object[objectSameStackTrace.size()];
  equalErrors=new Error[objectSameStackTrace.size()];
  int idx=0;
  for (  Entry<String,Object> entry : objectSameStackTrace.entrySet()) {
    equalObjects[idx++]=entry.getValue();
  }
  Arrays.sort(equalObjects,new Comparator<Object>(){
    @Override public int compare(    Object o1,    Object o2){
      return objectSameStackTraceTimes.get(o2) - objectSameStackTraceTimes.get(o1);
    }
  }
);
  for (int i=0; i < equalErrors.length; i++) {
    equalErrors[i]=newErrors[objectSameStackTraceIDX.get(equalObjects[i])];
  }
  StringBuilder statistics=new StringBuilder();
  for (  Entry<String,Integer> entry : objectTypesTimes.entrySet()) {
    statistics.append(entry.getKey());
    statistics.append("String_Node_Str");
    statistics.append(entry.getValue());
    statistics.append("String_Node_Str");
  }
  statistics.append("String_Node_Str");
  statistics.append(newObjects.length);
  statistics.append("String_Node_Str");
  listNewObjects.removeAll();
  for (int i=0; i < newObjects.length; i++) {
    listNewObjects.add(newObjects[i].getClass().getSimpleName() + "String_Node_Str" + newObjects[i].hashCode()+ "String_Node_Str");
  }
  listEqualObjects.removeAll();
  for (int i=0; i < equalObjects.length; i++) {
    listEqualObjects.add(equalObjects[i].getClass().getSimpleName() + "String_Node_Str" + equalObjects[i].hashCode()+ "String_Node_Str"+ "String_Node_Str"+ objectSameStackTraceTimes.get(equalObjects[i])+ "String_Node_Str");
  }
  objectStatistics.setText(statistics.toString());
}

Fixed version (ground truth):
private void collectAll(){
  DeviceData info=display.getDeviceData();
  if (!info.tracking) {
    MessageBox dialog=new MessageBox(shell,SWT.ICON_WARNING | SWT.OK);
    dialog.setText(shell.getText());
    dialog.setMessage("String_Node_Str");
    dialog.open();
  }
  newObjects=info.objects;
  newErrors=info.errors;
  Map<String,Integer> objectTypesTimes=new TreeMap<String,Integer>();
  Map<String,Integer> objectSameStackTrace=new HashMap<String,Integer>();
  final Map<Integer,Integer> objectSameStackTraceTimes=new HashMap<Integer,Integer>();
  for (int i=0; i < newObjects.length; i++) {
    String className=newObjects[i].getClass().getSimpleName();
    Integer count=objectTypesTimes.get(className);
    if (count == null) {
      objectTypesTimes.put(className,1);
    }
 else {
      objectTypesTimes.put(className,count + 1);
    }
    String stackTrace=getStackTrace(newErrors[i]);
    if (!objectSameStackTrace.containsKey(stackTrace)) {
      objectSameStackTrace.put(stackTrace,i);
      objectSameStackTraceTimes.put(i,1);
    }
 else {
      Integer objectIDX=objectSameStackTrace.get(stackTrace);
      objectSameStackTraceTimes.put(objectIDX,objectSameStackTraceTimes.get(objectIDX) + 1);
    }
  }
  equalObjects=new Object[objectSameStackTrace.size()];
  equalErrors=new Error[objectSameStackTrace.size()];
  final int[] equalOccurrence=new int[objectSameStackTrace.size()];
  int idx=0;
  for (  Entry<String,Integer> entry : objectSameStackTrace.entrySet()) {
    equalObjects[idx]=newObjects[entry.getValue()];
    equalErrors[idx]=newErrors[entry.getValue()];
    equalOccurrence[idx]=objectSameStackTraceTimes.get(entry.getValue());
    idx++;
  }
  final IntComparator c=new IntComparator(){
    @Override public int compare(    final int arg0,    final int arg1){
      return equalOccurrence[arg1] - equalOccurrence[arg0];
    }
  }
;
  final Swapper s=new Swapper(){
    @Override public void swap(    final int arg0,    final int arg1){
      Object tempObject=equalObjects[arg0];
      equalObjects[arg0]=equalObjects[arg1];
      equalObjects[arg1]=tempObject;
      Error tempError=equalErrors[arg0];
      equalErrors[arg0]=equalErrors[arg1];
      equalErrors[arg1]=tempError;
      int tempOccurence=equalOccurrence[arg0];
      equalOccurrence[arg0]=equalOccurrence[arg1];
      equalOccurrence[arg1]=tempOccurence;
    }
  }
;
  GenericSorting.mergeSort(0,equalObjects.length,c,s);
  StringBuilder statistics=new StringBuilder();
  for (  Entry<String,Integer> entry : objectTypesTimes.entrySet()) {
    statistics.append(entry.getKey());
    statistics.append("String_Node_Str");
    statistics.append(entry.getValue());
    statistics.append("String_Node_Str");
  }
  statistics.append("String_Node_Str");
  statistics.append(newObjects.length);
  statistics.append("String_Node_Str");
  listNewObjects.removeAll();
  for (int i=0; i < newObjects.length; i++) {
    listNewObjects.add(newObjects[i].getClass().getSimpleName() + "String_Node_Str" + newObjects[i].hashCode()+ "String_Node_Str");
  }
  listEqualObjects.removeAll();
  for (int i=0; i < equalObjects.length; i++) {
    listEqualObjects.add(equalObjects[i].getClass().getSimpleName() + "String_Node_Str" + equalObjects[i].hashCode()+ "String_Node_Str"+ "String_Node_Str"+ equalOccurrence[i]+ "String_Node_Str");
  }
  objectStatistics.setText(statistics.toString());
}