package Ġorg . jetbrains . research . k fg . builder . cfg Ċ Ċ import Ġorg . jetbrains . research . k fg . Class Manager Ċ import Ġorg . jetbrains . research . k fg . ir . value . Usage Context Ċ import Ġorg . jetbrains . research . k fg . ir . value . Value Factory Ċ import Ġorg . jetbrains . research . k fg . ir . value . instruction .* Ċ import Ġorg . jetbrains . research . k fg . type . ArrayType Ċ import Ġorg . jetbrains . research . k fg . type . Bool Type Ċ import Ġorg . jetbrains . research . k fg . type . Integral Ċ import Ġorg . jetbrains . research . k fg . type . Type Factory Ċ import Ġorg . jetbrains . research . k fg . visitor . Method Visitor Ċ import Ġorg . jetbrains . research . k the l per . assert . unreachable Ċ Ċ class ĠBool Value Adapter ( override Ġval Ġcm : ĠClass Manager , Ġoverride Ġval Ġctx : ĠUsage Context ) Ġ: ĠMethod Visitor , ĠInstruction Builder Ġ{ ĊĠĠĠ Ġoverride Ġval Ġinstructions : ĠInstruction Factory ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcm . instruction ĊĠĠĠ Ġoverride Ġval Ġtypes : ĠType Factory ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcm . type ĊĠĠĠ Ġoverride Ġval Ġvalues : ĠValue Factory ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcm . value ĊĊĠĠĠ Ġoverride Ġfun Ġcleanup () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Array Store Inst ( inst : ĠArray Store Inst ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbb Ġ= Ġinst . parent ĊĊĠĠĠĠĠĠĠ Ġval Ġarray Type Ġ= Ġinst . array Ref . type Ġas ? ĠArray Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġunreachable (" Non - array Ġtype Ġof Ġarray Ġstore Ġreference ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( array Type . component Ġis ĠBool Type Ġ&& Ġinst . value . type Ġis ĠIntegr al ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast Ġ= Ġinst . value Ġ` as ` Ġtypes . bool Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbb . insertBefore ( inst , Ġcast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst . replace Uses Of ( ctx , Ġfrom Ġ= Ġinst . value , Ġto Ġ= Ġcast ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Field Store Inst ( inst : ĠField Store Inst ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbb Ġ= Ġinst . parent ĊĊĠĠĠĠĠĠĠ Ġif Ġ( inst . type Ġis ĠBool Type Ġ&& Ġinst . value . type Ġis ĠIntegr al ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast Ġ= Ġinst . value Ġ` as ` Ġtypes . bool Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbb . insertBefore ( inst , Ġcast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst . replace Uses Of ( ctx , Ġfrom Ġ= Ġinst . value , Ġto Ġ= Ġcast ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Return Inst ( inst : ĠReturn Inst ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbb Ġ= Ġinst . parent ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġbb . parent ĊĊĠĠĠĠĠĠĠ Ġif Ġ( method . returnType Ġis ĠBool Type Ġ&& Ġinst . returnValue . type Ġ! is ĠBool Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast Ġ= Ġinst . returnValue Ġ` as ` Ġtypes . bool Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbb . insertBefore ( inst , Ġcast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst . replace Uses Of ( ctx , Ġfrom Ġ= Ġinst . returnValue , Ġto Ġ= Ġcast ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }