Optional: the box, in the coordinates hitTest receives, outside which it
answers null, or null when nothing of this primitive can be hit at all.
Edges are inclusive, and an unbounded side may be infinite.
A pointer move then asks hitTest only of primitives whose box it is in,
so a pane carrying hundreds of them pays for the few near the pointer.
The pane asks for the box once and reuses it while nothing it can follow
changes: the time scale and the bars' times, the pane's price scales, its
size and axes, the pixel ratio, the hover and drag state, and the
primitive's own state, which it announces through requestUpdate. A box
that follows anything else, such as bar prices, has to request an update
when that changes, or leave this out. Work the box out from the same
geometry hitTest answers from, rc or what the last draw recorded: a
box asked for between a change and the frame that paints it is asked for
again once that frame is painted. Absent, every pointer move asks
hitTest.
A wash has no price and never widens the range.