while (true) {
visitedVertices.add(currentVertex);
final Set<ReadSegmentCost> finishingAtElementCostSet = costsEndingByVertex.get(currentVertex);
updateReadCosts(readCostByRead, visitedVertices, pathSoFar, finishingAtElementCostSet);
if (!edgeIterator.hasNext()) break;
final MultiSampleEdge nextEdge = edgeIterator.next();
pathSoFar = new Route<>(pathSoFar, nextEdge);
currentVertex = pathSoFar.getLastVertex();
}
int readIndex = 0;