package Ġio . in ap in ch . pipeline . operations Ċ Ċ import Ġio . in ap in ch . pipeline . Combin ations Handler Ċ import Ġjava . util . stream . Collectors Ċ Ċ data Ġclass ĠGroup ( val Ġcount : ĠInt ) Ġ: ĠOperation < Any , ĠAny > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( input : ĠAny ): ĠAny Ġ= Ġinput Ċ } Ċ Ċ data Ġclass ĠSkip ( val Ġcount : ĠInt ) Ġ: ĠOperation < Any , ĠAny > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( input : ĠAny ): ĠAny Ġ= Ġinput Ċ } Ċ Ċ data Ġclass ĠObject ( val Ġkeys : ĠList < String > Ġ= ĠlistOf ()) Ġ: ĠFunctional Operation < List < Any >, ĠMap < String , ĠAny >> ({ ĊĠĠĠ Ġkeys . zip ( it ). toMap () Ċ }) Ċ Ċ data Ġclass ĠEntry ( val Ġkey : ĠString , Ġval Ġvalue : ĠAny ) Ċ Ċ data Ġclass ĠApply ( val Ġoperation : ĠOperation < Any , Ġ* >) ĊĠĠĠ Ġ: Ġ ĠFunctional Operation < List < Any >, ĠList < Any >> ({ Ġit . map Ġ{ Ġoperation . invoke ( it ) !!} Ġ}) Ċ Ċ data Ġclass ĠApply Keys ( val Ġkeys : ĠSet < String > Ġ= Ġset Of (), Ġval Ġoperation : ĠOperation < Any , Ġ* >) Ġ: ĠMap Operation Ġ({ ĊĠĠĠ Ġit . entries . stream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠEntry ( it . key , Ġif Ġ( keys . contains ( it . key )) Ġoperation . invoke ( it ) !! Ġelse Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toMap ({ it . key }, Ġ{ it . value })) Ċ }) Ċ Ċ data Ġclass ĠCombine ( val Ġkeys : ĠList < String > Ġ= ĠlistOf (), Ġval Ġkey : ĠString , Ġval Ġremove : ĠBoolean Ġ= Ġfalse ) Ġ: Ġ ĠMap Operation Ġ({ ĊĠĠĠ Ġval Ġmap Ġ= Ġit . to Mutable Map () ĊĠĠĠ Ġmap [ key ] Ġ= Ġkeys . stream (). map Ġ{ Ġk Ġ-> Ġit [ k ] Ġ}. collect ( Collectors . toList ()) ĊĠĠĠ Ġif ( remove ) ĊĠĠĠĠĠĠĠ Ġkeys . forEach Ġ{ Ġmap . remove ( it )} ĊĠĠĠ Ġmap Ċ }) Ċ Ċ class ĠReduce Ġ: ĠFunctional Operation < Collection < Any >, ĠAny >({ Ġt Ġ-> ĊĠĠĠ Ġt . stream (). reduce Ġ{ Ġa Ġ: ĠAny , Ġb : ĠAny Ġ-> ĠCombin ations Handler . combine ( a , Ġb )}. get () Ċ }) Ċ