package Ġcom . col inode ll . ad vent 2 0 2 1 Ċ Ċ fun Ġ< T > ĠIterable < T >. permutation Pairs (): ĠSequence < Pair < T , ĠT >> Ġ= Ġsequence Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġwith Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġwith Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i . index Ġ< Ġj . index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( Pair ( i . value , Ġj . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > ĠSequence < Pair < T , T >> . including Reverse Pairs (): ĠSequence < Pair < T , T >> Ġ= Ġsequence Ġ{ ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġyield ( Pair ( it . first , Ġit . second )) ĊĠĠĠĠĠĠĠ Ġyield ( Pair ( it . second , Ġit . first )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T , R > ĠT ?. if NotNull ( block : Ġ( T ) Ġ-> ĠR ) Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T , R > ĠIterable < T > ?. map If NotNull ( block : Ġ( T ) Ġ-> ĠR ): ĠList < R > Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap ( block ) Ċ } Ċ Ċ suspend Ġfun Ġ< T Ġ: ĠAny > ĠSequence Scope < T >. yield If NotNull ( t : ĠT ?) Ġ= Ġif Ġ( t Ġ!= Ġnull ) Ġyield ( t ) Ġelse ĠUnit Ċ Ċ fun ĠString . replace At ( index : ĠInt , Ġchar : ĠChar ) Ġ= ĊĠĠĠ Ġthis . substring ( 0 , Ġindex ) Ġ+ Ġchar Ġ+ Ġthis . substring ( index Ġ+ Ġ 1 ) Ċ Ċ fun ĠString . replace At ( index : ĠInt , Ġlength : ĠInt , Ġreplacement : ĠString ) Ġ= ĊĠĠĠ Ġthis . substring ( 0 , Ġindex ) Ġ+ Ġreplacement Ġ+ Ġthis . substring ( index Ġ+ Ġlength )