/* Ċ Ġ* ĠThis ĠSource ĠCode ĠForm Ġis Ġsubject Ġto Ġthe Ġterms Ġof Ġthe ĠMozilla ĠPublic Ċ Ġ* ĠLicense , Ġv . Ġ 2 . 0 . ĠIf Ġa Ġcopy Ġof Ġthe ĠM PL Ġwas Ġnot Ġdistributed Ġwith Ġthis Ċ Ġ* Ġfile , ĠYou Ġcan Ġobtain Ġone Ġat Ġhttps :// mozilla . org / MPL / 2 . 0 /. Ċ Ġ*/ Ċ Ċ package Ġcom . kot l ind is cord . k ord . extensions . utils . delt as Ċ Ċ import Ġdev . k ord . core . entity . Member Ċ import Ġdev . k ord . core . entity . Role Ċ import Ġkotlinx . coroutines . flow . toSet Ċ import Ġkotlin . contracts . contract Ċ Ċ /** Ċ Ġ* ĠRepresents Ġthe Ġdifference Ġin Ġroles Ġbetween Ġtwo ĠK ord Ġ[ Member ] Ġobjects . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġintended Ġfor Ġuse Ġwith Ġ[ Member Delta ], Ġand Ġis Ġincluded Ġas Ġthe Ġ` roles ` Ġattribute . Ċ Ġ*/ Ċ @ Suppress (" Un document ed Public Property ") Ċ public Ġdata Ġclass ĠRole Delta ( ĊĠĠĠ Ġprivate Ġval Ġold : ĠSet < Role >, ĊĠĠĠ Ġprivate Ġval Ġnew : ĠSet < Role > Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĠA Ġset Ġrepresenting Ġany Ġroles Ġthat Ġwere Ġadded Ġin Ġ[ new ], Ġif Ġany . Ġ**/ ĊĠĠĠ Ġpublic Ġval Ġadded : ĠSet < Role > Ġ= Ġnew Ġ- Ġold ĊĊĠĠĠ Ġ/** ĠA Ġset Ġrepresenting Ġany Ġroles Ġthat Ġremoved Ġin Ġ[ new ], Ġif Ġany . Ġ**/ ĊĠĠĠ Ġpublic Ġval Ġremoved : ĠSet < Role > Ġ= Ġold Ġ- Ġnew ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGiven Ġan Ġold Ġand Ġnew ĠK ord Ġ[ Member ] Ġobject , Ġreturn Ġa Ġ[ Role Delta ] Ġrepresenting Ġthe Ġchanges Ġbetween Ġthem . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġfunction Ġwill Ġreturn Ġ` null ` Ġif Ġthere Ġwere Ġno Ġchanges , Ġor Ġif Ġ[ old ] Ġis Ġ` null `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġold ĠThe Ġolder Ġ[ Member ] Ġobject . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnew ĠThe Ġnewer Ġ[ Member ] Ġobject . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġsuspend Ġfun Ġfrom ( old : ĠMember ?, Ġnew : ĠMember ): ĠRole Delta ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( null ) Ġimplies Ġ( old Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old . role Ids Ġ== Ġnew . role Ids ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRole Delta ( old . roles . toSet (), Ġnew . roles . toSet ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ