try Hold Zones For
fun tryHoldZonesFor(holder: ZoneHolderIfc, zones: List<Zone>, duration: Double, action: ZoneHoldActionIfc): ZoneRequest?(source)
Takes a set of zones for a stated duration, and answers null when some zone of it is already promised.
tryRequestZones for why this exists and what null means, holdZoneFor for why the duration runs from the instant the hold begins rather than from the request.
Return
the request, or null when some zone of the set is already promised to another holder
Parameters
holder
who is taking the space
zones
the zones to take, all on this guide path, distinct, at least one
duration
how long to hold them once the hold begins, strictly positive
action
told when the hold begins and when the clock gives it back