package Ġcom . ke vin most . k ool bel t . util Ċ Ċ import Ġcom . ke vin most . k ool bel t . extension . map ToArray Ċ import Ġjava . util .* Ċ Ċ fun Ġ< K , ĠV > Ġmerging Lists Map Of ( var arg Ġpairs : ĠPair < K , ĠList < V >> ): ĠMer ging Lists Map < K , ĠV > Ġ{ ĊĠ Ġ// ĠIntelliJ Ġjust Ġf lips Ġout Ġwhen Ġit Ġsees Ġthe ĠAdd Only Map Ġclass ... ĊĠ Ġ@ Suppress (" Remove Explicit Type Arguments ") ĊĠ Ġreturn ĠMer ging Lists Map Impl < K , ĠV >( ĊĠĠĠĠĠ Ġmutable Map Of (* pairs . map ToArray Ġ{ Ġit . first Ġto Ġmaybe To Mutable List ( it . second ) Ġ})) Ċ } Ċ Ċ interface ĠMer ging Lists Map < K , ĠV > Ġ: ĠAdd Only Map < K , ĠList < out ĠV >> Ġ{ ĊĠ Ġoverride Ġoperator Ġfun Ġplus ( pair : ĠPair < K , ĠList < out ĠV >> ): ĠMer ging Lists Map < K , ĠV > ĊĊĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠMap < K , ĠList < out ĠV >> ): ĠMer ging Lists Map < K , ĠV > Ċ } Ċ Ċ private Ġclass ĠMer ging Lists Map Impl < K , ĠV > Ġinternal Ġconstructor ( private Ġval Ġdelegate Map : ĠMutable Map < K , ĠMutable List < V >>) Ċ : ĠMer ging Lists Map < K , ĠV >, ĠMap < K , ĠList < V >> Ġby Ġdelegate Map Ġ{ ĊĊĠ Ġoverride Ġfun Ġset ( key : ĠK , Ġvalue : ĠList < V >) Ġ{ ĊĠĠĠ Ġput ( key , Ġvalue ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġplus ( pair : ĠPair < K , ĠList < V >> ): ĠMer ging Lists Map < K , ĠV > Ġ{ ĊĠĠĠ Ġreturn ĠMer ging Lists Map Impl ( Linked HashMap ( delegate Map )). apply Ġ{ ĊĠĠĠĠĠ Ġput ( pair . first , Ġpair . second ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġplus ( other : ĠMap < K , ĠList < V >> ): ĠMer ging Lists Map < K , ĠV > Ġ{ ĊĠĠĠ Ġreturn ĠMer ging Lists Map Impl ( Linked HashMap ( delegate Map )). apply Ġ{ ĊĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġother ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , Ġvalue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġput ( key : ĠK , Ġvalue : ĠList < V >) Ġ{ ĊĠĠĠ Ġval Ġcurrent Value Ġ= Ġget ( key ) ĊĠĠĠ Ġif Ġ( current Value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġdelegate Map . put ( key , Ġmaybe To Mutable List ( value )) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġdelegate Map . put ( key , ĠArrayList ( current Value Ġ+ Ġvalue )) ĊĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġ< V > Ġmaybe To Mutable List ( list : ĠList < V >): ĠMutable List < V > Ġ{ ĊĠ Ġreturn Ġif Ġ( list Ġis ĠMutable List < V >) Ġlist Ġelse Ġlist . to Mutable List () Ċ } Ċ