Program: 94987
Project: 94987
Buggy source:
@Override public List<Coord2D> getPathPoints(){
  if (mMissionItems.isEmpty()) {
    return Collections.emptyList();
  }
  final List<Pair<Boolean,List<MissionItemProxy>>> bucketsList=new ArrayList<Pair<Boolean,List<MissionItemProxy>>>();
  boolean isSpline=false;
  List<MissionItemProxy> currentBucket=new ArrayList<MissionItemProxy>();
  for (  MissionItemProxy missionItemProxy : mMissionItems) {
    if (missionItemProxy.getMissionItem() instanceof SplineWaypoint) {
      if (!isSpline) {
        if (!currentBucket.isEmpty()) {
          final MissionItemProxy lastItem=currentBucket.get(currentBucket.size() - 1);
          bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(Boolean.FALSE,currentBucket));
          currentBucket=new ArrayList<MissionItemProxy>();
          currentBucket.add(lastItem);
        }
        isSpline=true;
      }
      currentBucket.add(missionItemProxy);
    }
 else {
      if (isSpline) {
        if (!currentBucket.isEmpty()) {
          currentBucket.add(missionItemProxy);
          bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(Boolean.TRUE,currentBucket));
          currentBucket=new ArrayList<MissionItemProxy>();
        }
        isSpline=false;
      }
      currentBucket.add(missionItemProxy);
    }
  }
  bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(isSpline,currentBucket));
  final List<Coord2D> pathPoints=new ArrayList<Coord2D>();
  Coord2D lastPoint=null;
  for (  Pair<Boolean,List<MissionItemProxy>> bucketEntry : bucketsList) {
    final List<MissionItemProxy> bucket=bucketEntry.second;
    if (bucketEntry.first) {
      final List<Coord2D> splinePoints=new ArrayList<Coord2D>();
      for (      MissionItemProxy missionItemProxy : bucket) {
        splinePoints.addAll(missionItemProxy.getPath(lastPoint));
        if (!splinePoints.isEmpty()) {
          lastPoint=splinePoints.get(splinePoints.size() - 1);
        }
      }
      pathPoints.addAll(SplinePath.process(splinePoints));
    }
 else {
      for (      MissionItemProxy missionItemProxy : bucket) {
        pathPoints.addAll(missionItemProxy.getPath(lastPoint));
        if (!pathPoints.isEmpty()) {
          lastPoint=pathPoints.get(pathPoints.size() - 1);
        }
      }
    }
  }
  return pathPoints;
}

Fixed version (ground truth):
@Override public List<Coord2D> getPathPoints(){
  if (mMissionItems.isEmpty()) {
    return Collections.emptyList();
  }
  final List<Pair<Boolean,List<MissionItemProxy>>> bucketsList=new ArrayList<Pair<Boolean,List<MissionItemProxy>>>();
  boolean isSpline=false;
  List<MissionItemProxy> currentBucket=new ArrayList<MissionItemProxy>();
  for (  MissionItemProxy missionItemProxy : mMissionItems) {
    MissionItem missionItem=missionItemProxy.getMissionItem();
    if (missionItem instanceof MissionCMD) {
      continue;
    }
    if (missionItemProxy.getMissionItem() instanceof SplineWaypoint) {
      if (!isSpline) {
        if (!currentBucket.isEmpty()) {
          final MissionItemProxy lastItem=currentBucket.get(currentBucket.size() - 1);
          bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(Boolean.FALSE,currentBucket));
          currentBucket=new ArrayList<MissionItemProxy>();
          currentBucket.add(lastItem);
        }
        isSpline=true;
      }
      currentBucket.add(missionItemProxy);
    }
 else {
      if (isSpline) {
        if (!currentBucket.isEmpty()) {
          currentBucket.add(missionItemProxy);
          bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(Boolean.TRUE,currentBucket));
          currentBucket=new ArrayList<MissionItemProxy>();
        }
        isSpline=false;
      }
      currentBucket.add(missionItemProxy);
    }
  }
  bucketsList.add(new Pair<Boolean,List<MissionItemProxy>>(isSpline,currentBucket));
  final List<Coord2D> pathPoints=new ArrayList<Coord2D>();
  Coord2D lastPoint=null;
  for (  Pair<Boolean,List<MissionItemProxy>> bucketEntry : bucketsList) {
    final List<MissionItemProxy> bucket=bucketEntry.second;
    if (bucketEntry.first) {
      final List<Coord2D> splinePoints=new ArrayList<Coord2D>();
      for (      MissionItemProxy missionItemProxy : bucket) {
        splinePoints.addAll(missionItemProxy.getPath(lastPoint));
        if (!splinePoints.isEmpty()) {
          lastPoint=splinePoints.get(splinePoints.size() - 1);
        }
      }
      pathPoints.addAll(SplinePath.process(splinePoints));
    }
 else {
      for (      MissionItemProxy missionItemProxy : bucket) {
        pathPoints.addAll(missionItemProxy.getPath(lastPoint));
        if (!pathPoints.isEmpty()) {
          lastPoint=pathPoints.get(pathPoints.size() - 1);
        }
      }
    }
  }
  return pathPoints;
}