Program: 190389
Project: 190389
Buggy source:
public void execute(GraphModel graphModel){
  cancelled=false;
  Progress.start(progressTicket);
  Progress.setDisplayName(progressTicket,"String_Node_Str");
  HashMap<Integer,Node> nodeMap=new HashMap<Integer,Node>();
  HashMap<Node,Integer> intMap=new HashMap<Node,Integer>();
  Graph graph=graphModel.getGraph();
  graph.readLock();
  SparseMatrix matrix=new SparseMatrix();
  int nodeId=0;
  for (  Edge e : graph.getEdges()) {
    Node source=e.getSource();
    Node target=e.getTarget();
    Integer sourceId;
    Integer targetId;
    if ((sourceId=intMap.get(source)) == null) {
      sourceId=nodeId++;
      intMap.put(source,sourceId);
      nodeMap.put(sourceId,source);
    }
    if ((targetId=intMap.get(target)) == null) {
      targetId=nodeId++;
      intMap.put(target,targetId);
      nodeMap.put(targetId,target);
    }
    double weight=e.getWeight();
    matrix.add(sourceId,targetId,weight);
    if (cancelled) {
      graph.readUnlockAll();
      return;
    }
  }
  graph.readUnlock();
  matrix=matrix.transpose();
  matrix=run(matrix,maxResidual,gammaExp,loopGain,zeroMax);
  if (cancelled) {
    return;
  }
  Map<Integer,ArrayList<Integer>> map=getClusters(matrix);
  if (cancelled) {
    return;
  }
  int clusterNumber=1;
  List<Cluster> clustersList=new ArrayList<Cluster>();
  Set<ArrayList<Integer>> sortedClusters=new HashSet<ArrayList<Integer>>();
  for (  ArrayList<Integer> c : map.values()) {
    if (!sortedClusters.contains(c)) {
      sortedClusters.add(c);
      Node[] nodes=new Node[c.size()];
      int i=0;
      for (      Integer in : c) {
        Node node=nodeMap.get(in);
        nodes[i]=node;
        i++;
      }
      clustersList.add(new MCLCluster(nodes,clusterNumber));
      clusterNumber++;
    }
    if (cancelled) {
      return;
    }
  }
  clusters=clustersList.toArray(new Cluster[0]);
  Progress.finish(progressTicket);
}

Fixed version (ground truth):
public void execute(GraphModel graphModel){
  cancelled=false;
  Progress.start(progressTicket);
  Progress.setDisplayName(progressTicket,"String_Node_Str");
  HashMap<Integer,Node> nodeMap=new HashMap<Integer,Node>();
  HashMap<Node,Integer> intMap=new HashMap<Node,Integer>();
  Graph graph=graphModel.getGraphVisible();
  graph.readLock();
  SparseMatrix matrix=new SparseMatrix();
  int nodeId=0;
  for (  Edge e : graph.getEdges()) {
    Node source=e.getSource();
    Node target=e.getTarget();
    Integer sourceId;
    Integer targetId;
    if ((sourceId=intMap.get(source)) == null) {
      sourceId=nodeId++;
      intMap.put(source,sourceId);
      nodeMap.put(sourceId,source);
    }
    if ((targetId=intMap.get(target)) == null) {
      targetId=nodeId++;
      intMap.put(target,targetId);
      nodeMap.put(targetId,target);
    }
    double weight=e.getWeight();
    matrix.add(sourceId,targetId,weight);
    if (cancelled) {
      graph.readUnlockAll();
      return;
    }
  }
  graph.readUnlock();
  matrix=matrix.transpose();
  matrix=run(matrix,maxResidual,gammaExp,loopGain,zeroMax);
  if (cancelled) {
    return;
  }
  Map<Integer,ArrayList<Integer>> map=getClusters(matrix);
  if (cancelled) {
    return;
  }
  int clusterNumber=1;
  List<Cluster> clustersList=new ArrayList<Cluster>();
  Set<ArrayList<Integer>> sortedClusters=new HashSet<ArrayList<Integer>>();
  for (  ArrayList<Integer> c : map.values()) {
    if (!sortedClusters.contains(c)) {
      sortedClusters.add(c);
      Node[] nodes=new Node[c.size()];
      int i=0;
      for (      Integer in : c) {
        Node node=nodeMap.get(in);
        nodes[i]=node;
        i++;
      }
      clustersList.add(new MCLCluster(nodes,clusterNumber));
      clusterNumber++;
    }
    if (cancelled) {
      return;
    }
  }
  clusters=clustersList.toArray(new Cluster[0]);
  Progress.finish(progressTicket);
}