package Ġio . fluid sonic . meta Ċ Ċ import Ġkotlinx . metadata .* Ċ import Ġkotlinx . metadata . jvm .* ĊĊ Ċ internal Ġclass ĠM Function Builder ( Ċ ĉ private Ġval Ġflags : ĠFlags , Ċ ĉ private Ġval Ġname : ĠM FunctionName Ċ ) Ġ: ĠK m Function Visitor () Ġ{ ĊĊ ĉ private Ġvar Ġcontract : ĠM Contract Builder ? Ġ= Ġnull Ċ ĉ private Ġvar Ġj vm Signature : ĠM Jvm Member Signature . Method ? Ġ= Ġnull Ċ ĉ private Ġvar Ġlambda Class Origin Name : ĠM Qualified TypeName ? Ġ= Ġnull Ċ ĉ private Ġvar Ġreceiver Parameter : ĠM Type Reference Builder ? Ġ= Ġnull Ċ ĉ private Ġvar ĠreturnType : ĠM Type Reference Builder ? Ġ= Ġnull Ċ ĉ private Ġvar Ġtype Parameters : ĠMutable List < M Type Parameter Builder >? Ġ= Ġnull Ċ ĉ private Ġvar Ġvalue Parameters : ĠMutable List < M Value Parameter Builder >? Ġ= Ġnull Ċ ĉ private Ġvar Ġversion Requirements : ĠMutable List < M Version Requirement Builder >? Ġ= Ġnull ĊĊĊ ĉ fun Ġbuild () Ġ= ĠM Function ( Ċĉ ĉ contract Ġ= Ġcontract ?. build (), Ċĉ ĉ inheritance Restriction Ġ= ĠM Inheritance Restriction . for Flags ( flags ), Ċĉ ĉ is Expect Ġ= ĠFlag . Function . IS _ EXPECT ( flags ), Ċĉ ĉ is External Ġ= ĠFlag . Function . IS _ EXTERNAL ( flags ), Ċĉ ĉ isIn fix Ġ= ĠFlag . Function . IS _ IN FIX ( flags ), Ċĉ ĉ is Inline Ġ= ĠFlag . Function . IS _ INLINE ( flags ), Ċĉ ĉ is Operator Ġ= ĠFlag . Function . IS _ OPERATOR ( flags ), Ċĉ ĉ is Suspend Ġ= ĠFlag . Function . IS _ SUS PEND ( flags ), Ċĉ ĉ is Tail rec Ġ= ĠFlag . Function . IS _ TAIL REC ( flags ), Ċĉ ĉ jvm Signature Ġ= Ġj vm Signature , Ċĉ ĉ lambda Class Origin Name Ġ= Ġlambda Class Origin Name , Ċĉ ĉ name Ġ= Ġname , Ċĉ ĉ receiver ParameterType Ġ= Ġreceiver Parameter ?. build (), Ċĉ ĉ returnType Ġ= ĠreturnType ?. build () Ġ?: Ġthrow ĠMeta Exception (" function Ġ'$ name ' Ġhas Ġno Ġreturn Ġtype "), Ċĉ ĉ source Ġ= ĠM Class Member Source . for Flags ( flags ), Ċĉ ĉ type Parameters Ġ= Ġtype Parameters . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉ ĉ value Parameters Ġ= Ġvalue Parameters . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉ ĉ version Requirements Ġ= Ġversion Requirements . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉ ĉ visibility Ġ= ĠM Visibility . for Flags ( flags ) Ċ ĉ ) ĊĊĊ ĉ override Ġfun Ġvisit Contract () Ġ= Ċĉ ĉ M Contract Builder () Ċĉĉ ĉ . also Ġ{ Ġcontract Ġ= Ġit Ġ} ĊĊĊ ĉ override Ġfun Ġvisit Extensions ( type : ĠK m Extension Type ) Ġ= Ċĉ ĉ ( type Ġ== ĠJ vm Function Extension Visitor . TYPE ). then Take Ġ{ Ċĉĉ ĉ object Ġ: ĠJ vm Function Extension Visitor () Ġ{ ĊĊĉĉĉ ĉ override Ġfun Ġvisit ( signature : ĠJ vm Method Signature ?) Ġ{ Ċĉĉĉĉ ĉ jvm Signature Ġ= Ġsignature ?. let (:: MJ vm Member Signature ) Ċĉĉĉ ĉ } ĊĊ Ċĉĉĉ ĉ override Ġfun Ġvisit Lambda Class Origin Name ( internal Name : ĠClass Name ) Ġ{ Ċĉĉĉĉ ĉ lambda Class Origin Name Ġ= ĠM Qualified TypeName . from Kotlin Internal ( internal Name ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Receiver ParameterType ( flags : ĠFlags ) Ġ= Ċĉ ĉ M Type Reference Builder ( flags Ġ= Ġflags ) Ċĉĉ ĉ . also Ġ{ Ġreceiver Parameter Ġ= Ġit Ġ} ĊĊĊ ĉ override Ġfun Ġvisit ReturnType ( flags : ĠFlags ) Ġ= Ċĉ ĉ M Type Reference Builder ( flags Ġ= Ġflags ) Ċĉĉ ĉ . also Ġ{ ĠreturnType Ġ= Ġit Ġ} ĊĊĊ ĉ override Ġfun Ġvisit Type Parameter ( flags : ĠFlags , Ġname : ĠString , Ġid : ĠInt , Ġvariance : ĠK m Variance ) Ġ= Ċĉ ĉ M Type Parameter Builder ( flags Ġ= Ġflags , Ġid Ġ= ĠM Type Parameter Id ( id ), Ġname Ġ= ĠM Type ParameterName ( name ), Ġvariance Ġ= ĠM Variance ( variance )) Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ type Parameters ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġtype Parameters Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Value Parameter ( flags : ĠFlags , Ġname : ĠString ) Ġ= Ċĉ ĉ M Value Parameter Builder ( flags Ġ= Ġflags , Ġname Ġ= ĠM Variable Name ( name )) Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ value Parameters ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġvalue Parameters Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Version Requirement () Ġ= Ċĉ ĉ M Version Requirement Builder () Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ version Requirements ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġversion Requirements Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } Ċ } Ċ