Program: 125171
Project: 125171
Buggy source:
public static final Tree greedyConsensus(Iterable<Tree> trees){
  HashMap<STITreeCluster,Integer> count=new HashMap<STITreeCluster,Integer>();
  for (  Tree tree : trees) {
    List<STITreeCluster> bipartitionClusters=Utils.getClusters(tree);
    for (    STITreeCluster cluster : bipartitionClusters) {
      if (count.containsKey(cluster)) {
        count.put(cluster,count.get(cluster) + 1);
        continue;
      }
      STITreeCluster comp=cluster.complementaryCluster();
      if (count.containsKey(comp)) {
        count.put(comp,count.get(comp) + 1);
        continue;
      }
      count.put(cluster,1);
    }
  }
  TreeSet<Entry<STITreeCluster,Integer>> countSorted=new TreeSet<Entry<STITreeCluster,Integer>>(new Comparator<Entry<STITreeCluster,Integer>>(){
    @Override public int compare(    Entry<STITreeCluster,Integer> o1,    Entry<STITreeCluster,Integer> o2){
      int a=o2.getValue().compareTo(o1.getValue());
      if (a != 0) {
        return a;
      }
      if (o2.getKey().equals(o1)) {
        return 0;
      }
      int i=0;
      while (i >= 0) {
        int j=o1.getKey().getBitSet().nextSetBit(i);
        int jj=o2.getKey().getBitSet().nextSetBit(i);
        if (j != jj) {
          return (j > jj) ? -1 : 1;
        }
 else {
          if (j == -1) {
            break;
          }
          i=j + 1;
        }
      }
      throw new RuntimeException("String_Node_Str");
    }
  }
);
  countSorted.addAll(count.entrySet());
  List<STITreeCluster> clusters=new ArrayList<STITreeCluster>();
  for (  Entry<STITreeCluster,Integer> entry : countSorted) {
    clusters.add(entry.getKey());
  }
  return Utils.buildTreeFromClusters(clusters);
}

Fixed version (ground truth):
public static final Tree greedyConsensus(Iterable<Tree> trees){
  HashMap<STITreeCluster,Integer> count=new HashMap<STITreeCluster,Integer>();
  for (  Tree tree : trees) {
    List<STITreeCluster> bipartitionClusters=Utils.getClusters(tree);
    for (    STITreeCluster cluster : bipartitionClusters) {
      if (count.containsKey(cluster)) {
        count.put(cluster,count.get(cluster) + 1);
        continue;
      }
      STITreeCluster comp=cluster.complementaryCluster();
      if (count.containsKey(comp)) {
        count.put(comp,count.get(comp) + 1);
        continue;
      }
      count.put(cluster,1);
    }
  }
  TreeSet<Entry<STITreeCluster,Integer>> countSorted=new TreeSet<Entry<STITreeCluster,Integer>>(new Comparator<Entry<STITreeCluster,Integer>>(){
    @Override public int compare(    Entry<STITreeCluster,Integer> o1,    Entry<STITreeCluster,Integer> o2){
      int a=o2.getValue().compareTo(o1.getValue());
      if (a != 0) {
        return a;
      }
      if (o2.getKey().equals(o1.getKey())) {
        return 0;
      }
      int i=0;
      while (i >= 0) {
        int j=o1.getKey().getBitSet().nextSetBit(i);
        int jj=o2.getKey().getBitSet().nextSetBit(i);
        if (j != jj) {
          return (j > jj) ? -1 : 1;
        }
 else {
          if (j == -1) {
            break;
          }
          i=j + 1;
        }
      }
      throw new RuntimeException("String_Node_Str");
    }
  }
);
  countSorted.addAll(count.entrySet());
  List<STITreeCluster> clusters=new ArrayList<STITreeCluster>();
  for (  Entry<STITreeCluster,Integer> entry : countSorted) {
    clusters.add(entry.getKey());
  }
  return Utils.buildTreeFromClusters(clusters);
}