ReadonlybeginReadonlyendHalf-open interval end. For time keys, equal to begin.
ReadonlykindReadonlylengthRow count.
Returns { begin, end } at row i, or undefined for
out-of-range. Raw POJO; consumers wanting the TimeRange
class use the row-API path.
Direct buffer read: begin[i]. Throws on out-of-range.
Direct buffer read: end[i]. Throws on out-of-range.
Gathers rows by index into a new TimeRangeKeyColumn. See
TimeKeyColumn.sliceByIndices for the out-of-range semantics.
Zero-copy index-range view: returns a TimeRangeKeyColumn over
begin.subarray(s, e) + end.subarray(s, e). Same trusted-
buffer-immutability contract as the source.
Note on max-end: the range-key invariant says begin[i] <= end[i] per row, NOT that end[i] is monotonically increasing.
A long early event can extend past the final row's end. The
slice preserves this — out.end[length - 1] is the end of the
final row in the slice, NOT the maximum end across the slice.
See RFC §4 close-cases for why range-key max-end is deferred.
Half-open interval start in epoch milliseconds.