docs: public void putInvalidHaltsOnRoads(BusItineraryHalt... restrictionList) {
  		// CAUTION: The connections must be buffered to avoid ConcurrentModificationException on this.invalidHalts
  		final List<Triplet<BusItineraryHalt, Integer, Double>> connectableHalts = new ArrayList<>();
  
  		for (final BusItineraryHalt halt : this.invalidHalts) {
  			final BusStop stop = halt.getBusStop();
  			if (stop != null && (restrictionList == null || restrictionList.length == 0
  					|| ArrayUtil.contains(halt, restrictionList))) {
  				final Point2d position = stop.getPosition2D();
  				if (position != null) {
  					RoadSegment nearestSegment = null;
  					double smallerDistance = Double.POSITIVE_INFINITY;
  					int nearestSegmentIndex = -1;
  					for (int i = 0; i < this.roadSegments.getRoadSegmentCount(); ++i) {
  						final RoadSegment segment = this.roadSegments.getRoadSegmentAt(i);
  						assert segment != null;
  						final double distance = segment.distance(position);
  						if (distance < smallerDistance) {
  							smallerDistance = distance;
  							nearestSegment = segment;
  							nearestSegmentIndex = i;
  						}
  					}
  					if (nearestSegment != null) {
  						final Point1d pos = nearestSegment.getNearestPosition(position);
  						if (pos != null) {
  							assert nearestSegmentIndex >= 0;
  							connectableHalts.add(new Triplet<>(
  									halt,
  									Integer.valueOf(nearestSegmentIndex),
  									Double.valueOf(pos.getCurvilineCoordinate())));
  						}
  					}
  				}
  			}
  		}
  
  		BusItineraryHalt halt;
  		boolean shapeChanged = false;
  
  		for (final Triplet<BusItineraryHalt, Integer, Double> triplet : connectableHalts) {
  			halt = triplet.getA();
  			halt.setRoadSegmentIndex(triplet.getB().intValue());
  			halt.setPositionOnSegment(triplet.getC().doubleValue());
  			halt.checkPrimitiveValidity();
  			shapeChanged = true;
  		}
  
  		if (shapeChanged) {
  			fireShapeChanged(new BusChangeEvent(this,
  					BusChangeEventType.ITINERARY_CHANGED,
  					null,
  					-1,
  					"shape", //$NON-NLS-1$
  					null,
  					null));
  		}
  
  		checkPrimitiveValidity();
  	}