Program: 52919
Project: 52919
Buggy source:
public static Set<Set<LocalId>> split(Map<LocalId,List<LocalId>> ills,int minVotes,int maxVotesPerLang,boolean print,LocalPageDao lpDao) throws WikiBrainException {
  HashMap<LocalId,SummingHashMap<Integer>> counter=new HashMap<LocalId,SummingHashMap<Integer>>();
  HashMap<LocalId,SummingHashMap<Integer>> outCounter=new HashMap<LocalId,SummingHashMap<Integer>>();
  HashMap<LocalId,LocalId> outFoundLinks=new HashMap<LocalId,LocalId>();
  for (  LocalId curSource : ills.keySet()) {
    outCounter.put(curSource,new SummingHashMap<Integer>());
    for (    LocalId curDest : ills.get(curSource)) {
      if (!outCounter.get(curSource).containsKey(curDest.getLanguage().getId())) {
        outCounter.get(curSource).addValue(new Integer(curDest.getLanguage().getId()),1.0);
        outFoundLinks.put(curSource,curDest);
      }
 else {
        if (!outFoundLinks.get(curSource).equals(curDest)) {
          outCounter.get(curSource).addValue(new Integer(curDest.getLanguage().getId()),1.0);
        }
      }
      if (!counter.containsKey(curDest)) {
        counter.put(curDest,new SummingHashMap<Integer>());
      }
      counter.get(curDest).addValue(new Integer(curSource.getLanguage().getId()),1.0);
    }
  }
  int edgeCounter=0;
  DirectedSparseGraph<LocalId,Integer> graph=new DirectedSparseGraph<LocalId,Integer>();
  for (  LocalId curSource : ills.keySet()) {
    graph.addVertex(curSource);
    for (    LocalId curDest : ills.get(curSource)) {
      if (outCounter.get(curSource).get(new Integer(curDest.getLanguage().getId())) <= maxVotesPerLang) {
        int totalVotes=counter.get(curDest).keySet().size();
        if (totalVotes >= minVotes) {
          if (counter.get(curDest).get(new Integer(curSource.getLanguage().getId())) <= maxVotesPerLang) {
            graph.addEdge(edgeCounter++,curSource,curDest);
          }
        }
      }
 else {
        LOG.warning("String_Node_Str" + "String_Node_Str" + curSource + "String_Node_Str"+ curDest);
      }
    }
  }
  WeakComponentClusterer<LocalId,Integer> clusterer=new WeakComponentClusterer<LocalId,Integer>();
  Set<Set<LocalId>> clusters=clusterer.transform(graph);
  if (print) {
    int maxSize=0;
    Set<LocalId> maxCluster=null;
    for (    Set<LocalId> cluster : clusters) {
      StringBuilder sb=new StringBuilder();
      for (      LocalId clusterMemb : cluster) {
        try {
          sb.append(lpDao.getById(clusterMemb).getTitle().toString());
          sb.append("String_Node_Str");
        }
 catch (        DaoException e) {
          LOG.severe("String_Node_Str" + clusterMemb.toString());
        }
      }
      LOG.info("String_Node_Str" + sb.toString());
      maxSize=(maxSize > cluster.size()) ? maxSize : cluster.size();
      maxCluster=(maxSize > cluster.size()) ? maxCluster : cluster;
    }
    LOG.info("String_Node_Str" + clusters.size());
    LOG.info("String_Node_Str" + maxSize);
  }
  return clusters;
}

Fixed version (ground truth):
public static Set<Set<LocalId>> split(Map<LocalId,List<LocalId>> ills,int minVotes,int maxVotesPerLang,boolean print,LocalPageDao lpDao) throws WikiBrainException {
  HashMap<LocalId,SummingHashMap<Integer>> counter=new HashMap<LocalId,SummingHashMap<Integer>>();
  HashMap<LocalId,SummingHashMap<Integer>> outCounter=new HashMap<LocalId,SummingHashMap<Integer>>();
  HashMap<LocalId,LocalId> outFoundLinks=new HashMap<LocalId,LocalId>();
  for (  LocalId curSource : ills.keySet()) {
    outCounter.put(curSource,new SummingHashMap<Integer>());
    for (    LocalId curDest : ills.get(curSource)) {
      if (!outCounter.get(curSource).containsKey(curDest.getLanguage().getId())) {
        outCounter.get(curSource).addValue(new Integer(curDest.getLanguage().getId()),1.0);
        outFoundLinks.put(curSource,curDest);
      }
 else {
        if (!outFoundLinks.get(curSource).equals(curDest)) {
          outCounter.get(curSource).addValue(new Integer(curDest.getLanguage().getId()),1.0);
        }
      }
      if (!counter.containsKey(curDest)) {
        counter.put(curDest,new SummingHashMap<Integer>());
      }
      counter.get(curDest).addValue(new Integer(curSource.getLanguage().getId()),1.0);
    }
  }
  int edgeCounter=0;
  DirectedSparseGraph<LocalId,Integer> graph=new DirectedSparseGraph<LocalId,Integer>();
  for (  LocalId curSource : ills.keySet()) {
    graph.addVertex(curSource);
    for (    LocalId curDest : ills.get(curSource)) {
      if (outCounter.get(curSource).get(new Integer(curDest.getLanguage().getId())) <= maxVotesPerLang) {
        int totalVotes=counter.get(curDest).keySet().size();
        if (totalVotes >= minVotes) {
          if (counter.get(curDest).get(new Integer(curSource.getLanguage().getId())) <= maxVotesPerLang) {
            graph.addEdge(edgeCounter++,curSource,curDest);
          }
        }
 else {
          if (print) {
            try {
              LOG.info("String_Node_Str" + lpDao.getById(curSource).getTitle() + "String_Node_Str"+ lpDao.getById(curDest).getTitle());
            }
 catch (            DaoException e) {
              throw new WikiBrainException(e);
            }
          }
        }
      }
 else {
        LOG.warning("String_Node_Str" + "String_Node_Str" + curSource + "String_Node_Str"+ curDest);
      }
    }
  }
  WeakComponentClusterer<LocalId,Integer> clusterer=new WeakComponentClusterer<LocalId,Integer>();
  Set<Set<LocalId>> clusters=clusterer.transform(graph);
  if (print) {
    int maxSize=0;
    Set<LocalId> maxCluster=null;
    for (    Set<LocalId> cluster : clusters) {
      StringBuilder sb=new StringBuilder();
      for (      LocalId clusterMemb : cluster) {
        try {
          sb.append(lpDao.getById(clusterMemb).getTitle().toString());
          sb.append("String_Node_Str");
        }
 catch (        DaoException e) {
          LOG.severe("String_Node_Str" + clusterMemb.toString());
        }
      }
      LOG.info("String_Node_Str" + sb.toString());
      maxSize=(maxSize > cluster.size()) ? maxSize : cluster.size();
      maxCluster=(maxSize > cluster.size()) ? maxCluster : cluster;
    }
    LOG.info("String_Node_Str" + clusters.size());
    LOG.info("String_Node_Str" + maxSize);
  }
  return clusters;
}