@ file : Is olated Ċ package Ġtab ool ib . common . util Ċ Ċ import Ġtab ool ib . common . Is olated Ċ import Ġjava . io . Closeable Ċ Ċ fun Ġ< T , ĠC Ġ: ĠIterable < T >, ĠR > ĠC . each ( start : ĠInt Ġ= Ġ- 1 , Ġend : ĠInt Ġ= Ġ- 1 , Ġreversed : ĠBoolean Ġ= Ġfalse , Ġaction : ĠClose able .( index : ĠInt , ĠT ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġval Ġtrigger Ġ= Ġobject Ġ: ĠClose able Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġclosed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclosed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( reversed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġto List (). size ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġreversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġend Ġ&& Ġ( index Ġ<= Ġstart Ġ|| Ġstart Ġ== Ġ- 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trigger . closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġaction ( trigger , Ġindex , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġ!= ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex -- ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġstart Ġ&& Ġ( index Ġ< Ġend Ġ|| Ġend Ġ== Ġ- 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trigger . closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġaction ( trigger , Ġindex , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġ!= ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ }