package Ġk arak um . node Ċ Ċ internal Ġfun Ġconvert Members ( ĊĠĠĠ Ġsource : ĠString , Ċ ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( source . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĊĠĠĠ Ġreturn Ġsource . remove Suffix ("; ") ĊĠĠĠĠĠĠĠ Ġ. split To Sequence (" ;\ n ") ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġconvert Member ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") Ċ } Ċ Ċ private Ġfun Ġconvert Member ( ĊĠĠĠ Ġsource : ĠString , Ċ ): ĠString Ġ{ ĊĠĠĠ Ġval Ġcomment Ġ= Ġsource . substring Before Last ("\ n ", Ġ"") ĊĠĠĠĠĠĠĠ Ġ. if Empty Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġval Ġbody Ġ= Ġsource . substring After Last ("\ n ") ĊĠĠĠ Ġval Ġcontent Ġ= Ġif Ġ( is Property ( body )) Ġ{ ĊĠĠĠĠĠĠĠ Ġconvert Property ( body ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġconvert Method ( body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsequence Of ( comment , Ġcontent ) ĊĠĠĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") Ċ } Ċ Ċ private Ġfun Ġis Property ( ĊĠĠĠ Ġsource : ĠString , Ċ ): ĠBoolean Ġ= ĊĠĠĠ Ġ(" (" Ġ! in Ġsource ) Ġ|| Ġ( source . indexOf (": ") Ġ< Ġsource . indexOf (" (" )) Ċ Ċ private Ġfun Ġconvert Property ( ĊĠĠĠ Ġsource : ĠString , Ċ ): ĠString Ġ{ ĊĠĠĠ Ġval Ġmodifier Ġ= Ġif Ġ( source . startsWith (" readonly Ġ")) Ġ" val " Ġelse Ġ" var " ĊĠĠĠ Ġval Ġbody Ġ= Ġsource . remove Prefix (" readonly Ġ") ĊĊĠĠĠ Ġval Ġname Ġ= Ġbody . substring Before (": Ġ"). remove Suffix (" ?") ĊĠĠĠ Ġvar Ġtype Ġ= Ġkotlin Type ( body . substring After (": Ġ"), Ġname ) ĊĊĠĠĠ Ġif Ġ( body . startsWith ("$ name ? ")) ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype . add Option ality () ĊĊĠĠĠ Ġreturn Ġ"$ modifier Ġ$ name : Ġ$ type " Ċ } Ċ Ċ internal Ġfun Ġconvert Method ( ĊĠĠĠ Ġsource : ĠString , Ċ ): ĠString Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġsource . substring Before (" (" ) ĊĠĠĠĠĠĠĠ Ġ. substring Before ("< ") ĊĠĠĠĠĠĠĠ Ġ. remove Suffix (" ?") ĊĠĠĠĠĠĠĠ Ġ. if Empty Ġ{ Ġ" /* Ġnative Ġ*/ Ġinvoke " Ġ} ĊĊĠĠĠ Ġval Ġtype Parameters Ġ= Ġsource . substring Before (" (" ) ĊĠĠĠĠĠĠĠ Ġ. substring After ("< ", Ġ"") ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġif Ġ( it . isNotEmpty ()) Ġ"< $ it " Ġelse Ġ"" Ġ} ĊĠĠĠĠĠĠĠ Ġ. replace (" Ġextends Ġ", Ġ" Ġ: Ġ") ĊĊĠĠĠ Ġval Ġparameters Source Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ. substring After (" (" ) ĊĠĠĠĠĠĠĠ Ġ. substring Before Last (" ): Ġ") ĊĊĠĠĠ Ġval Ġoptional Ġ= Ġsource . startsWith ("$ name ?") ĊĠĠĠ Ġval Ġparameters Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġparameters Source . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ-> Ġparameters Source ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. split To Sequence (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", \ n ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Parameter ( it , Ġoptional ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠreturnType Ġ= Ġkotlin Type ( source . substring After Last (" ): Ġ"), Ġname ) ĊĊĠĠĠ Ġif Ġ( optional ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ" val Ġ$ name : Ġ(($ parameters ) Ġ-> Ġ$ returnType )? " ĊĊĠĠĠ Ġval Ġreturn Declaration Ġ= Ġif Ġ( returnType Ġ!= ĠUNIT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ": Ġ$ returnType " ĊĠĠĠ Ġ} Ġelse Ġ"" ĊĊĠĠĠ Ġvar Ġresult Ġ= Ġ" fun Ġ$ type Parameters Ġ$ name ($ parameters )$ return Declaration " ĊĠĠĠ Ġif Ġ(" Ġ=> Ġ" Ġin Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" value : Ġany ", Ġ" value : ĠAny ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" Ġ=> Ġvoid ", Ġ" -> ĠUnit ") ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ internal Ġfun Ġconvert Parameter ( ĊĠĠĠ Ġsource : ĠString , ĊĠĠĠ Ġlambda Mode : ĠBoolean , Ċ ): ĠString Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ. remove Prefix (" ...") ĊĠĠĠĠĠĠĠ Ġ. substring Before (": Ġ") ĊĠĠĠĠĠĠĠ Ġ. remove Suffix (" ?") ĊĊĠĠĠ Ġval Ġtype Ġ= Ġkotlin Type ( source . substring After (": Ġ"), Ġname ) ĊĠĠĠ Ġval Ġdeclaration Ġ= Ġif Ġ( source . startsWith ("$ name ? :" )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lambda Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . add Option ality () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ type Ġ= Ġdefined Ex tern ally " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġtype ĊĊĠĠĠ Ġvar Ġresult Ġ= Ġ"$ name : Ġ$ declaration " ĊĠĠĠ Ġif Ġ( source . startsWith (" ... ")) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ" var arg Ġ$ result " ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ