package Ġcom . step an ov . bbf . bug finder . mut ator . transform ations Ċ Ċ import Ġcom . step an ov . bbf . bug finder . generator . target sg ener ators . Random Instances Generator Ċ import Ġcom . step an ov . bbf . bug finder . generator . target sg ener ators . type Generators . Random Type Generator Ċ import Ġcom . step an ov . bbf . bug finder . mut ator . transform ations . abi . generators . Class Body 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 . find Psi Ċ import Ġcom . step an ov . bbf . bug finder . util . get Box Funcs Ċ import Ġcom . step an ov . bbf . bug finder . util . getName Without Error Ċ import Ġcom . step an ov . bbf . bug finder . util . get True Ċ import Ġcom . step an ov . bbf . red uk tor . parser . PS IC re ator Ċ import Ġcom . step an ov . bbf . red uk tor . util . getAll P SI Children OfType Ċ import Ġcom . step an ov . bbf . red uk tor . util . replace This Ċ import Ġorg . jetbrains . kotlin . cfg . get Declaration Descriptor In cluding Construct ors Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Kind Ċ import Ġorg . jetbrains . kotlin . descriptors . Modal ity Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi .* Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . parents Ċ import Ġorg . jetbrains . kotlin . resolve . binding Context Util . get Abbre vi ated Type Or Type Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . module Ċ import Ġorg . jetbrains . kotlin . resolve . scopes . get Descriptors Filtered Ċ import Ġorg . jetbrains . kotlin . types . replace Ċ import Ġorg . jetbrains . kotlin . types . type Util . as Type Projection Ċ import Ġkotlin . random . Random Ċ Ċ // Don 't Ġforget Ġto Ġadd Ġimport Ġfor Ġprojects Ċ // Deal Ġwith ĠType Parameters Ċ Ċ class ĠAdd Inheritance Ġ: ĠTransformation () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠR AN DOM _ CONST Ġ= Ġ 2 ĊĊĠĠĠ Ġoverride Ġfun Ġtransform () Ġ= Ġrepeat ( RANDOM _ CONST ) Ġ{ Ġtransform 1 () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransform 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkt File Ġ= Ġfile Ġas ĠK t File ĊĠĠĠĠĠĠĠ Ġval Ġrt g Ġ= ĠRandom Type Generator ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠPS IC re ator . analyze ( kt File , Ġproject ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġrt g . set File And Context ( kt File , Ġctx ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Module Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkt File . get Box Funcs ()?. first OrNull (). get Declaration Descriptor In cluding Construct ors ( ctx )?. module Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġuser Classes Descriptors Ġ= ĠStd Library Generator . getUser Classes Descriptors From Project ( project , Ġcurrent Module ) ĊĠĠĠĠĠĠĠ Ġval Ġrandom Class Ġ= Ġfile . getAll P SI Children OfType < Kt Class Or Object >(). random OrNull () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġrandom Class Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Class . get Declaration Descriptor In cluding Construct ors ( ctx ) Ġas ? ĠClass Descriptor Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġrandom Class Copy Ġ= Ġrandom Class . copy () Ġas ĠK t Class Or Object ĊĠĠĠĠĠĠĠ Ġval Ġrandom ClassType Params Ġ= Ġrandom Class Descriptor . type Constructor . parameters ĊĠĠĠĠĠĠĠ Ġval Ġrandom G Class Ġ= ĠG Class . from Psi ( random Class ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Class For Inheritance Ġ= Ġuser Classes Descriptors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . kind Ġ== ĠClass Kind . INTERFACE Ġ|| Ġit . modal ity Ġ!= ĠMod ality . FINAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. random OrNull () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Constructor Ġ= Ġuser Class For Inheritance . type Constructor ĊĠĠĠĠĠĠĠ Ġval Ġtype Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Constructor . parameters . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( random ClassType Params . isNotEmpty () Ġ&& ĠRandom . get True ( 3 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom ClassType Params . random (). default Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrt g . generate Random Type With Ctx ( it . upper Bounds . random OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( type Params . any Ġ{ Ġit Ġ== Ġnull Ġ}) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġreplaced User Class For Inheritance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Class For Inheritance . default Type . replace ( type Params . map Ġ{ Ġit !!. as Type Projection () Ġ}) ĊĠĠĠĠĠĠĠ Ġrandom Class Copy . add Super TypeList Entry ( Factory . psi Factory . create Super Type Entry ( re placed User Class For Inheritance . getName Without Error ())) ĊĠĠĠĠĠĠĠ Ġval Ġbody Generator Ġ= ĠClass Body Generator ( kt File , Ġctx , Ġrandom G Class , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġover rid ings Ġ= Ġbody Generator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Members To Override ( random G Class , ĠlistOf ( re placed User Class For Inheritance )) ĊĠĠĠĠĠĠĠ Ġval Ġintersection By Names Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Class Descriptor . un subst it uted Member Scope . get Descriptors Filtered Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . name . asString () Ġ}. intersect ( over rid ings . map Ġ{ Ġit . name . asString () Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Over rid ings Ġ= Ġover rid ings . filter Ġ{ Ġit . name . asString () Ġ! in Ġintersection By Names Ġ} ĊĠĠĠĠĠĠĠ Ġrandom Class Descriptor . un subst it uted Member Scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Descriptors Filtered Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġdescr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descr . name . asString () Ġin Ġintersection By Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Ġ= Ġdescr . find Psi () Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( psi Ġis ĠK t Modifier List Owner Ġ&& Ġ! psi . has Modifier ( Kt Tokens . OVERRIDE _ KEYWORD )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi . add Modifier ( Kt Tokens . OVERRIDE _ KEYWORD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoverriding AsString Ġ= Ġbody Generator . generate Overrides ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom G Class , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( re placed User Class For Inheritance ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Over rid ings ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġclass Body Ġ= Ġrandom Class Copy . body ĊĠĠĠĠĠĠĠ Ġclass Body ?. r Brace ?. delete () ĊĠĠĠĠĠĠĠ Ġval Ġnew Class AsString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( class Body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ random Class Copy . text } Ġ{ Ġ$ over riding AsString \ n }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ random Class Copy . text }\ n $ over riding AsString \ n }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnew Class As P SI Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFactory . psi Factory . createClass ( new Class AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġbackup Class Ġ= Ġrandom Class . copy () ĊĠĠĠĠĠĠĠ Ġrandom Class . replace This ( new Class As P SI ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! checker . check Comp iling ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Class As P SI . replace This ( backup Class ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace TODO ( new Class As P SI ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace TODO ( random Class : ĠK t Class Or Object ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠPS IC re ator . analyze ( file , Ġproject ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġtodos Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Class . getAll P SI Children OfType < Kt Call Expression >(). filter Ġ{ Ġit . callee Expression ?. text Ġ== Ġ" TODO " Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( todo Ġin Ġtodos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġtodo . parents . first OrNull Ġ{ Ġit Ġis ĠK t Property Ġ|| Ġit Ġis ĠK t Named Function Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Ġis ĠK t Property ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . type Reference ?. get Abbre vi ated Type Or Type ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Ġas ĠK t Named Function ). type Reference ?. get Abbre vi ated Type Or Type ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Getting Ġvalue Ġof Ġneeded Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠRandom Instances Generator ( file Ġas ĠK t File , Ġctx ). generate Value OfType As Expression ( returnType ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchecker . replace Node If Possible ( todo , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} Ċ Ċ }