"Property testing" is heavily used, tests that generates random cases and asserting properties.
That gives high confidence of round-trip correctness of `SliderPath` conversion, for example.
A `JuiceStream` holds a legacy `SliderPath` as the representation of the path.
However, the `SliderPath` representation is difficult to work with because `SliderPath` works in 2D position, while osu!catch works in `(time, x)` coordinates.
This `JuiceStreamPath` represents the path in a more convenient way, a polyline connecting list of `(distance, x)` vertices.
As we don't have a `RankInfo.F`, this is the next best choice. I am also
adding a check osu-web side for this - this is just to make sure we
aren't sending scores with SS when they are not actually completed.
I'm working on a separate PR to ensure this does not get mutated during
the player exit process.
As discussed in https://github.com/ppy/osu/issues/13864, Squirrel will
use the product name before the title, allowing us to use this variable
to update the icon while not changing the window display title or naming
elsewhere.