package Ġcom . by but ter . sis y ph us . rpc Ċ Ċ import Ġcom . by but ter . sis y ph us . protobuf . Message Ċ import Ġio . grpc . Context Ċ Ċ object ĠDebug Ġ{ ĊĠĠĠ Ġval ĠDEBUG _ INFO _ KEY : ĠContext . Key < Mutable List < Message < *, Ġ* >>> Ġ= ĠContext . key (" sis y ph us - debug - context ") ĊĊĠĠĠ Ġfun Ġinit Debug ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( debug Enabled ) Ġreturn Ġcontext ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . with Value ( DEBUG _ INFO _ KEY , Ġmutable ListOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdebug Enabled : ĠBoolean Ġget () Ġ= ĠDEBUG _ INFO _ KEY . get () Ġ!= Ġnull ĊĊĠĠĠ Ġval Ġdebug Info : ĠList < Message < *, Ġ* >> Ġget () Ġ= ĠDEBUG _ INFO _ KEY . get () Ġ?: ĠlistOf () Ċ } Ċ Ċ fun Ġdebug ( message : ĠMessage < *, Ġ* >) Ġ{ ĊĠĠĠ ĠDebug . DEBUG _ INFO _ KEY . get ()?. add ( message ) Ċ } Ċ Ċ inline Ġfun Ġdebug ( block : Ġ() Ġ-> ĠMessage < *, Ġ* >) Ġ{ ĊĠĠĠ ĠDebug . DEBUG _ INFO _ KEY . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ+= Ġblock () ĊĠĠĠ Ġ} Ċ } Ċ