package Ġorg . apache . t inker pop . gre mlin . og m . extensions Ċ Ċ internal Ġfun Ġ< K , ĠV > ĠMutable Map < K , ĠV >. map Values In Place ( transform : Ġ( Map . Entry < K , ĠV >) Ġ-> ĠV ) Ġ= ĊĠĠĠĠĠĠĠ Ġentries . forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . setValue ( transform ( entry )) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġ< K , ĠV > ĠIterator < Pair < K , ĠV >> . to Multi Map ( require Keys : ĠCollection < K > Ġ= Ġempty List ()): ĠMap < K , ĠList < V >> Ġ{ ĊĠĠĠ Ġval Ġremaining Required Keys Ġ= Ġrequire Keys . to Mutable Set () ĊĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < K , ĠMutable List < V >>() ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġremaining Required Keys . remove ( it . first ) ĊĠĠĠĠĠĠĠ Ġmap [ it . first ]?. add ( it . second ) Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . first ] Ġ= Ġmutable ListOf ( it . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġremaining Required Keys . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [ it ] Ġ= Ġmutable ListOf () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap Ċ } ĊĊ Ċ internal Ġfun Ġ< K , ĠV > ĠIterator < Pair < K , ĠV >> . to Optional Map ( require Keys : ĠCollection < K > Ġ= Ġempty List ()): ĠMap < K , ĠV ?> Ġ{ ĊĠĠĠ Ġval Ġremaining Required Keys Ġ= Ġrequire Keys . to Mutable Set () ĊĠĠĠ Ġval Ġfinal Map Ġ= Ġmutable Map Of < K , ĠV ?> () ĊĠĠĠ ĠforEach Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( final Map [ pair . first ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Two Ġpairs Ġhave Ġthe Ġsame Ġkey Ġwhich Ġshouldn 't Ġbe Ġpossible Ġin Ġan Ġoptional Ġmap ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġremaining Required Keys . remove ( pair . first ) ĊĠĠĠĠĠĠĠ Ġfinal Map [ pair . first ] Ġ= Ġpair . second ĊĠĠĠ Ġ} ĊĠĠĠ Ġremaining Required Keys . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġfinal Map [ it ] Ġ= Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfinal Map Ċ } Ċ Ċ internal Ġfun Ġ< K , ĠV > ĠIterator < Pair < K , ĠV >> . to Single Map ( require Keys : ĠCollection < K > Ġ= Ġempty List ()): ĠMap < K , ĠV > Ġ{ ĊĠĠĠ Ġval Ġremaining Required Keys Ġ= Ġrequire Keys . to Mutable Set () ĊĠĠĠ Ġval Ġfinal Map Ġ= Ġmutable Map Of < K , ĠV >() ĊĠĠĠ ĠforEach Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( final Map [ pair . first ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Two Ġpairs Ġhave Ġthe Ġsame Ġkey Ġwhich Ġshouldn 't Ġbe Ġpossible Ġin Ġa Ġsingle Ġmap ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġremaining Required Keys . remove ( pair . first ) ĊĠĠĠĠĠĠĠ Ġfinal Map [ pair . first ] Ġ= Ġpair . second ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( remaining Required Keys . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" Sequence Ġis Ġmissing Ġpair Ġfor Ġkeys Ġ$ remaining Required Keys ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfinal Map Ċ } Ċ