package Ġru . dim su z . way Ċ Ċ class ĠScreen Node Builder < S Ġ: ĠAny , ĠA Ġ: ĠAny , ĠR Ġ: ĠAny > Ġ{ ĊĠ Ġprivate Ġval Ġevent Transitions Ġ= Ġmutable Map Of < Event . Name , Ġ( Transition Env < *, Ġ*, Ġ* >) Ġ-> ĠUnit >() ĊĠ Ġprivate Ġvar Ġon Entry : Ġ(( Action Env < *, Ġ* >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġon Exit : Ġ(( Action Env < *, Ġ* >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠ Ġfun Ġon Entry ( action : ĠAction Env < S , ĠA >. () Ġ-> ĠUnit ): ĠScreen Node Builder < S , ĠA , ĠR > Ġ{ ĊĠĠĠ Ġon Entry Ġ= Ġaction Ġas Ġ( Action Env < *, Ġ* >) Ġ-> ĠUnit ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġfun Ġon Exit ( action : ĠAction Env < S , ĠA >. () Ġ-> ĠUnit ): ĠScreen Node Builder < S , ĠA , ĠR > Ġ{ ĊĠĠĠ Ġon Exit Ġ= Ġaction Ġas Ġ( Action Env < *, Ġ* >) Ġ-> ĠUnit ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġfun Ġon ( event : ĠEvent . Name , Ġtransition : ĠTransition Env < S , ĠA , ĠR >. () Ġ-> ĠUnit ): ĠScreen Node Builder < S , ĠA , ĠR > Ġ{ ĊĠĠĠ Ġevent Transitions [ event ] Ġ= Ġtransition Ġas Ġ( Transition Env < *, Ġ*, Ġ* >) Ġ-> ĠUnit ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġfun Ġbuild (): ĠScreen Node Ġ{ ĊĠĠĠ Ġreturn ĠScreen Node ( ĊĠĠĠĠĠ Ġevent Transitions Ġ= Ġevent Transitions , ĊĠĠĠĠĠ Ġon Entry Ġ= Ġon Entry , ĊĠĠĠĠĠ Ġon Exit Ġ= Ġon Exit ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ