package Ġorg . ca fe jo jo . s cha api . mining pipeline . usage graph generator . j imple . processors Ċ Ċ import Ġorg . ca fe jo jo . s cha api . mining pipeline . pattern filter . j imple . library usage filters . User Usage Value Filter Ċ import Ġorg . ca fe jo jo . s cha api . models . project . Java Project Ċ import Ġso ot . Body Ċ import Ġso ot . Boolean Type Ċ import Ġso ot . Int Type Ċ import Ġso ot . j imple . If Stmt Ċ import Ġso ot . j imple . Int Constant Ċ import Ġso ot . j imple . J imple Ċ import Ġso ot . j imple . Switch Stmt Ċ Ċ /** Ċ Ġ* ĠPro cesses ĠJ imple Ġbodies Ġsuch Ġthat Ġthey Ġno Ġlonger Ġcontain Ġusage s Ġof Ġuser Ġprojects . Ċ Ġ*/ Ċ internal Ġclass ĠUser Usage Processor ( project : ĠJava Project ) Ġ: ĠProcessor Ġ{ ĊĠĠĠ Ġprivate Ġval Ġuser Usage Value Filter Ġ= ĠUser Usage Value Filter ( project ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġusage s Ġof Ġuser Ġprojects Ġfrom Ġif - statements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody Ġthe Ġbody Ġto Ġprocess ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġprocess ( body : ĠBody ) Ġ= ĊĠĠĠĠĠĠĠ Ġbody . units ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . branches () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġunit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġis ĠIf Stmt Ġ&& Ġ! user Usage Value Filter . retain ( unit . condition ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Usage Local Ġ= ĠJ imple . v (). new Local (" user Usage Local $ locals Inserted ", ĠBoolean Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocals Inserted ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit . condition Ġ= ĠJ imple . v (). new Eq Expr ( user Usage Local , ĠInt Constant . v ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġis ĠSwitch Stmt Ġ&& Ġ! user Usage Value Filter . retain ( unit . key ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Usage Local Ġ= ĠJ imple . v (). new Local (" user Usage Local $ locals Inserted ", ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocals Inserted ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit . key Ġ= Ġuser Usage Local ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlocals Inserted Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ