package Ġcom . jak ew h art on . diffuse Ċ Ċ inline Ġclass ĠType Descriptor ( val Ġvalue : ĠString ) Ġ: ĠComparable < TypeDescriptor > Ġ{ ĊĠ Ġoverride Ġfun Ġcompare To ( other : ĠType Descriptor ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġsource Name . compareTo ( other . source Name ) ĊĠ Ġ} ĊĊĠ Ġval Ġsource Name Ġget () Ġ= Ġvalue . to Human Name () ĊĠ Ġval Ġsimple Name Ġget () Ġ= Ġsource Name . substring After Last ('.') ĊĊĠ Ġval Ġarray Ar ity Ġget () Ġ= Ġvalue . indexOf First Ġ{ Ġit Ġ!= Ġ'[' Ġ} ĊĠ Ġval Ġcomponent Descriptor Ġget () Ġ= ĠType Descriptor ( value . substring ( array Ar ity )) ĊĠ Ġfun Ġas Array ( arity : ĠInt Ġ= Ġ 1 ) Ġ= ĠType Descriptor (" [" . repeat ( arity ) Ġ+ Ġvalue ) ĊĊĠ Ġoverride Ġfun ĠtoString () Ġ= Ġsource Name ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġfun ĠString . to Human Name (): ĠString Ġ{ ĊĠĠĠĠĠ Ġif Ġ( startsWith (" [" )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsubstring ( 1 ). to Human Name () Ġ+ Ġ" []" ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( startsWith (" L ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsubstring ( 1 , Ġlength Ġ- Ġ 1 ). replace ('/', Ġ'.') ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" B " Ġ-> Ġ" byte " ĊĠĠĠĠĠĠĠ Ġ" C " Ġ-> Ġ" char " ĊĠĠĠĠĠĠĠ Ġ" D " Ġ-> Ġ" double " ĊĠĠĠĠĠĠĠ Ġ" F " Ġ-> Ġ" float " ĊĠĠĠĠĠĠĠ Ġ" I " Ġ-> Ġ" int " ĊĠĠĠĠĠĠĠ Ġ" J " Ġ-> Ġ" long " ĊĠĠĠĠĠĠĠ Ġ" S " Ġ-> Ġ" short " ĊĠĠĠĠĠĠĠ Ġ" V " Ġ-> Ġ" void " ĊĠĠĠĠĠĠĠ Ġ" Z " Ġ-> Ġ" boolean " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unknown Ġtype Ġ$ this ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ