package Ġfunc ify . feature . naming . char seq . factory ĊĊ Ċ import Ġfunc ify . feature . naming . char seq . context . CharSequence Stream Op Context Ċ import Ġfunc ify . feature . naming . char seq . extension . CharSequence Extensions . stream Ċ import Ġfunc ify . feature . naming . function . Function Extensions . and Then Ċ import Ġkotlinx . collections . immutable . ImmutableList Ċ import Ġkotlinx . collections . immutable . persistent ListOf Ċ import Ġjava . util . stream . Stream Ċ Ċ internal Ġclass ĠCharSequence Stream Op Function Factory < I Ġ: ĠAny > Ġ: Ġ( CharSequence Stream Op Context < I >) Ġ-> Ġ( I ) Ġ-> ĠImmutableList < String > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ INSTANCE : ĠCharSequence Stream Op Function Factory < Any > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCharSequence Stream Op Function Factory < Any >() ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< I Ġ: ĠAny > ĠgetInstance (): ĠCharSequence Stream Op Function Factory < I > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDEFAULT _ INSTANCE Ġas ĠCharSequence Stream Op Function Factory < I > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( stream Op Context : ĠCharSequence Stream Op Context < I >): Ġ( I ) Ġ-> ĠImmutableList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Mapper Function : Ġ( Stream < Char >) Ġ-> ĠStream < Char > Ġ= Ġcompose Character Mapping Function ( stream Op Context ) ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Sequence Mapper Function : Ġ( Stream < CharSequence >) Ġ-> ĠStream < CharSequence > Ġ= Ġcompose Character Sequence Mapping Function ( stream Op Context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġinput : ĠI Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Sequence Mapper Function . invoke ( stream Op Context . input To CharSequence Transformer . invoke ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Mapper Function . invoke ( cs . stream ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠ Ġ. reduce ( StringBuilder (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġsb , Ġc Ġ-> Ġsb . append ( c ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġsb 1 , Ġsb 2 Ġ-> Ġsb 1 . append ( sb 2 ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce ( persistent ListOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpl , Ġcs Ġ-> Ġpl . add ( cs . toString ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpl 1 , Ġpl 2 Ġ-> Ġpl 1 . addAll ( pl 2 ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompose Character Mapping Function ( stream Op Context : ĠCharSequence Stream Op Context < I >): Ġ( Stream < Char >) Ġ-> ĠStream < Char > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstream Op Context . character Map Operations . fold ({ Ġc Stream : ĠStream < Char > Ġ-> Ġc Stream Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfunc , Ġop Ġ-> Ġfunc . and Then ( op ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompose Character Sequence Mapping Function ( stream Op Context : ĠCharSequence Stream Op Context < I >): Ġ( Stream < CharSequence >) Ġ-> ĠStream < CharSequence > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstream Op Context . segment Map Operations . fold ({ Ġcs Stream : ĠStream < CharSequence > Ġ-> Ġcs Stream Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfunc , Ġop Ġ-> Ġfunc . and Then ( op ) Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }