Developed to power Conveyal's web-based interface for scenario planning and land-use/transport accessibility analysis, R5 is our routing engine for multimodal (transit/bike/walk/car) networks with a particular focus on public transit
Noting here that the final commit is a workaround for a weird detail of Java: strangely it's possible to read the value of an uninitialized final variable in a constructor and this is not considered an error. This would often fail fast for null references but not for primitives - their final values are not actually final. Java also disallows setting such final fields before calling the superclass constructor. We may be able to reorder some initialization to lessen this effect but for now we're just leaving the dual threshold out of the column headers.
I just discovered that the problem described above is the subject of a change introduced in Java 22:
https://openjdk.org/jeps/447 "statements before super()"
Noting here that the final commit is a workaround for a weird detail of Java: strangely it's possible to read the value of an uninitialized final variable in a constructor and this is not considered an error. This would often fail fast for null references but not for primitives - their final values are not actually final. Java also disallows setting such final fields before calling the superclass constructor. We may be able to reorder some initialization to lessen this effect but for now we're just leaving the dual threshold out of the column headers.