A 1D range. Internally represented as start and end. (as opposed to a start and length)
If range A contains value x and range B contains value x, then A intersects B.
There is no protection against “degenerate” Ranges where start>end.
The underlying number type used for the tree.
It is auto implemented by all types that satisfy the type constraints.
Notice that no arithmetic is possible. The tree is constructed
using only comparisons and copying.
When we traverse the tree in read-only mode, we can simply return a reference to each node.
We don’t need to protect the user from only mutating parts of the BBox’s since they can’t
change anything.