// Observation: resolved local fields for a (zone, instant) pair. The
// canonical return value of every tzdata lookup; cached on ZonedDateTime
// so accessors read from it directly rather than re-querying tzdata.
// Consumers rarely see it directly — they go through ZonedDateTime.
class val Observation
"""
Resolved local fields for a `(zone, instant)` pair: local date and
time-of-day, offset from UTC, zone abbreviation, and DST flag.
Produced by every `_TzData.observation_at(...)` call and cached on
`ZonedDateTime` so its accessors don't re-query tzdata. The shape was
chosen to match what `zdump` emits per transition record, which makes
it convenient as the comparison surface in our differential tests
against `zdump`.
"""
let _local_date: Date val
let _local_tod: TimeOfDay val
let _offset_sec: I32
let _abbreviation: String val
let _is_dst: Bool
new val create(
local_date': Date val,
local_tod': TimeOfDay val,
offset_sec': I32,
abbreviation': String val,
is_dst': Bool)
=>
_local_date = local_date'
_local_tod = local_tod'
_offset_sec = offset_sec'
_abbreviation = abbreviation'
_is_dst = is_dst'
fun val local_date(): Date val => _local_date
fun val local_tod(): TimeOfDay val => _local_tod
fun val offset_sec(): I32 => _offset_sec
fun val abbreviation(): String val => _abbreviation
fun val is_dst(): Bool => _is_dst