Program: 142686
Project: 142686
Buggy source:
public void execute(HierarchicalGraph graph,AttributeModel attributeModel){
  isCanceled=false;
  graph.readLock();
  Progress.start(progress,graph.getNodeCount());
  if (isDirected) {
    inDistribution=new double[2][2 * graph.getNodeCount()];
    outDistribution=new double[2][2 * graph.getNodeCount()];
  }
 else {
    combinedDistribution=new double[2][2 * graph.getNodeCount()];
  }
  int nodeCount=0;
  for (  Node node : graph.getNodes()) {
    if (isDirected) {
      int inDegree=((HierarchicalDirectedGraph)graph).getTotalInDegree(node);
      int outDegree=((HierarchicalDirectedGraph)graph).getTotalOutDegree(node);
      inDistribution[1][inDegree]++;
      outDistribution[1][outDegree]++;
      inDistribution[0][inDegree]=inDegree;
      outDistribution[0][outDegree]=outDegree;
    }
 else {
      int combinedDegree=((HierarchicalUndirectedGraph)graph).getTotalDegree(node);
      combinedDistribution[1][combinedDegree]++;
      combinedDistribution[0][combinedDegree]=combinedDegree;
    }
    Progress.progress(progress,nodeCount);
    nodeCount++;
    if (isCanceled) {
      graph.readUnlockAll();
      return;
    }
  }
  graph.readUnlock();
  if (isDirected) {
    double[] inFit=new double[2];
    double[] outFit=new double[2];
    leastSquares(inDistribution[1],inFit);
    leastSquares(outDistribution[1],outFit);
    inAlpha=inFit[1];
    inBeta=inFit[0];
    outAlpha=outFit[1];
    outBeta=outFit[0];
  }
 else {
    double[] fit=new double[2];
    leastSquares(combinedDistribution[1],fit);
    combinedAlpha=fit[1];
    combinedBeta=fit[0];
  }
}

Fixed version (ground truth):
private void execute(HierarchicalGraph graph,AttributeModel attributeModel){
  isCanceled=false;
  graph.readLock();
  Progress.start(progress,graph.getNodeCount());
  if (isDirected) {
    inDistribution=new double[2][2 * graph.getNodeCount()];
    outDistribution=new double[2][2 * graph.getNodeCount()];
  }
 else {
    combinedDistribution=new double[2][2 * graph.getNodeCount()];
  }
  int nodeCount=0;
  for (  Node node : graph.getNodes()) {
    if (isDirected) {
      int inDegree=((HierarchicalDirectedGraph)graph).getTotalInDegree(node);
      int outDegree=((HierarchicalDirectedGraph)graph).getTotalOutDegree(node);
      inDistribution[1][inDegree]++;
      outDistribution[1][outDegree]++;
      inDistribution[0][inDegree]=inDegree;
      outDistribution[0][outDegree]=outDegree;
    }
 else {
      int combinedDegree=((HierarchicalUndirectedGraph)graph).getTotalDegree(node);
      combinedDistribution[1][combinedDegree]++;
      combinedDistribution[0][combinedDegree]=combinedDegree;
    }
    Progress.progress(progress,nodeCount);
    nodeCount++;
    if (isCanceled) {
      graph.readUnlockAll();
      return;
    }
  }
  graph.readUnlock();
  if (isDirected) {
    double[] inFit=new double[2];
    double[] outFit=new double[2];
    leastSquares(inDistribution[1],inFit);
    leastSquares(outDistribution[1],outFit);
    inAlpha=inFit[1];
    inBeta=inFit[0];
    outAlpha=outFit[1];
    outBeta=outFit[0];
  }
 else {
    double[] fit=new double[2];
    leastSquares(combinedDistribution[1],fit);
    combinedAlpha=fit[1];
    combinedBeta=fit[0];
  }
}