package Ġcom . jak ew h art on . dex Ċ Ċ sealed Ġclass ĠDex Member Ġ: ĠComparable < Dex Member > Ġ{ ĊĠ Ġabstract Ġval Ġdeclaring Type : ĠString ĊĠ Ġabstract Ġval Ġname : ĠString ĊĊĠ Ġopen Ġfun Ġrender ( hide Synt hetic Numbers : ĠBoolean Ġ= Ġfalse ) Ġ= ĠtoString () ĊĊĠ Ġ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 : ĠString , ĊĠ Ġoverride Ġval Ġname : ĠString , ĊĠ Ġval Ġtype : ĠString Ċ ) Ġ: ĠDex Member () Ġ{ ĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġval Ġreturn Name Ġ= Ġtype . substring After Last ('.') ĊĠĠĠ Ġreturn Ġ"$ decl aring Type Ġ$ name : Ġ$ return 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 : ĠString , ĊĠ Ġoverride Ġval Ġname : ĠString , ĊĠ Ġval Ġparameter Types : ĠList < String >, ĊĠ Ġval ĠreturnType : ĠString Ċ ) Ġ: ĠDex Member () Ġ{ ĊĠ Ġoverride Ġfun Ġrender ( hide Synt hetic Numbers : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġval Ġmethod Ġ= Ġif Ġ( hide Synt hetic Numbers Ġ&& Ġname . matches ( SYN TH ET IC _ SUFFIX )) Ġ{ ĊĠĠĠĠĠ Ġname . substring ( 0 , Ġname . lastIndexOf ('$ ')) ĊĠĠĠ Ġ} Ġelse Ġname ĊĠĠĠ Ġval Ġparameters Ġ= Ġparameter Types . join ToString (", Ġ") Ġ{ Ġit . substring After Last ('.') Ġ} ĊĊĠĠĠ Ġif Ġ( returnType Ġ== Ġ" void ") Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ"$ decl aring Type Ġ$ method ($ parameters )" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġreturn Name Ġ= ĠreturnType . substring After Last ('.') ĊĠĠĠ Ġreturn Ġ"$ decl aring Type Ġ$ method ($ parameters ) ĠâĨĴ Ġ$ return Name " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString () Ġ= Ġrender () ĊĊĠ Ġ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 _ SUFFIX Ġ= Ġ" .*? \\ $ \\ 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 ) ĊĠ Ġ} Ċ } Ċ