Program: 189478
Project: 189478
Buggy source:
@Override public Set<InferredPath> getPaths(final VehicleState fromState,final Coordinate toCoord){
  InferredEdge currentEdge=fromState.getBelief().getEdge().getInferredEdge();
  Set<InferredEdge> startEdges=Sets.newHashSet();
  if (!currentEdge.isNullEdge()) {
    startEdges.add(currentEdge);
  }
 else {
    final MultivariateGaussian obsBelief=fromState.getMovementFilter().getObservationBelief(fromState.getBelief());
    final double beliefDistance=Math.min(StatisticsUtil.getLargeNormalCovRadius((DenseMatrix)obsBelief.getCovariance()),MAX_STATE_SNAP_RADIUS);
    startEdges.addAll(getNearbyEdges(fromState.getBelief().getGroundState(),beliefDistance));
  }
  final Set<InferredEdge> endEdges=Sets.newHashSet();
  final double obsStdDevDistance=Math.min(StatisticsUtil.getLargeNormalCovRadius((DenseMatrix)fromState.getMovementFilter().getObsCovar()),MAX_OBS_SNAP_RADIUS);
  double maxEndEdgeLength=Double.NEGATIVE_INFINITY;
  for (  final InferredEdge edge : getNearbyEdges(toCoord,obsStdDevDistance)) {
    if (edge.getLength() > maxEndEdgeLength)     maxEndEdgeLength=edge.getLength();
    endEdges.add(edge);
  }
  Set<InferredPath> paths=Sets.newHashSet();
  paths.add(getNullPath());
  if (endEdges.isEmpty())   return paths;
  for (  InferredEdge startEdge : startEdges) {
    for (    InferredEdge endEdge : endEdges) {
      final Node source=((DirectedEdge)startEdge.getBackingEdge()).getInNode();
      final Node target=((DirectedEdge)endEdge.getBackingEdge()).getOutNode();
      AStarFunctions afuncs=new VehicleStateAStarFunction(target,toCoord,obsStdDevDistance);
      AStarShortestPathFinder aStarIter=new AStarShortestPathFinder(this.graphGenerator.getGraph(),source,target,afuncs);
      aStarIter.calculate();
      try {
        Path path=aStarIter.getPath();
        final boolean isBackward=false;
        List<PathEdge> pathEdges=Lists.newArrayList();
        double distToStart=0d;
        for (        Object edgeObj : path.getEdges()) {
          Edge edge=(Edge)edgeObj;
          InferredEdge infEdge=getInferredEdge(edge);
          pathEdges.add(getPathEdge(infEdge,distToStart,isBackward));
          distToStart+=isBackward ? -infEdge.getLength() : infEdge.getLength();
        }
        paths.add(getInferredPath(pathEdges,isBackward));
      }
 catch (      Exception e) {
      }
    }
  }
  return paths;
}

Fixed version (ground truth):
@Override public Set<InferredPath> getPaths(final VehicleState fromState,final Coordinate toCoord){
  InferredEdge currentEdge=fromState.getBelief().getEdge().getInferredEdge();
  Set<InferredEdge> startEdges=Sets.newHashSet();
  if (!currentEdge.isNullEdge()) {
    startEdges.add(currentEdge);
  }
 else {
    final MultivariateGaussian obsBelief=fromState.getMovementFilter().getObservationBelief(fromState.getBelief());
    final double beliefDistance=Math.min(StatisticsUtil.getLargeNormalCovRadius((DenseMatrix)obsBelief.getCovariance()),MAX_STATE_SNAP_RADIUS);
    startEdges.addAll(getNearbyEdges(fromState.getBelief().getGroundState(),beliefDistance));
  }
  final Set<InferredEdge> endEdges=Sets.newHashSet();
  final double obsStdDevDistance=Math.min(StatisticsUtil.getLargeNormalCovRadius((DenseMatrix)fromState.getMovementFilter().getObsCovar()),MAX_OBS_SNAP_RADIUS);
  double maxEndEdgeLength=Double.NEGATIVE_INFINITY;
  for (  final InferredEdge edge : getNearbyEdges(toCoord,obsStdDevDistance)) {
    if (edge.getLength() > maxEndEdgeLength)     maxEndEdgeLength=edge.getLength();
    endEdges.add(edge);
  }
  Set<InferredPath> paths=Sets.newHashSet();
  paths.add(getNullPath());
  if (endEdges.isEmpty())   return paths;
  for (  InferredEdge startEdge : startEdges) {
    for (    InferredEdge endEdge : endEdges) {
      final Node source=((DirectedEdge)startEdge.getBackingEdge()).getInNode();
      final Node target=((DirectedEdge)endEdge.getBackingEdge()).getOutNode();
      AStarFunctions afuncs=new VehicleStateAStarFunction(target,toCoord,obsStdDevDistance);
      AStarShortestPathFinder aStarIter=new AStarShortestPathFinder(this.graphGenerator.getGraph(),source,target,afuncs);
      aStarIter.calculate();
      try {
        Path path=aStarIter.getPath();
        final boolean isBackward=false;
        List<PathEdge> pathEdges=Lists.newArrayList();
        double distToStart=0d;
        for (        Object edgeObj : path.getEdges()) {
          Edge edge=(Edge)edgeObj;
          InferredEdge infEdge=getInferredEdge(edge);
          pathEdges.add(getPathEdge(infEdge,distToStart,isBackward));
          distToStart+=isBackward ? -infEdge.getLength() : infEdge.getLength();
        }
        if (!pathEdges.isEmpty())         paths.add(getInferredPath(pathEdges,isBackward));
      }
 catch (      Exception e) {
        log.warn("String_Node_Str" + e);
      }
    }
  }
  return paths;
}