package Ġcom . s ama . common Ċ Ċ import Ġjava . util . Objects Ċ import Ġjava . util . Optional Ċ import Ġjava . util . UUID Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠOptional < T >. to Nullable (): ĠT ? Ġ= Ġthis . orElse ( null ) ĊĊ Ċ fun Ġ< T > ĠMutable List < T >. map Mut ating ( transform : Ġ( T ) Ġ-> ĠT ): ĠMutable List < T > Ġ{ ĊĠĠĠ ĠObjects . requireNonNull ( transform ) ĊĠĠĠ Ġval Ġli : ĠMutable List Iterator < T > Ġ= Ġthis . list Iterator () ĊĠĠĠ Ġwhile Ġ( li . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġli . set ( transform . invoke ( li . next ())) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ fun Ġ< T > ĠMutable List < T >. map Indexed ( transform : Ġ( Int , ĠT ) Ġ-> ĠT ): ĠMutable List < T > Ġ{ ĊĠĠĠ ĠObjects . requireNonNull ( transform ) ĊĠĠĠ Ġval Ġli : ĠMutable List Iterator < T > Ġ= Ġthis . list Iterator () ĊĠĠĠ Ġwhile Ġ( li . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġli . set ( transform . invoke ( li . next Index (), Ġli . next ())) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ fun ĠDouble Array . map Values ( transform : Ġ( Double ) Ġ-> ĠDouble ): ĠDouble Array Ġ{ ĊĠĠĠ ĠObjects . requireNonNull ( transform ) ĊĊĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ index ] Ġ= Ġtransform . invoke ( item ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ fun ĠDouble Array . map Indexed ( transform : Ġ( Int , ĠDouble ) Ġ-> ĠDouble ): ĠDouble Array Ġ{ ĊĠĠĠ ĠObjects . requireNonNull ( transform ) ĊĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( item Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ index ] Ġ= Ġtransform . invoke ( index ++, Ġitem ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis Ċ } ĊĊ Ċ /** Ċ Ġ* ĠReturns Ġa Ġsequence Ġof Ġsnapshots Ġgiven Ġa Ġ[ chunk Cut Off Predicate ] Ġthat Ġdetermines Ġwhere Ġeach Ċ Ġ* Ġchunk Ġends . Ċ Ġ*/ Ċ fun Ġ< T > ĠSequence < T >. chunk edBy ( chunk Cut Off Predicate : Ġ( T , ĠT ) Ġ-> ĠBoolean ): ĠSequence < List < T >> Ġ{ ĊĠĠĠ Ġreturn ĠSequence Ġ{ Ġchunk edBy Iterator ( iterator (), Ġchunk Cut Off Predicate ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġsequence Ġof Ġsnapshots Ġgiven Ġa Ġ[ chunk Cut Off Predicate ] Ġthat Ġdetermines Ġwhere Ġeach Ċ Ġ* Ġchunk Ġends Ġand Ġperform Ġa Ġtransformation Ġon Ġthe Ġresult Ġchunks . Ċ Ġ*/ Ċ fun Ġ< T , ĠR > ĠSequence < T >. chunk edBy ( chunk Cut Off Predicate : Ġ( T , ĠT ) Ġ-> ĠBoolean , Ġtransform : Ġ( Int , ĠList < T >) Ġ-> ĠR ): ĠSequence < R > Ġ{ ĊĠĠĠ Ġreturn ĠSequence Ġ{ Ġchunk edBy Iterator ( iterator (), Ġchunk Cut Off Predicate ) Ġ}. map Indexed ( transform ) Ċ } Ċ Ċ fun Ġ< T > Ġchunk edBy Iterator ( ĊĠĠĠ Ġiterator : ĠIterator < T >, ĊĠĠĠ Ġchunk Cut Off Predicate : Ġ( T , ĠT ) Ġ-> ĠBoolean , Ċ ): ĠIterator < List < T >> Ġ{ ĊĠĠĠ Ġreturn Ġiterator < List < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Initial Capacity Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġvar Ġbuffer Ġ= ĠArrayList < T >( buffer Initial Capacity ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġiterator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffer . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcut Off Ġ= Ġchunk Cut Off Predicate . invoke ( buffer . last (), Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cut Off ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= ĠArrayList ( buffer Initial Capacity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( buffer . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( buffer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . uuid (): ĠUUID Ġ= ĠUUID . fromString ( this )