docs: public RoadPath solve(Point2D<?, ?> startPoint, Point2D<?, ?> endPoint, RoadNetwork network) {
  		assert network != null && startPoint != null && endPoint != null;
  		final RoadSegment startSegment = network.getNearestSegment(startPoint);
  		if (startSegment != null) {
  			final RoadSegment endSegment = network.getNearestSegment(endPoint);
  			if (endSegment != null) {
  				final VirtualPoint start = new VirtualPoint(startPoint, startSegment);
  				final VirtualPoint end = new VirtualPoint(endPoint, endSegment);
  				return solve(start, end);
  			}
  		}
  		return null;
  	}