package Ġcom . jak ew h art on . dex Ċ Ċ sealed Ġclass ĠDex Member Ġ: ĠComparable < Dex Member > Ġ{ ĊĠ Ġabstract Ġval Ġdeclaring Type : ĠType Descriptor ĊĠ Ġabstract Ġval Ġname : ĠString ĊĠ Ġabstract Ġfun Ġrender ( hide Synt hetic Numbers : ĠBoolean Ġ= Ġfalse ): ĠString ĊĊĠ Ġfinal Ġoverride Ġfun ĠtoString () Ġ= Ġrender () ĊĊĠ Ġoverride Ġfun Ġcompare To ( other : ĠDex Member ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġtype Result Ġ= Ġdeclaring Type . compareTo ( other . decl aring Type ) ĊĠĠĠ Ġif Ġ( type Result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtype Result ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( java Class Ġ== Ġother . java Class ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( this Ġis ĠDex Method ) Ġ- 1 Ġelse Ġ 1 ĊĠ Ġ} Ċ } Ċ Ċ /** ĠRepresents Ġa Ġsingle Ġfield Ġreference . Ġ*/ Ċ data Ġclass ĠDex Field ( ĊĠ Ġoverride Ġval Ġdeclaring Type : ĠType Descriptor , ĊĠ Ġoverride Ġval Ġname : ĠString , ĊĠ Ġval Ġtype : ĠType Descriptor Ċ ) Ġ: ĠDex Member () Ġ{ ĊĠ Ġoverride Ġfun Ġrender ( hide Synt hetic Numbers : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġdisplay Type Ġ= Ġdeclaring Type ĊĠĠĠ Ġif Ġ( hide Synt hetic Numbers ) Ġ{ ĊĠĠĠĠĠ Ġdisplay Type Ġ= Ġdisplay Type . without Lambda Suffix () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ"${ display Type . source Name } Ġ$ name : Ġ${ type . simple Name }" ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcompare To ( other : ĠDex Member ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġsuper Result Ġ= Ġsuper . compareTo ( other ) ĊĠĠĠ Ġif Ġ( super Result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsuper Result ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠCOMP AR ATOR . compare ( this , Ġother Ġas ĠDex Field ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġval ĠCOMP AR ATOR Ġ= Ġcompare By ( Dex Field :: name , ĠDex Field :: type ) ĊĠ Ġ} Ċ } Ċ Ċ /** ĠRepresents Ġa Ġsingle Ġmethod Ġreference . Ġ*/ Ċ data Ġclass ĠDex Method ( ĊĠ Ġoverride Ġval Ġdeclaring Type : ĠType Descriptor , ĊĠ Ġoverride Ġval Ġname : ĠString , ĊĠ Ġval Ġparameter Types : ĠList < TypeDescriptor >, ĊĠ Ġval ĠreturnType : ĠType Descriptor Ċ ) Ġ: ĠDex Member () Ġ{ ĊĠ Ġoverride Ġfun Ġrender ( hide Synt hetic Numbers : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġdisplay Type Ġ= Ġdeclaring Type ĊĠĠĠ Ġif Ġ( hide Synt hetic Numbers ) Ġ{ ĊĠĠĠĠĠ Ġdisplay Type Ġ= Ġdisplay Type . without Lambda Suffix () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠdisplayName Ġ= Ġname ĊĠĠĠ Ġif Ġ( hide Synt hetic Numbers ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( name . startsWith (" lambda $ ")) Ġ{ ĊĠĠĠĠĠĠĠ ĠL AMBDA _ METHOD _ NUMBER . find ( name )?. let Ġ{ Ġmatch Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġ= Ġname . remove Range ( match . range . first , Ġmatch . range . last ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( name . matches ( SYN TH ET IC _ METHOD _ SUFFIX )) Ġ{ ĊĠĠĠĠĠĠĠ ĠdisplayName Ġ= ĠdisplayName . substring ( 0 , Ġname . lastIndexOf ('$ ')) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠ Ġappend ( display Type . source Name ) ĊĠĠĠĠĠ Ġappend (' Ġ') ĊĠĠĠĠĠ Ġappend ( displayName ) ĊĠĠĠĠĠ Ġappend (' (' ) ĊĠĠĠĠĠ Ġparameter Types . join To ( this , Ġ", Ġ", Ġtransform Ġ= ĠType Descriptor :: simple Name ) ĊĠĠĠĠĠ Ġappend (' )') ĊĠĠĠĠĠ Ġif Ġ( returnType Ġ!= ĠType Descriptor . VOID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" ĠâĨĴ Ġ") ĊĠĠĠĠĠĠĠ Ġappend ( returnType . simple Name ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcompare To ( other : ĠDex Member ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġsuper Result Ġ= Ġsuper . compareTo ( other ) ĊĠĠĠ Ġif Ġ( super Result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsuper Result ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠCOMP AR ATOR . compare ( this , Ġother Ġas ĠDex Method ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġval ĠSYN TH ET IC _ METHOD _ SUFFIX Ġ= Ġ" .*? \\ $ \\ d +". to Regex () ĊĠĠĠ Ġval ĠL AMBDA _ METHOD _ NUMBER Ġ= Ġ"\\ $ \\ d + \\ $ ". to Regex () ĊĠĠĠ Ġval ĠCOMP AR ATOR Ġ= Ġcompare By ( Dex Method :: name ) ĊĠĠĠĠĠĠĠ Ġ. then By ( comp aring Values (), ĠDex Method :: parameter Types ) ĊĠĠĠĠĠĠĠ Ġ. then By ( Dex Method :: returnType ) ĊĠ Ġ} Ċ } Ċ