/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . k uber ig . dsl . generator . meta . kind s Ċ Ċ class ĠD sl Kind Container ( val Ġname Ġ: ĠString ) Ġ{ ĊĠĠĠ Ġval Ġsub Containers Ġ= Ġmutable Map Of < String , ĠD sl Kind Container >() ĊĠĠĠ Ġval Ġkinds Ġ= Ġmutable Map Of < String , ĠD sl Kind Meta >() ĊĊĠĠĠ Ġfun Ġadd ( dsl Kind Meta : ĠD sl Kind Meta ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcontainer Name Parts Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġif Ġ( dsl Kind Meta . group Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Spl its Ġ= Ġd sl Kind Meta . group . split ('.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Name Parts . addAll ( group Spl its ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontainer Name Parts . add ( dsl Kind Meta . version ) ĊĊĠĠĠĠĠĠĠ Ġthis . add ( container Name Parts . iterator (), Ġd sl Kind Meta ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ( container Name Part Iterator Ġ: ĠIterator < String >, Ġd sl Kind Meta Ġ: ĠD sl Kind Meta ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( container Name Part Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġcontainer Name Part Iterator . next () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Container Ġ: ĠD sl Kind Container ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sub Containers . containsKey ( group )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Container Ġ= Ġsub Containers [ group ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Container Ġ= ĠD sl Kind Container ( group ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Containers [ group ] Ġ= Ġgroup Container ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Container . add ( container Name Part Iterator , Ġd sl Kind Meta ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkinds [ dsl Kind Meta . kind ] Ġ= Ġd sl Kind Meta ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtypeName () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Dsl ${ name . capitalize ()} Root " ĊĠĠĠ Ġ} Ċ Ċ }