package Ġse . ans man . kot shi . model Ċ Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġcom . squareup . kotlin po et . Parameterized TypeName . Companion . parameter ized By Ċ import Ġcom . squareup . kotlin po et . STAR Ċ import Ġcom . squareup . kotlin po et . TypeName Ċ import Ġcom . squareup . kotlin po et . Type Variable Name Ċ Ċ sealed Ġclass ĠGener atable Json Adapter Ġ{ ĊĠĠĠ Ġabstract Ġval Ġtarget PackageName : ĠString ĊĠĠĠ Ġabstract Ġval Ġtarget Simple Names : ĠList < String > ĊĊĠĠĠ Ġopen Ġval Ġtarget Type Variables : ĠList < Type Variable Name > Ġget () Ġ= Ġempty List () ĊĊĠĠĠ Ġval Ġtarget Type : ĠType Name Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Type Ġ= ĠClass Name ( target PackageName , Ġtarget Simple Names ) ĊĠĠĠĠĠĠĠ Ġif Ġ( target Type Variables . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Type ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Type . parameter ized By ( target Type Variables ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġwildcard Target Type : ĠType Name Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Type Ġ= ĠClass Name ( target PackageName , Ġtarget Simple Names ) ĊĠĠĠĠĠĠĠ Ġif Ġ( target Type Variables . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Type ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Type . parameter ized By ( target Type Variables . map Ġ{ ĠST AR Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġadapter ClassName Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠClass Name ( target PackageName , Ġ" K ot shi ${ target Simple Names . join ToString ("_ ")} Json Adapter ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġadapter Name : ĠString Ġget () Ġ= Ġadapter ClassName . simple Name Ċ }