@ file : Jvm Name (" Reflection Asm Util ") ĊĊ Ċ package Ġcn . ber ber man . em eral d . reflection Ċ Ċ import Ġcom . es ot eric software . reflect asm . Constructor Access Ċ import Ġcom . es ot eric software . reflect asm . Field Access Ċ import Ġcom . es ot eric software . reflect asm . Method Access ĊĊ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. getMethod Access (): ĠMethod Access Ġ= ĠMethod Access . get ( this ) ĊĊ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. getField Access (): ĠField Access Ġ= ĠField Access . get ( this ) ĊĊ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. get Constructor Access (): ĠConstructor Access < T > Ġ= ĠConstructor Access . get ( this ) ĊĊ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. invoke Method ( instance : ĠAny ?, Ġname : ĠString , Ġvar arg Ġparameters : ĠAny ?): ĠAny ? Ġ= Ċĉ ĉ getMethod Access ()( instance , Ġname , Ġ* parameters ) ĊĊ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. getField ( instance : ĠAny ?, Ġname : ĠString ): ĠAny ? Ġ= Ġget Field Access ()[ instance , Ġname ] Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠClass < T >. invoke Method Specific Types ( instance : ĠAny ?, Ġname : ĠString , Ġparameter Types : ĠArray < Class <* >>, Ġvar arg Ġparameters : ĠAny ?): ĠAny ? Ġ= Ċĉ ĉ getMethod Access (). let Ġ{ Ċĉĉ ĉ it ( instance , Ġit . getIndex ( name , Ġ* parameter Types ), Ġ* parameters ) Ċĉ ĉ } Ċ