package Ġj iva . util Ċ Ċ import Ġj iva . domain . Function Ċ import Ġj iva . domain . node . expression . Parameter Ċ import Ġj iva . domain . scope . Function Signature Ċ import Ġj iva . domain . type . Type Ċ Ċ // ĠAccording Ġto Ġhttps :// docs . oracle . com / javase / specs / jv ms / se 8 / html / jv ms - 4 . html # jv ms - 4 . 3 Ċ object ĠDescriptor Factory Ġ{ ĊĊĠĠĠ Ġfun Ġget MethodDescriptor ( function : ĠFunction ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters : ĠCollection < Parameter > Ġ= Ġfunction . parameters ĊĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= Ġfunction . returnType ĊĠĠĠĠĠĠĠ Ġreturn Ġget MethodDescriptor ( parameters , ĠreturnType ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget MethodDescriptor ( signature : ĠFunction Signature ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters : ĠCollection < Parameter > Ġ= Ġsignature . parameters ĊĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= Ġsignature . returnType ĊĠĠĠĠĠĠĠ Ġreturn Ġget MethodDescriptor ( parameters , ĠreturnType ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget MethodDescriptor ( parameters : ĠCollection < Parameter >, ĠreturnType : ĠType ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Descriptor Ġ= Ġparameters . join ToString ("", Ġprefix Ġ= Ġ" (", Ġpostfix Ġ= Ġ") ") Ġ{ Ġit . type . descriptor Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġreturn Descriptor Ġ= ĠreturnType . descriptor ĊĠĠĠĠĠĠĠ Ġreturn Ġparameters Descriptor Ġ+ Ġreturn Descriptor ĊĠĠĠ Ġ} Ċ Ċ }