package Ġtech . k zen . lib . server . codegen Ċ Ċ import Ġtech . k zen . lib . platform . ClassName Ċ import Ġtech . k zen . lib . platform . ClassNames . as TopLevel Import Ċ import Ġtech . k zen . lib . platform . ClassNames . nested Ċ import Ġtech . k zen . lib . platform . ClassNames . nested In Simple ĊĊ Ċ data Ġclass ĠArgument Reflection ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġtype : ĠString , ĊĠĠĠ Ġval Ġtype Classes : ĠSet < ClassName > Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġexternal Type ( ĊĠĠĠĠĠĠĠ Ġcontaining Type : ĠClass Name , ĊĠĠĠĠĠĠĠ Ġtype Parameters : ĠList < String > ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Classes . isEmpty () Ġ&& Ġtype Parameters . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtop Level Ġ= Ġcontaining Type . as TopLevel Import () ĊĊĠĠĠĠĠĠĠ Ġvar Ġbuffer Ġ= Ġtype ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( type Parameter Ġin Ġtype Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġbuffer . replace ("< $ type Parameter >", Ġ"< Any >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( type Class Ġin Ġtype Classes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Ġtype Class . get (). startsWith ( top Level )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= ĠRegex ("( \\ W | ^ )" Ġ+ ĠRegex . escape ( type Class . nested ()) Ġ+ Ġ"( \\ W |$ )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( buffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . group Values [ 1 ] Ġ== Ġ". ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Values [ 1 ] Ġ+ Ġtype Class . nested In Simple () Ġ+ Ġit . group Values [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuffer ĊĠĠĠ Ġ} Ċ }