package Ġorg . k lips . engine . re te Ċ Ċ import Ġorg . k lips . dsl . Facet Ċ import Ġorg . k lips . dsl . Facet . Facet Ref Ċ import Ġorg . k lips . engine . Binding Ċ import Ġorg . k lips . engine . Modification Ċ import Ġorg . k lips . engine . util . List Set Ċ import Ġorg . k lips . engine . util . Log Ċ import Ġorg . k lips . engine . util . Simple Entry Ċ import Ġorg . k lips . engine . util . activation H appen Ċ import Ġkotlin . collections . Map . Entry ĊĊ Ċ abstract Ġclass ĠProxy Node ( log : Log , Ġnode : ĠNode , Ġval Ġrenaming Binding : ĠBinding ) Ġ: ĠNode ( log ), ĠConsumer Ġ{ ĊĊĠĠĠ Ġvar Ġnode : ĠNode Ġ= Ġnode ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue . add Consumer ( this ) ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġnode . add Consumer ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbinding Rev Index Ġ= Ġmutable Map Of < Facet <* >, ĠFac et <* >> (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġrenaming Binding . forEach Ġ{ Ġput ( it . value , Ġit . key ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġrenaming Binding . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Ren aming Ġmust Ġbe Ġbi jection .") ĊĠĠĠĠĠĠĠ Ġif Ġ( ren aming Binding . all Ġ{ Ġit . key Ġ== Ġit . value Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Ren aming Ġmust Ġnot Ġbe Ġidentity .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġval Ġrefs : ĠSet < Facet Ref <* >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnot Rename d Ġ= Ġnode . refs . minus ( ren aming Binding . refs Ġas ĠSet < Facet Ref <* >>) ĊĠĠĠĠĠĠĠ Ġ( binding Rev Index . keys Ġas ĠSet < Facet Ref <* >> ). union ( not Rename d ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconsume ( source : ĠNode , Ġm df : ĠMod ification < Binding >) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . re te Event Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivation H appen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P - CON SU ME : Ġ$ md f , Ġ$ this " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify Consum ers ( md f . inherit ( prox ify Binding ( md f . arg ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġprox ify Binding ( former : ĠBinding ): Binding ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" P - Node ($ refs ) Ġ[ ${ System . identity HashCode ( this )} ]" ĊĊĠĠĠ Ġinner Ġclass ĠProxy Binding ( val Ġdata : ĠBinding ) Ġ: ĠBinding () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġentries : ĠSet < Entry < Facet <* >, ĠFac et <* >>> Ġ= ĠList Set Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . map Ġ{ ĠSimple Entry ( ren aming Binding [ it . key ] Ġ?: Ġit . key , Ġit . value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġkeys : ĠSet < Facet Ref <* >> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis @ Proxy Node . refs ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġkeys . size ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġvalues : ĠCollection < Facet <* >> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ() Ġ= Ġdata . values ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains Key ( key : ĠFac et <* >) ĠĠĠĠ Ġ= Ġkeys . contains ( key ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains Value ( value : ĠFac et <* >) Ġ= Ġvalues . contains ( value ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( key : ĠFac et <* >) ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġdata [ binding Rev Index [ key ]] ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty () ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġkeys . isEmpty () ĊĊĠĠĠ Ġ} Ċ }