Program: 189604
Project: 189604
Buggy source:
public List<InferenceResultRecord> runSimulation(){
  Observation initialObs;
  try {
    initialObs=Observation.createObservation(this.simulationName,startTime,startCoordinates,null,null,null);
    final SnappedEdges initialEdges=Api.getGraph().snapToGraph(null,initialObs.getObsCoords());
    List<InferredEdge> edges=Lists.newArrayList(InferredGraph.getEmptyEdge());
    for (    Edge edge : initialEdges.getSnappedEdges()) {
      edges.add(inferredGraph.getInferredEdge(edge));
    }
    final InferredEdge currentInferredEdge=edges.get(rng.nextInt(edges.size()));
    InferredPath currentPath=new InferredPath(currentInferredEdge);
    PathEdge currentPathEdge=Iterables.getOnlyElement(currentPath.getEdges());
    VehicleState vehicleState=new VehicleState(this.inferredGraph,initialObs,currentInferredEdge);
    Vector thisStateSample=sampleBelief(vehicleState);
    vehicleState.getBelief().setMean(thisStateSample);
    for (long time=startTime.getTime(); time < endTime.getTime(); time+=frequency * 1000) {
      vehicleState.getMovementFilter().setCurrentTimeDiff(frequency);
      final MultivariateGaussian currentLocBelief=vehicleState.getBelief();
      final EdgeTransitionDistributions currentEdgeTrans=vehicleState.getEdgeTransitionDist();
      currentPath=traverseEdge(vehicleState.getEdgeTransitionDist(),currentLocBelief,currentPathEdge,vehicleState.getMovementFilter());
      currentPathEdge=Iterables.getLast(currentPath.getEdges());
      Vector thisLoc=sampleObservation(vehicleState);
      Coordinate obsCoord=GeoUtils.convertToLatLon(thisLoc);
      final Observation thisObs=Observation.createObservation("String_Node_Str",new Date(time),obsCoord,null,null,null);
      results.add(InferenceResultRecord.createInferenceResultRecord(thisObs,currentLocBelief,currentPath.getEdges()));
      Logger.info("String_Node_Str" + thisObs);
      vehicleState=new VehicleState(this.inferredGraph,thisObs,vehicleState.getMovementFilter(),currentLocBelief,currentEdgeTrans,currentPathEdge,currentPath,vehicleState);
    }
  }
 catch (  NumberFormatException e) {
    e.printStackTrace();
  }
  return results;
}

Fixed version (ground truth):
public List<InferenceResultRecord> runSimulation(){
  Observation initialObs;
  try {
    initialObs=Observation.createObservation(this.simulationName,startTime,startCoordinates,null,null,null);
    final SnappedEdges initialEdges=Api.getGraph().snapToGraph(null,initialObs.getObsCoords());
    List<InferredEdge> edges=Lists.newArrayList(InferredGraph.getEmptyEdge());
    for (    Edge edge : initialEdges.getSnappedEdges()) {
      edges.add(inferredGraph.getInferredEdge(edge));
    }
    final InferredEdge currentInferredEdge=edges.get(rng.nextInt(edges.size()));
    InferredPath currentPath=new InferredPath(currentInferredEdge);
    PathEdge currentPathEdge=Iterables.getOnlyElement(currentPath.getEdges());
    VehicleState vehicleState=new VehicleState(this.inferredGraph,initialObs,currentInferredEdge);
    Vector thisStateSample=sampleBelief(vehicleState);
    vehicleState.getBelief().setMean(thisStateSample);
    for (long time=startTime.getTime(); time < endTime.getTime(); time+=frequency * 1000) {
      vehicleState.getMovementFilter().setCurrentTimeDiff(frequency);
      final MultivariateGaussian currentLocBelief=vehicleState.getBelief();
      final EdgeTransitionDistributions currentEdgeTrans=vehicleState.getEdgeTransitionDist();
      currentPath=traverseEdge(vehicleState.getEdgeTransitionDist(),currentLocBelief,currentPathEdge,vehicleState.getMovementFilter());
      Vector transStateSample=sampleBelief(vehicleState);
      vehicleState.getBelief().setMean(transStateSample);
      currentPathEdge=Iterables.getLast(currentPath.getEdges());
      Vector thisLoc=sampleObservation(vehicleState);
      Coordinate obsCoord=GeoUtils.convertToLatLon(thisLoc);
      final Observation thisObs=Observation.createObservation("String_Node_Str",new Date(time),obsCoord,null,null,null);
      results.add(InferenceResultRecord.createInferenceResultRecord(thisObs,currentLocBelief,currentPath.getEdges()));
      Logger.info("String_Node_Str" + thisObs);
      vehicleState=new VehicleState(this.inferredGraph,thisObs,vehicleState.getMovementFilter(),currentLocBelief,currentEdgeTrans,currentPathEdge,currentPath,vehicleState);
    }
  }
 catch (  NumberFormatException e) {
    e.printStackTrace();
  }
  return results;
}