package Ġcom . ss . android . ug c . by tex . method _ trace Ċ Ċ import Ġcom . android . build . gradle . App Extension Ċ import Ġcom . ss . android . ug c . by tex . common . Base Context Ċ import Ġcom . ss . android . ug c . by tex . common . white _ list . White List Ċ import Ġorg . gradle . api . Project Ċ Ċ class ĠMethod Trace Context ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : ĠApp Extension , Ġextension : ĠMethod Trace Extension Ċ ) Ġ: ĠBase Context < Method Trace Extension >( project , Ġandroid , Ġextension ) Ġ{ ĊĠĠĠ Ġfun Ġshould Trace ( className : ĠString ?, Ġname : ĠString ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġis Not Construct Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . contains ("< cl init >") Ġ|| Ġname . contains ("< init > ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Not Construct Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġis Not Construct Ġ&& Ġin White List ( className ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġin White List ( className : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( className Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġwhite List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( className . contains ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġwhite List Ġ= ĠArrayList < String >() ĊĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init () ĊĠĠĠĠĠĠĠ Ġwhite List Ġ= Ġextension . white List Ġas ĠArrayList < String > ĊĠĠĠ Ġ} Ċ } Ċ