package Ġsa ar land . cis pa . frontmatter . resolvers Ċ Ċ import Ġmu . K Logging Ċ import Ġsa ar land . cis pa . frontmatter . Activity Or Fragment Class Ċ import Ġsa ar land . cis pa . frontmatter . App Model Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is Android Method Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is System Method Ċ import Ġsa ar land . cis pa . frontmatter . Resolver Ċ import Ġsa ar land . cis pa . frontmatter . Resource Parser Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is Activity Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is Android Class Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is Dummy Ċ import Ġsa ar land . cis pa . frontmatter . Utils . is Real Ċ import Ġsa ar land . cis pa . frontmatter . Xml Layout Analysis Ċ import Ġsa ar land . cis pa . frontmatter . data . Stmt Site Ċ import Ġsa ar land . cis pa . frontmatter . findViewById Sub signatures Ċ import Ġso ot . Scene Ċ import Ġso ot . S oot Method Ċ import Ġso ot . j imple . Assign Stmt Ċ import Ġso ot . j imple . Stmt Ċ Ċ class ĠFind View Resolver ( scene V : ĠScene , Ġprivate Ġval Ġapp Model : ĠApp Model , Ġprivate Ġval Ġvalue Resolver : ĠValue Resolver , Ġprivate Ġval Ġresource Parser : ĠResource Parser , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlayout Analysis : ĠXml Layout Analysis ) Ġ: ĠResolver ( scene V ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġval Ġactivities Ġ= Ġapp Model . activities ĊĠĠĠ Ġval Ġfragments Ġ= Ġapp Model . fragments ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġresolve ĠfindViewById Ġwhich Ġwe Ġdidn 't Ġfind Ġon Ġa Ġprevious Ġstep ĊĠĠĠĠ Ġ* Ġcurrently Ġnot Ġused ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġresolve Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( activity Ġin Ġactivities ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . is Android Class ()) Ġ// Ġignore Ġdefault Ġactivities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity . is Real ()) Ġ// Ġignore Ġdefault Ġactivities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Resolve ĠViews Ġfor Ġ$ activity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreachable Methods Ġ= Ġget Reach able Methods Of Activity ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Concrete Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is System Method () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is Android Method () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is Dummy () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Views From ( activity , Ġreachable Methods ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( fragment Ġin Ġfragments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment . is Android Class ()) Ġ// Ġignore Ġdefault Ġactivities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! fragment . is Real ()) Ġ// Ġignore Ġdefault Ġactivities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Resolve ĠViews Ġfor Ġ$ fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreachable Methods Ġ= Ġget Reach able Methods Of Activity ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Concrete Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is System Method () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is Android Method () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is Dummy () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Views From ( fragment , Ġreachable Methods ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Views From ( activity : ĠActivity Or Fragment Class , Ġreachable Methods : ĠSequence < S oot Method >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Resolver Ġ= ĠView Resolver ( activity , Ġapp Model , Ġscene V , Ġvalue Resolver , Ġresource Parser , Ġlayout Analysis ) ĊĠĠĠĠĠĠĠ Ġval ĠfindViewById Sites Ġ= Ġreachable Methods ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġfind Find ViewById Sites ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġfor Ġ( findViewById Site Ġin ĠfindViewById Sites ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Resolver . resolve Activity Find ViewById ( findViewById Site ). forEach Ġ{ Ġview Resolver . bind View Attrs ( it , Ġit . location !! , ĠfindViewById Site . method ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Find ViewById Sites ( method : ĠS oot Method ): ĠSequence < Stmt Site > Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( method . is Concrete ) ĊĠĠĠĠĠĠĠ Ġval Ġactive Body Ġ= Ġmethod . retrieve Active Body () ĊĠĠĠĠĠĠĠ Ġreturn Ġactive Body . units . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Stmt >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . contains Invoke Expr () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . invoke Expr . method . sub Signature Ġin ĠfindViewById Sub signatures Ġ&& Ġit . invoke Expr . method . decl aring Class . is Activity () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġis ĠAssign Stmt Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠStmt Site ( it , Ġmethod ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ