Zone Allocation
The record of guide-path space actually held: which holder, which zones, from when until when.
Transient, as an Allocation is, and created by the space rather than by the holder. That is not a stylistic preference: exclusivity can only be guaranteed if nothing outside the space can mint a claim on it, which is why the constructor is internal and why a holder asks rather than takes.
What it is for is the statistics. A zone cannot usefully keep them -- a network has thousands of zones and almost none will ever be held by anything but a vehicle -- so the space keeps four aggregates and this object carries whatever a particular model wants to know about a particular closure. timeHeld and ZoneHoldActionIfc together are how a modeller collects per-closure numbers without the library guessing which closures are worth separating.
Parameters
what was asked for, which is where the holder, the zones and the action come from -- an allocation keeps no second copy of any of them
when the hold began
Properties
Who holds the space.
True once the zone has been given back.
When the hold ended, or NaN while it is still held.
When the space was asked for, which is not when the hold began unless nothing had to drain.
How long the space took to drain: the hold's beginning, less the instant it was asked for.