package Ġcom . netflix . spin n aker . time Ċ Ċ import Ġjava . time . Clock Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . temporal . Temporal Amount Ċ Ċ class ĠMutable Clock ( ĊĠ Ġprivate Ġvar Ġinstant : ĠInstant Ġ= ĠInstant . now (), ĊĠ Ġprivate Ġval Ġzone : ĠZone Id Ġ= ĠZone Id . of (" UTC "), ĊĠ Ġval Ġstart : ĠInstant Ġ= Ġinstant Ċ ) Ġ: ĠClock () Ġ{ ĊĊĠ Ġoverride Ġfun Ġwith Zone ( zone : ĠZone Id ): ĠMutable Clock Ġ{ ĊĠĠĠ Ġreturn ĠMutable Clock ( instant , Ġzone ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Zone (): ĠZone Id Ġ{ ĊĠĠĠ Ġreturn Ġzone ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġinstant (): ĠInstant Ġ{ ĊĠĠĠ Ġreturn Ġinstant ĊĠ Ġ} ĊĊĠ Ġfun Ġincrement By ( amount : ĠTemp oral Amount ) Ġ{ ĊĠĠĠ Ġinstant Ġ= Ġinstant . plus ( amount ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtick Seconds ( seconds : ĠLong ) Ġ= Ġincrement By ( Duration . of Seconds ( seconds )). let Ġ{ Ġinstant Ġ} ĊĊĠ Ġfun Ġtick Minutes ( minutes : ĠLong ) Ġ= Ġincrement By ( Duration . of Minutes ( minutes )). let Ġ{ Ġinstant Ġ} ĊĊĠ Ġfun Ġtick Hours ( hours : ĠLong ) Ġ= Ġincrement By ( Duration . of Hours ( hours )). let Ġ{ Ġinstant Ġ} ĊĊĠ Ġfun Ġinstant ( new Instant : ĠInstant ) Ġ{ ĊĠĠĠ Ġinstant Ġ= Ġnew Instant ĊĠ Ġ} ĊĊĠ Ġfun Ġreset () Ġ{ ĊĠĠĠ Ġinstant Ġ= Ġstart ĊĠ Ġ} Ċ } Ċ