package Ġcom . program mers box . fun utils . fun utilities Ċ Ċ import Ġandroid . os . Count Down Timer Ċ Ċ open Ġclass ĠTime d Sequence Maker < T >( sequence : ĠList < T >, Ġprivate Ġval Ġtimeout : ĠLong Ġ= Ġ 5 0 0 0 , Ġsequence Listener : ĠSequence Listener ?) Ġ: ĊĠĠĠ ĠSequence Maker < T >( sequence , Ġsequence Listener ) Ġ{ ĊĠĠĠ Ġconstructor ( var arg Ġsequence : ĠT , Ġtimeout : ĠLong Ġ= Ġ 5 0 0 0 , Ġsequence Listener : ĠSequence Listener ?) Ġ: Ġthis ( sequence . toList (), Ġtimeout , Ġsequence Listener ) ĊĊĠĠĠ Ġprivate Ġval Ġtimeout Timer : ĠCount Down Timer ? Ġ= Ġif Ġ( timeout Ġ<= Ġ 0 ) Ġnull Ġelse Ġobject Ġ: ĠCount Down Timer ( timeout , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish (): ĠUnit Ġ= Ġreset Sequence (). also Ġ{ Ġthis @ Timed Sequence Maker . sequence Listener ?. on Fail () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Item ( item : ĠT ) Ġ= Ġtimeout Timer ?. start (). let Ġ{ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġadd New Item ( item : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtimeout Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġsuper . add New Item ( item ) ĊĠĠĠ Ġ} Ċ }