Source:
private void propagateTransit (int targetIndex, LinkedPointSet linkedTargets) { EgressCostTable egressCostTable = linkedTargets.getEgressCostTable(); TIntIntMap pointToStopLinkageCostTable = egressCostTable.getCostTableForPoint(targetIndex); StreetRouter.State.RoutingVariable unit = egressCostTable.linkageCostUnit; int speedMillimetersPerSecond = (int) (request.getSpeedForMode(linkedTargets.streetMode) * MM_PER_METER); int egressLegTimeLimitSeconds = request.getMaxTimeSeconds(linkedTargets.streetMode); if (pointToStopLinkageCostTable != null) { pointToStopLinkageCostTable.forEachEntry((stop, linkageCost) -> { int secondsFromStopToTarget; if (unit == StreetRouter.State.RoutingVariable.DISTANCE_MILLIMETERS) { secondsFromStopToTarget = linkageCost / speedMillimetersPerSecond; } else if (unit == StreetRouter.State.RoutingVariable.DURATION_SECONDS) { secondsFromStopToTarget = linkageCost; } else { throw new UnsupportedOperationException("Linkage costs have an unknown unit."); } if (secondsFromStopToTarget < egressLegTimeLimitSeconds){ for (int iteration = 0; iteration < nIterations; iteration++) { int timeToReachStop = travelTimesToStop[stop][iteration]; if (timeToReachStop >= maxTravelTimeSeconds || timeToReachStop >= perIterationTravelTimes[iteration]) { continue; } if (egressCostTable.egressStopDelaysSeconds != null) { int delayAtEgress = egressCostTable.egressStopDelaysSeconds[stop]; if (delayAtEgress < 0) { return true; } else { secondsFromStopToTarget += delayAtEgress; } } int timeToReachTarget = timeToReachStop + secondsFromStopToTarget; if (timeToReachTarget < maxTravelTimeSeconds && timeToReachTarget < perIterationTravelTimes[iteration]) { perIterationTravelTimes[iteration] = timeToReachTarget; if (calculateComponents) { Path[] pathsToStops = pathsToStopsForIteration.get(iteration); perIterationPaths[iteration] = pathsToStops[stop]; } } } } return true; }); } }

Target:
private void propagateTransit (int targetIndex, LinkedPointSet linkedTargets) { EgressCostTable egressCostTable = linkedTargets.getEgressCostTable(); TIntIntMap pointToStopLinkageCostTable = egressCostTable.getCostTableForPoint(targetIndex); StreetRouter.State.RoutingVariable unit = egressCostTable.linkageCostUnit; int speedMillimetersPerSecond = (int) (request.getSpeedForMode(linkedTargets.streetMode) * MM_PER_METER); int egressLegTimeLimitSeconds = request.getMaxTimeSeconds(linkedTargets.streetMode); if (pointToStopLinkageCostTable != null) { pointToStopLinkageCostTable.forEachEntry((stop, linkageCost) -> { int secondsFromStopToTarget; if (unit == StreetRouter.State.RoutingVariable.DISTANCE_MILLIMETERS) { secondsFromStopToTarget = linkageCost / speedMillimetersPerSecond; } else if (unit == StreetRouter.State.RoutingVariable.DURATION_SECONDS) { secondsFromStopToTarget = linkageCost; } else { throw new UnsupportedOperationException("Linkage costs have an unknown unit."); } if (secondsFromStopToTarget < egressLegTimeLimitSeconds){ if (egressCostTable.egressStopDelaysSeconds != null) { int delayAtEgress = egressCostTable.egressStopDelaysSeconds[stop]; if (delayAtEgress < 0) { return true; } else { secondsFromStopToTarget += delayAtEgress; } } for (int iteration = 0; iteration < nIterations; iteration++) { int timeToReachStop = travelTimesToStop[stop][iteration]; if (timeToReachStop >= maxTravelTimeSeconds || timeToReachStop >= perIterationTravelTimes[iteration]) { continue; } int timeToReachTarget = timeToReachStop + secondsFromStopToTarget; if (timeToReachTarget < maxTravelTimeSeconds && timeToReachTarget < perIterationTravelTimes[iteration]) { perIterationTravelTimes[iteration] = timeToReachTarget; if (calculateComponents) { Path[] pathsToStops = pathsToStopsForIteration.get(iteration); perIterationPaths[iteration] = pathsToStops[stop]; } } } } return true; }); } }