package Ġcom . run kel stein . hover Translate Web Extension . core . Interop . api Ċ Ċ import Ġcom . run kel stein . hover Translate Web Extension . core . Interop . commands . Command Base Ċ import Ġcom . run kel stein . hover Translate Web Extension . core . Interop . dto . Result Dto Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġkotlin . reflect . K Class Ċ Ċ interface ĠI Message Service Ġ{ ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠCommand Base , ĠR Ġ: ĠAny > Ġsend ( cmd : ĠT , Ġrequest Class Ġ: ĠK Class < T >, Ġreceiver Class Ġ: ĠK Class < R >): ĠDeferred < Result Dto < R >> ĊĠĠĠ Ġfun Ġ< T Ġ: ĠCommand Base , ĠR Ġ: ĠAny > Ġon Receive ( action Ġ: Ġsuspend Ġ( T ) Ġ-> ĠResult Dto < R >, Ġcommand Class Ġ: ĠK Class < T >, Ġresult Class Ġ: ĠK Class < R >) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠCommand Base , Ġre ified ĠR Ġ: ĠAny > ĠI Message Service . send ( cmd : ĠT ): ĠDeferred < Result Dto < R >> Ġ= Ġsend ( cmd , ĠT :: class , ĠR :: class ) Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠCommand Base , Ġre ified ĠR Ġ: ĠAny > ĠI Message Service . on Receive ( no inline Ġaction Ġ: Ġsuspend Ġ( T ) Ġ-> ĠResult Dto < R >) Ġ= Ġon Receive ( action , ĠT :: class , ĠR :: class )