Program: 35394
Project: 35394
Buggy source:
@Override public boolean accept(EdgeIteratorState iter){
  if (out && iter.isForward(encoder) || in && iter.isBackward(encoder)) {
    int edgeId=iter.getOriginalEdge();
    int vt=gsHeavyVehicles.getEdgeVehicleType(edgeId,buffer);
    boolean dstFlag=buffer[1] != 0;
    if (vt != HeavyVehicleAttributes.UNKNOWN) {
      if (mode == MODE_CLOSEST_EDGE) {
        boolean edgeRestricted=((vt & vehicleType) == vehicleType);
        if ((edgeRestricted || dstFlag) && (byte)buffer[1] != vehicleType)         return false;
      }
 else       if (mode == MODE_DESTINATION_EDGES) {
        return dstFlag && ((vt & vehicleType) == vehicleType);
      }
 else {
        if (dstFlag) {
          if ((vt & vehicleType) == vehicleType) {
            if (destinationEdges != null) {
              if (!destinationEdges.contains(edgeId))               return false;
            }
 else             return false;
          }
 else           return false;
        }
 else         if ((vt & vehicleType) == vehicleType)         return false;
      }
    }
 else {
      if (mode == MODE_DESTINATION_EDGES) {
        return false;
      }
    }
    if (hasHazmat) {
      if ((vt & HeavyVehicleAttributes.HAZMAT) != 0) {
        return false;
      }
    }
    if (restCount != 0) {
      if (restCount == 1) {
        double value=gsHeavyVehicles.getEdgeRestrictionValue(edgeId,indexValues[0],buffer);
        if (value > 0 && value < restrictionValues[0])         return false;
 else         return true;
      }
 else {
        if (gsHeavyVehicles.getEdgeRestrictionValues(edgeId,buffer,retValues)) {
          double value=retValues[0];
          if (value > 0.0f && value < restrictionValues[0])           return false;
          value=retValues[1];
          if (value > 0.0f && value < restrictionValues[1])           return false;
          if (restCount >= 3) {
            value=retValues[2];
            if (value > 0.0f && value < restrictionValues[2])             return false;
          }
          if (restCount >= 4) {
            value=retValues[3];
            if (value > 0.0f && value < restrictionValues[3])             return false;
          }
          if (restCount == 5) {
            value=retValues[4];
            if (value > 0.0f && value < restrictionValues[4])             return false;
          }
        }
      }
    }
    return true;
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean accept(EdgeIteratorState iter){
  if (out && iter.isForward(encoder) || in && iter.isBackward(encoder)) {
    int edgeId=iter.getOriginalEdge();
    int vt=gsHeavyVehicles.getEdgeVehicleType(edgeId,buffer);
    boolean dstFlag=buffer[1] != 0;
    if (vt != HeavyVehicleAttributes.UNKNOWN) {
      if (mode == MODE_CLOSEST_EDGE) {
        boolean edgeRestricted=((vt & vehicleType) == vehicleType);
        if ((edgeRestricted || dstFlag) && (byte)buffer[1] != vehicleType)         return false;
      }
 else       if (mode == MODE_DESTINATION_EDGES) {
        return dstFlag && ((vt & vehicleType) == vehicleType);
      }
 else {
        if (dstFlag) {
          if ((vt & vehicleType) == vehicleType) {
            if (destinationEdges != null) {
              if (!destinationEdges.contains(edgeId))               return false;
            }
 else             return false;
          }
 else           return false;
        }
 else         if ((vt & vehicleType) == vehicleType)         return false;
      }
    }
 else {
      if (mode == MODE_DESTINATION_EDGES) {
        return false;
      }
    }
    if (hasHazmat) {
      if ((vt & HeavyVehicleAttributes.HAZMAT) != 0) {
        return false;
      }
    }
    if (restCount != 0) {
      if (restCount == 1) {
        double value=gsHeavyVehicles.getEdgeRestrictionValue(edgeId,indexValues[0],buffer);
        if (value > 0 && value < restrictionValues[indexLocs[0]])         return false;
 else         return true;
      }
 else {
        if (gsHeavyVehicles.getEdgeRestrictionValues(edgeId,buffer,retValues)) {
          for (int i=0; i < restCount; i++) {
            double value=retValues[indexLocs[i]];
            if (value > 0.0f && value < restrictionValues[indexLocs[i]]) {
              return false;
            }
          }
        }
      }
    }
    return true;
  }
  return false;
}