A time source has a phantom read-write parameter, where write gives permission to call advance and fire_past_alarms.
write
advance
fire_past_alarms
type -'rw t
= 'rw Async_kernel__.Time_source_intf.Time_source.T1.t
include sig ... end
val sexp_of_t : ('rw ‑> Sexplib.Sexp.t) ‑> 'rw t ‑> Sexplib.Sexp.t