package Ġorg . github . te leg ab ots . state Ċ Ċ import Ġorg . github . te leg ab ots . entity . State Def Ċ Ċ object ĠState Util Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMerge Ġstate Ġitems Ġconsidering Ġthat Ġstate 1 Ġhas Ġhigher Ġpriority ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmerge ( state 1 : ĠState Def ?, Ġstate 2 : ĠState Def ?): ĠState Def ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state 1 Ġ== Ġnull Ġ|| Ġstate 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate 1 Ġ?: Ġstate 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstate 1 . items . to Mutable List () ĊĠĠĠĠĠĠĠ Ġval Ġkeys Ġ= Ġstate 1 . items . map Ġ{ Ġit . key Ġ}. to Mutable Set () ĊĊĠĠĠĠĠĠĠ Ġstate 2 . items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! keys . contains ( it . key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys . add ( it . key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠState Def ( result ) ĊĠĠĠ Ġ} Ċ } Ċ