Shape returned by TimeRangeKeyColumn.at(i) — a POJO with both
endpoints. POJO (not a class instance) keeps the column-API in
the substrate idiom of raw values; consumers that want the
TimeRange wrapper can reach it via the row-API path
(series.events[i].key). The readonly modifiers are compile-
time only — the returned object is not Object.freeze'd at
runtime. Treat as read-only by convention (same discipline as
the substrate's typed-array .values / .begin / .end).
Shape returned by
TimeRangeKeyColumn.at(i)— a POJO with both endpoints. POJO (not a class instance) keeps the column-API in the substrate idiom of raw values; consumers that want theTimeRangewrapper can reach it via the row-API path (series.events[i].key). Thereadonlymodifiers are compile- time only — the returned object is notObject.freeze'd at runtime. Treat as read-only by convention (same discipline as the substrate's typed-array.values/.begin/.end).