package Ġcom . dip ien . by eb ye jet ifier . core . type Ċ Ċ import Ġjava . util . Sorted Map Ċ Ċ /** Ċ Ġ* ĠContains Ġall Ġthe Ġmappings Ġneeded Ġto Ġrewrite Ġjava Ġtypes . Ċ Ġ*/ Ċ data Ġclass ĠTypes Map ( private Ġval Ġtypes : ĠMap < Java Type , ĠJava Type >) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= ĠTypes Map ( empty Map ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontains Nested Types Ġ= Ġtypes . any Ġ{ Ġit . key . has Inner Type () Ġ|| Ġit . value . has Inner Type () Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( contains Nested Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Types Ġmap Ġdoes Ġnot Ġsupport Ġnested Ġtypes !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMaps Ġthe Ġgiven Ġtype Ġusing Ġthis Ġmap . Ġ*/ ĊĠĠĠ Ġfun Ġmap Type ( type : ĠJava Type ): ĠJava Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type . has Inner Type ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Map Result Ġ= Ġtypes [ type . getRoot Type ()] Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype . remap With New Root Type ( root Map Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtypes [ type ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJSON Ġdata Ġmodel Ġfor Ġ[ Types Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠJson Data ( val Ġtypes : ĠSorted Map < String , ĠString >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠCreates Ġinstance Ġof Ġ[ Types Map ] Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġto Mappings (): ĠTypes Map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTypes Map ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtypes Ġ= Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠJava Type ( it . key ) Ġto ĠJava Type ( it . value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ