package Ġcom . la id pack . s our cer er . generator . index Ċ Ċ import Ġcom . github . jav ap ar ser . ast . body .* Ċ import Ġcom . github . jav ap ar ser . ast . expr .* Ċ import Ġcom . la id pack . s our cer er . generator . Store Ċ import Ġcom . la id pack . s our cer er . generator . first Ancestor OfType Ċ import Ġcom . la id pack . s our cer er . generator . first Desc endant OfType Ċ import Ġcom . la id pack . s our cer er . generator . resources . Style able Attribute EnumValue Ċ import Ġcom . la id pack . s our cer er . generator . target . Attribute Ċ import Ġcom . la id pack . s our cer er . generator . target . Setter Ċ import Ġcom . la id pack . s our cer er . generator . target . Getter Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġkotlinx . dn q . query .* Ċ Ċ /** Ċ Ġ* ĠClass Ġwrapper Ġthat Ġfunctions Ġas Ġintermediate Ġbetween ĠX od us Ġqueries Ġand Ġclass Ġdetails Ċ Ġ* Ġ@ note Ġin ĠX od us , Ġstored ĠString Ġproperties Ġvalues Ġare Ġcase Ġins ensitive Ċ Ġ*/ Ċ class ĠClass Info ( ĊĠĠĠĠĠĠĠ Ġval Ġx d Declared Type : ĠX d Declared Type , ĊĠĠĠĠĠĠĠ Ġval Ġclass Declaration : ĠClass Or Interface Declaration Ċ ) Ġ{ ĊĠĠĠ Ġval Ġclass Category Ġ= ĠStore . transaction al ( readonly Ġ= Ġtrue ) Ġ{ Ġx d Declared Type . class Category ?. to Enum () Ġ} ĊĠĠĠ Ġprivate Ġval ĠsuperClass Declarations Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . super Classes . toList (). associate Ġ{ Ġx d Super Class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( xd Super Class . canonical Name , Ġx d Super Class . getClass Or Interface Declaration ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġget Super Class Declaration ( className : ĠClass Name ): ĠClass Or Interface Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠsuperClass Declarations [ className . canonical Name ] Ġas ĠClass Or Interface Declaration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Potential Get ters For Field ( field : ĠField Declaration , Ġvariable Name : ĠString ): ĠList < Xd Member > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Descri bed Type Ġ= Ġfield . describe Type ( variable Name ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Xd Member >() ĊĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Fields Ġ= Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: can Be Getter Ġeq Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Fields . filter Ġ{ Ġx d Field Ġ-> Ġx d Field . described Type Ġ== Ġtarget Descri bed Type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Methods Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: can Be Getter Ġeq Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( xd Methods . filter Ġ{ xd Method Ġ-> Ġ Ġx d Method . described ReturnType Ġ== Ġtarget Descri bed Type }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsince Ġit Ġis Ġa Ġfield , Ġwe Ġassume Ġset ters Ġcan Ġonly Ġbe Ġmethods . Ġnot Ġother Ġpublic Ġfields ĊĠĠĠ Ġfun Ġget Potential Set ters ForType ( described Type : ĠString , Ġattribute Name : ĠString ): ĠList < Xd Method > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . methods ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . can Be Setter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( it . is Void Ġeq Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . parameters . size () Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . parameters . first (). described Type Ġ== Ġdescribed Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġx d Method Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method . name Ġ== Ġ" set ${ attribute Name . capitalize () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Potential Get ters For Any Of These Names ( names : ĠCollection < String >): ĠList < Xd Member > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Xd Member >() ĊĠĠĠĠĠĠĠ Ġval Ġname Set Ġ= Ġnames . toSet () ĊĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: can Be Getter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġ( Xd Method :: name . in Values ( names )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ m Ġ-> Ġname Set . contains ( m . name ) Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( methods . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Field :: can Be Getter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġ( Xd Field :: name . in Values ( names )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġf Ġ-> Ġname Set . contains ( f . name ) Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( fields . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Any Getter By Java Doc ( attribute : ĠAttribute , Ġdesired NumberOf Attributes : ĠSet < Int >): ĠX d Member ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Method Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: attribute Names From Block Tags . contains ( attribute . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: can Be Getter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm . name Ġ== Ġattribute . name Ġ// Ġdo Ġcase Ġsensitive Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġdesired NumberOf Attributes . contains ( m . attribute Names From Block Tags . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xd Method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġx d Method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Fields Ġ= Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Field :: attribute Names From Block Tags . contains ( attribute . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Field :: can Be Getter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ f Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . name Ġ== Ġattribute . name Ġ// Ġdo Ġcase Ġsensitive Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġdesired NumberOf Attributes . contains ( f . attribute Names From Block Tags . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġif Ġ( xd Fields . size Ġ== Ġ 1 ) Ġx d Fields . first () Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Call ables With Attribute Set As Parameter (): ĠList < Callable Declaration <* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Callable Declaration <* >>() ĊĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġx d Declared Type . declared Methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: is Method With Attribute Set As Parameter Ġeq Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethods . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Declaration . members [ it . member Index ] Ġas ĠMethod Declaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstructors Ġ= Ġx d Declared Type . construct ors . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Constructor :: is Constructor With Attribute Set As Parameter Ġeq Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Declaration . members [ it . member Index ] Ġas ĠConstructor Declaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Potential Set ters With Attribute Tag In Comments (): ĠList < Xd Method > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . declared Methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: has Any Java Doc Attribute Block Tag Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: can Be Setter Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget MethodInfo By Call Expr ( method Call Expr : ĠMethod Call Expr , Ġcheck If Method Is Called From Current Class : ĠBoolean Ġ= Ġtrue ): ĠX d Method ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif (( ! check If Method Is Called From Current Class Ġ|| Ġis MethodCall On Current Class ( method Call Expr )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx d Methods Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġfilter */ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġno Ġresult , Ġcheck Ġif Ġit Ġis Ġa Ġstatic Ġmethod Ġof Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xd Methods . isEmpty () Ġ&& Ġx d Declared Type . is Nested Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Canonical Name Ġ= Ġx d Declared Type . canonical Name . substring ( 0 , Ġx d Declared Type . canonical Name . lastIndexOf ('. ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Parent Class Ġ= ĠX d Declared Type . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Declared Type :: canonical Name Ġeq Ġparent Canonical Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġt Ġ-> Ġt . canonical Name Ġ== Ġparent Canonical Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Parent Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Parent Class . getClass Or Interface Declaration (), Ġx d Parent Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods Ġ= Ġx d Parent Class . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Xd Method :: name Ġeq Ġmethod Call Expr . name AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġ( Xd Method :: is Static Ġeq Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġif Ġ( xd Methods . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġperformance Ġreasons , Ġtry Ġto Ġmatch Ġfirst Ġbased Ġon Ġnumber Ġof Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġmethod Call Expr . arguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Method sWith Correct Param Count Ġ= Ġx d Methods . filter Ġ{ xd Method Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method . parameters . size () Ġ== Ġarguments . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xd Method sWith Correct Param Count . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method sWith Correct Param Count . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargument Types Ġ= Ġarguments . map Ġ{ arg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg Ġis ĠMethod Call Expr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ReturnType From MethodCall ( arg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġarg . describe Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method sWith Correct Param Count . find Ġ{ Ġx d Method Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġx d Method . parameters . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ find Ġparameters . all Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ all Ġparam . described Type Ġ== Ġargument Types [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis MethodCall On Current Class ( method Call Expr : ĠMethod Call Expr ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! method Call Expr . scope . isPresent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġmethod Call Expr . scope . get () Ġis ĠThis Expr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġmethod Call Expr . scope . get () Ġis ĠSuper Expr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Variable Declared In Constructor Or Method ( name Expr : ĠName Expr ): ĠVariable Decl arator ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Declaration Ġ= Ġname Expr . first Ancestor OfType ( Body Declaration :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Name Ġexpression Ġ$ name Expr Ġis Ġnot Ġwithin Ġa Ġbody Ġdeclaration ") ĊĠĠĠĠĠĠĠ Ġreturn Ġbody Declaration . first Desc endant OfType ( Variable Decl arator :: class . java ) Ġ{ v Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . name AsString Ġ== Ġname Expr . name AsString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ReturnType From MethodCall ( method Call Expr : ĠMethod Call Expr ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis MethodCall On Current Class ( method Call Expr ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Other Method Ġ= Ġ Ġget MethodInfo By Call Expr ( method Call Expr , Ġfalse ) Ġas ĠX d Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Other Method . described ReturnType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Call Expr . scope . get () Ġis ĠName Expr Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Name Expr Ġ= Ġmethod Call Expr . scope . get (). as Name Expr () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariable Decl arator Ġ= Ġget Variable Declared In Constructor Or Method ( scope Name Expr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( variable Decl arator Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Class Ġ= ĠDecl ared Symbol Resolver . resolve Declared Type ( variable Decl arator . type . as Class Or Interface Type ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Class . getClass Or Interface Declaration (), Ġx d Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Class . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. described ReturnType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Field Ġ= Ġget Field From This Class Or Super Class ( scope Name Expr . name AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xd Field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanonical Name Ġ= Ġx d Field . described Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Declared Type Ġ= ĠX d Declared Type . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Declared Type :: canonical Name Ġeq Ġcanonical Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġt Ġ-> Ġt . canonical Name Ġ== Ġcanonical Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Declared Type . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Declared Type . getClass Or Interface Declaration (), Ġx d Declared Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. described ReturnType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Class Ġ= ĠDecl ared Symbol Resolver . resolve Declared Type ( scope Name Expr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Class . getType Declaration (), Ġx d Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Method Ġ= Ġx d Class . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Cannot Ġresolve Ġreturn Ġtype Ġfor Ġmethod Ġcall Ġ'$ method Call Expr ' Ġwith Ġscope Ġname Ġ'$ scope Name Expr '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method . described ReturnType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Call Expr . scope . get () Ġis ĠMethod Call Expr Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Expr Ġ= Ġmethod Call Expr . scope . get () Ġas ĠMethod Call Expr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Return Descri bed Type Ġ= Ġget ReturnType From MethodCall ( scope Expr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Class Ġ= ĠDecl ared Type Registry . findBy Canonical Name ( scope Return Descri bed Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Could Ġnot Ġfind Ġreturning Ġclass Ġ$ scope Return Descri bed Type Ġfrom Ġscope Ġ$ scope Expr Ġfrom Ġoriginal Ġcall Ġ$ method Call Expr ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Class . getType Declaration (), Ġx d Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Method Ġ= Ġx d Class . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Cannot Ġresolve Ġreturn Ġtype Ġfor Ġmethod Ġcall Ġ'${ method Call Expr . name AsString }' Ġwith Ġfor Ġclass Ġ'$ xd Class ', Ġoriginal Ġmethod Ġcall Ġ$ method Call Expr ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Method . described ReturnType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Cannot Ġresolve Ġreturn Ġtype Ġfor Ġmethod Ġcall Ġ'$ method Call Expr '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis MethodCall From This Class Or Super Class ( method Call Expr : ĠMethod Call Expr ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġmethod Call Expr . name AsString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġmethod Call Expr . name AsString Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Public MethodCall From This Class Or Super Class ( method Call Expr : ĠMethod Call Expr ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx d Method Ġ= Ġthis . getMethod Info By Call Expr ( method Call Expr ) ĊĠĠĠĠĠĠĠ Ġreturn Ġx d Method Ġ!= Ġnull Ġ&& ĠStore . transaction al Ġ{ Ġx d Method . is Public Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Field From This Class Or Super Class ( variable Name : ĠString ): ĠX d Field ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: name Ġeq Ġvariable Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġvariable Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ transaction al Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Field Declaration From This Class Or Super Class ( variable Name : ĠString ): ĠField Declaration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġget Field From This Class Or Super Class ( variable Name ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġget Field Declaration From This Class Or Super Class ( field ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Field Declaration From This Class Or Super Class ( field : ĠX d Field ): ĠField Declaration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġif Ġ( field . declared In Type . target ClassName Ġ== Ġx d Declared Type . target ClassName Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Declaration . members [ field . member Index ] Ġas ĠField Declaration ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Super Class Declaration ( field . declared In Type . target ClassName ). members [ field . member Index ] Ġas ĠField Declaration ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Resolved Field From This Class Or Super Class ( variable Name : ĠString ): ĠField Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Field Declaration From This Class Or Super Class ( variable Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" No Ġfield Ġdeclaration Ġwith Ġname Ġ'$ variable Name ' Ġin Ġclass Ġ'${ xd Declared Type . target ClassName }' Ġor Ġsuper Ġclasses ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Method Declaration From This Class Or Super Class ( method : ĠX d Method ): ĠMethod Declaration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġif Ġ( method . declared In Type . target ClassName Ġ== Ġx d Declared Type . target ClassName Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Declaration . members [ method . member Index ] Ġas ĠMethod Declaration ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Super Class Declaration ( method . declared In Type . target ClassName ). members [ method . member Index ] Ġas ĠMethod Declaration ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Resolved Method Declaration From This Class Or Super Class ( xd Method : ĠX d Method ): ĠMethod Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Method Declaration From This Class Or Super Class ( xd Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠStore . transaction al Ġ{ Ġ Ġthrow ĠIllegalArgumentException (" No Ġmethod Ġdeclaration Ġwith Ġname Ġ'${ xd Method . name }' Ġin Ġclass Ġ'${ xd Method . declared In Type . target ClassName }' ") Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠisSet table Field From This Class Or Super Class ( variable Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Field Ġ= Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: name Ġeq Ġvariable Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġvariable Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ transaction al Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġx d Field . is Public Ġ&& Ġ! xd Field . is Final ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġis Field From This Class Or Super Class ( variable Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: name Ġeq Ġvariable Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġvariable Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġis Field From Parent Class ( variable Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( class Declaration . is Nested Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġancestor ClassName Ġ= Ġx d Declared Type . target ClassName . canonical Name . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġx d Declared Type . target ClassName . canonical Name . lastIndexOf ('.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Ancestor Class Ġ= ĠX d Declared Type . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Declared Type :: canonical Name Ġeq Ġancestor ClassName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġt Ġ-> Ġt . canonical Name Ġ== Ġancestor ClassName Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow Ġjava . lang . IllegalArgumentException (" No Ġancestor Ġclass Ġfound Ġwith Ġname Ġ$ ancestor ClassName ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Ancestor Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Ancestor Class . getClass Or Interface Declaration (), Ġx d Ancestor Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Ancestor Class . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: name Ġeq Ġvariable Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any { Ġf Ġ-> Ġf . name Ġ== Ġvariable Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Resolved Field Declaration From Parent Class ( variable Name : ĠString ): ĠField Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Declared Type . is Nested Type ) Ġthrow Ġjava . lang . IllegalArgumentException ("${ xd Declared Type . target ClassName } Ġis Ġnot Ġa Ġnested Ġclass ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġancestor ClassName Ġ= Ġx d Declared Type . target ClassName . canonical Name . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġx d Declared Type . target ClassName . canonical Name . lastIndexOf ('.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Ancestor Class Ġ= ĠX d Declared Type . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Declared Type :: canonical Name Ġeq Ġancestor ClassName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġt Ġ-> Ġt . canonical Name Ġ== Ġancestor ClassName Ġ/* Ġcase - sensitive Ġcheck Ġ*/} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow Ġjava . lang . IllegalArgumentException (" No Ġancestor Ġclass Ġfound Ġwith Ġname Ġ$ ancestor ClassName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! xd Ancestor Class . resolved Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Body P ee ker . peek ( xd Ancestor Class . getClass Or Interface Declaration (), Ġx d Ancestor Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Field Ġ= Ġx d Ancestor Class . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: name Ġeq Ġvariable Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull { Ġf Ġ-> Ġf . name Ġ== Ġvariable Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow Ġjava . lang . IllegalArgumentException (" Ancestor Ġ$ ancestor ClassName Ġclass Ġhas Ġno Ġfield Ġwith Ġname Ġ$ variable Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġx d Ancestor Class . getClass Or Interface Declaration (). members [ xd Field . member Index ] Ġas ĠField Declaration ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Setter From This Class Or Super Class ( setter : ĠSetter ): ĠX d Member Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsetter HashCode Ġ= Ġsetter . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Methods Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġsetter . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Iterable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġsetter . name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods . size Ġ== Ġ 1 Ġ-> Ġx d Methods [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods . size Ġ> Ġ 1 Ġ-> Ġx d Methods . first Ġ{ Ġx d Method Ġ-> Ġx d Method . accessor HashCode Ġ== Ġsetter HashCode Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: accessor HashCode Ġeq Ġsetter HashCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Xd Method Ġor ĠX d Field Ġ'${ setter . name }' Ġnot Ġfound Ġfor Ġsetter Ġin Ġclass Ġ'${ xd Declared Type . target ClassName }' Ġor Ġsuper Ġclasses Ġ'${ xd Declared Type . super Classes . toList (). join ToString Ġ{ Ġx d Super Class Ġ-> Ġx d Super Class . canonical Name Ġ}} '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Getter From This Class Or Super Class ( getter : ĠGetter ): ĠX d Member Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgetter HashCode Ġ= Ġgetter . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx d Methods Ġ= Ġx d Declared Type . methods . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Method :: name Ġeq Ġgetter . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Iterable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġm Ġ-> Ġm . name Ġ== Ġgetter . name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods . size Ġ== Ġ 1 Ġ-> Ġx d Methods [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Methods . size Ġ> Ġ 1 Ġ-> Ġx d Methods . first Ġ{ Ġx d Method Ġ-> Ġx d Method . accessor HashCode Ġ== Ġgetter HashCode Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . fields . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Field :: accessor HashCode Ġeq Ġgetter HashCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Xd Method Ġor ĠX d Field Ġ'${ getter . name }' Ġnot Ġfound Ġfor Ġgetter Ġin Ġclass Ġ'${ xd Declared Type . target ClassName }' Ġor Ġsuper Ġclasses Ġ'${ xd Declared Type . super Classes . toList (). join ToString Ġ{ Ġx d Super Class Ġ-> Ġx d Super Class . canonical Name Ġ}} '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Int Def Annotation ( annotation Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx d Declared Type . int Def Annotations . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Int Def Annotation :: name Ġeq Ġannotation Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġi Ġ-> Ġi . name Ġ== Ġannotation Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Int Def Annotation As Attribute Enum ( annotation Name : ĠString ): ĠList < Style able Attribute EnumValue > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStore . transaction al Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġint Def Annotation Ġ= Ġx d Declared Type . int Def Annotations . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX d Int Def Annotation :: name Ġeq Ġannotation Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġi Ġ-> Ġi . name Ġ== Ġannotation Name Ġ/* Ġcase - sensitive Ġcheck Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction al Ġint Def Annotation . values . toList (). map Ġ{ xd Int Def Value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle able Attribute EnumValue ( xd Int Def Value . name , Ġx d Int Def Value . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ