package Ġorg . jetbrains . research . k ex . asm . analysis . def ect Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġorg . jetbrains . research . k fg . ir . value . instruction . Instruction Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . absolute Path String Ċ Ċ enum Ġclass ĠDef ect Type ( val Ġdescription : ĠString ) Ġ{ ĊĠĠĠ ĠO OB (" array Ġindex Ġout Ġof Ġbounds "), ĊĠĠĠ ĠN PE (" null Ġpointer Ġexception "), ĊĠĠĠ ĠASSERT (" assertion Ġviolation ") Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠDef ect ( ĊĠĠĠ Ġval Ġtype : ĠDef ect Type , ĊĠĠĠ Ġval Ġcall Stack : ĠList < String >, ĊĠĠĠ Ġval Ġid : ĠString ?, ĊĠĠĠ Ġval Ġtest File : ĠString ?, ĊĠĠĠ Ġval ĠtestCase Name : ĠString ? Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġo ob ( call Stack : ĠList < String >, Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDef ect ( Defect Type . O OB , Ġcall Stack , Ġid , Ġtest File ?. absolute Path String (), ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġn pe ( call Stack : ĠList < String >, Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDef ect ( Defect Type . N PE , Ġcall Stack , Ġid , Ġtest File ?. absolute Path String (), ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġassert ( call Stack : ĠList < String >, Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDef ect ( Defect Type . ASSERT , Ġcall Stack , Ġid , Ġtest File ?. absolute Path String (), ĠtestCase Name ) ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġo ob ( inst : ĠInstruction , Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo ob ( listOf ("${ inst . parent . parent } Ġ- Ġ${ inst . location } "), Ġid , Ġtest File , ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġn pe ( inst : ĠInstruction , Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn pe ( listOf ("${ inst . parent . parent } Ġ- Ġ${ inst . location } "), Ġid , Ġtest File , ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġassert ( inst : ĠInstruction , Ġid : ĠString ? Ġ= Ġnull , Ġtest File : ĠPath ? Ġ= Ġnull , ĠtestCase Name : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( listOf ("${ inst . parent . parent } Ġ- Ġ${ inst . location } "), Ġid , Ġtest File , ĠtestCase Name ) ĊĠĠĠ Ġ} Ċ }