package Ġcom . step an ov . bbf . bug finder . mut ator . transform ations Ċ Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Psi Method Ċ import Ġcom . step an ov . bbf . bug finder . executor . Compiler Args Ċ import Ġcom . step an ov . bbf . bug finder . executor . project . BB F File Ċ import Ġcom . step an ov . bbf . bug finder . generator . target sg ener ators . Random Instances Generator Ċ import Ġcom . step an ov . bbf . bug finder . mut ator . transform ations . abi . generators . Random ClassGenerator Ċ import Ġcom . step an ov . bbf . bug finder . mut ator . transform ations . abi . generators . Random Interface Generator Ċ import Ġcom . step an ov . bbf . bug finder . mut ator . transform ations . abi . g structures . G Class Ċ import Ġcom . step an ov . bbf . bug finder . mut ator . transform ations . t ce . Std Library Generator Ċ import Ġcom . step an ov . bbf . bug finder . util . add Import Ċ import Ġcom . step an ov . bbf . bug finder . util . de compiler . K 2 J Converter Ċ import Ġcom . step an ov . bbf . bug finder . util . getAll P SI Children OfType Ċ import Ġcom . step an ov . bbf . red uk tor . parser . PS IC re ator Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Or Object Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ import Ġkotlin . system . exit Process Ċ Ċ class ĠAdd Java Fun Interface : ĠTransformation () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġkt File Ġ= Ġfile Ġas ĠK t File ĊĠĠĠ Ġprivate Ġval Ġctx Ġ= ĠPS IC re ator . analyze ( kt File ) ĊĠĠĠ Ġprivate Ġval Ġrandom Value Generator Ġ= ĠRandom Instances Generator ( kt File , Ġctx !! ) ĊĊĠĠĠ Ġoverride Ġfun Ġtransform () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ctx Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġklass Generator Ġ= ĠRandom Interface Generator ( kt File , Ġctx ) ĊĠĠĠĠĠĠĠ Ġval Ġinit Str Ġ= ĠG Class () ĊĠĠĠĠĠĠĠ Ġinit Str . class Word Ġ= Ġ" interface " ĊĠĠĠĠĠĠĠ Ġinit Str . modifiers Ġ= Ġmutable ListOf (" fun ") ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Fun Interface Ġ= Ġ( klass Generator . finish Generation ( init Str ) Ġas ? ĠK t Class Or Object ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġprintln (" GEN Ġ= Ġ${ generated Fun Interface . text }") ĊĠĠĠĠĠĠĠ Ġval Ġde compiled Ġ= ĠK 2 J Converter . convert Class To Java ( generated Fun Interface , Ġchecker ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew File Ġ= ĠPS IC re ator . get Psi For Java (" import Ġorg . jetbrains . annotations .*; \ n \ n " Ġ+ Ġde compiled . text ) Ġas ĠPsi File ĊĠĠĠĠĠĠĠ Ġprintln (" CONVERT ED Ġ= Ġ${ new File . text }") ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ"${ Compiler Args . path To Tmp Dir }/${ generated Fun Interface . name }. java " ĊĠĠĠĠĠĠĠ Ġval Ġnew BB F File Ġ= ĠB BF File ( fileName , Ġnew File ) ĊĠĠĠĠĠĠĠ Ġchecker . project . add File ( new BB F File ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! checker . check Comp iling ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchecker . project . remove File ( new BB F File ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }