public InsertionData calculateBestInsertion(Job job, double bestKnownPrice) {
   Vehicle selectedVehicle = vehicleRoute.getVehicle();
   Driver selectedDriver = vehicleRoute.getDriver();
   InsertionData bestIData = new NoInsertionFound();
   double bestKnownCost = bestKnownPrice;
   Vehicle bestVehicle = vehicleRoute.getVehicle();
   if (!(selectedVehicle instanceof NoVehicle)) {
     bestIData =
         insertionCostCalculator.calculate(
             vehicleRoute, job, selectedVehicle, selectedDriver, bestKnownCost);
     if (!(bestIData instanceof NoInsertionFound)) {
       bestVehicle = vehicleRoute.getVehicle();
       if (bestIData.getInsertionCost() < bestKnownCost) {
         bestKnownCost = bestIData.getInsertionCost();
       }
     }
   }
   for (String type : vehicleFleetManager.getAvailableVehicleTypes()) {
     if (!(vehicleRoute.getVehicle() instanceof NoVehicle)) {
       if (type.equals(vehicleRoute.getVehicle().getType().typeId)) {
         continue;
       }
     }
     Vehicle v = vehicleFleetManager.getEmptyVehicle(type);
     InsertionData iData =
         insertionCostCalculator.calculate(vehicleRoute, job, v, selectedDriver, bestKnownCost);
     if (iData.getInsertionCost() < bestKnownCost) {
       if (vehicleRoute.getTour().getLoad() + job.getCapacityDemand() > v.getCapacity())
         throw new IllegalStateException("this must not be");
       bestIData = iData;
       bestVehicle = v;
       bestKnownCost = iData.getInsertionCost();
     }
   }
   bestIData.setVehicle(bestVehicle);
   return bestIData;
 }