package Ġio . fluid sonic . meta Ċ Ċ import Ġkotlinx . metadata .* Ċ import Ġkotlinx . metadata . jvm .* ĊĊ Ċ internal Ġclass ĠM File Builder ( Ċ ĉ val Ġfac ade ClassName : ĠM Qualified TypeName , Ċ ĉ val Ġkotlin PackageName : ĠM PackageName ? Ċ ) Ġ: ĠK m Package Visitor () Ġ{ ĊĊ ĉ private Ġvar Ġfunctions : ĠMutable List < M Function Builder >? Ġ= Ġnull Ċ ĉ private Ġvar Ġlocal Deleg ated Properties : ĠMutable List < M Property Builder >? Ġ= Ġnull Ċ ĉ private Ġvar Ġproperties : ĠMutable List < M Property Builder >? Ġ= Ġnull Ċ ĉ private Ġvar Ġtype Aliases : ĠMutable List < M Type Alias Builder >? Ġ= Ġnull ĊĊĊ ĉ fun Ġbuild (): ĠM File Ġ{ Ċĉ ĉ var Ġfac ade ClassName Ġ= Ġfac ade ClassName Ċĉ ĉ var Ġj vm PackageName : ĠM PackageName ? Ġ= Ġnull ĊĊĉ ĉ if Ġ( kotlin PackageName Ġ!= Ġnull ) Ġ{ Ċĉĉ ĉ jvm PackageName Ġ= Ġfac ade ClassName . packageName Ċĉĉ ĉ facade ClassName Ġ= Ġfac ade ClassName . with Package ( kotlin PackageName ) Ċĉ ĉ } ĊĊĉ ĉ return ĠM File ( Ċĉĉ ĉ facade ClassName Ġ= Ġfac ade ClassName , Ċĉĉ ĉ functions Ġ= Ġfunctions . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉĉ ĉ local Deleg ated Properties Ġ= Ġlocal Deleg ated Properties . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉĉ ĉ jvm PackageName Ġ= Ġj vm PackageName , Ċĉĉ ĉ properties Ġ= Ġproperties . map OrEmpty Ġ{ Ġit . build () Ġ}, Ċĉĉ ĉ type Aliases Ġ= Ġtype Aliases . map OrEmpty Ġ{ Ġit . build () Ġ} Ċĉ ĉ ) Ċ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Extensions ( type : ĠK m Extension Type ) Ġ= Ċĉ ĉ ( type Ġ== ĠJ vm Package Extension Visitor . TYPE ). then Take Ġ{ Ċĉĉ ĉ object Ġ: ĠJ vm Package Extension Visitor () Ġ{ ĊĊĉĉĉ ĉ override Ġfun Ġvisit Local Deleg ated Property ( flags : ĠFlags , Ġname : ĠString , Ġgetter Flags : ĠFlags , Ġsetter Flags : ĠFlags ) Ġ= Ċĉĉĉĉ ĉ M Property Builder ( flags Ġ= Ġflags , Ġgetter Flags Ġ= Ġgetter Flags , Ġname Ġ= ĠM Variable Name ( name ), Ġsetter Flags Ġ= Ġsetter Flags ) Ċĉĉĉĉĉ ĉ . also Ġ{ Ċĉĉĉĉĉĉ ĉ local Deleg ated Properties ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġlocal Deleg ated Properties Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Function ( flags : ĠFlags , Ġname : ĠString ) Ġ= Ċĉ ĉ M Function Builder ( flags Ġ= Ġflags , Ġname Ġ= ĠM FunctionName ( name )) Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ functions ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġfunctions Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Property ( flags : ĠFlags , Ġname : ĠString , Ġgetter Flags : ĠFlags , Ġsetter Flags : ĠFlags ) Ġ= Ċĉ ĉ M Property Builder ( flags Ġ= Ġflags , Ġgetter Flags Ġ= Ġgetter Flags , Ġname Ġ= ĠM Variable Name ( name ), Ġsetter Flags Ġ= Ġsetter Flags ) Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ properties ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġproperties Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } ĊĊĊ ĉ override Ġfun Ġvisit Type Alias ( flags : ĠFlags , Ġname : ĠString ) Ġ= Ċĉ ĉ M Type Alias Builder ( flags Ġ= Ġflags , Ġname Ġ= ĠM Qualified TypeName . from Kotlin Internal ( name )) Ċĉĉ ĉ . also Ġ{ Ċĉĉĉ ĉ type Aliases ?. apply Ġ{ Ġadd ( it ) Ġ} Ġ?: Ġ{ Ġtype Aliases Ġ= Ġmutable ListOf ( it ) Ġ} () Ċĉĉ ĉ } Ċ } Ċ