package Ġorg . jon ny zz z . team city . dsl . api ĊĊ Ċ interface ĠTC DS LL azy Ġ{ ĊĠ Ġfun Ġdo Lazy Init () Ċ } Ċ Ċ internal Ġclass ĠLazy Builders < T Ġ: ĠAny >( builder Ġ: ĠT . () Ġ-> ĠUnit ) Ġ: ĠTC DS LL azy Ġ{ ĊĠ Ġprivate Ġval Ġbuild ers Ġ= Ġarray ListOf ( builder ) ĊĠ Ġprivate Ġvar Ġinitialized Ġ= Ġfalse ĊĊĠ Ġvar Ġinstance Ġ: ĠT ? Ġ= Ġnull ĊĊĠ Ġfun Ġadd ( builder Ġ: ĠT . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġif Ġ( initialized ) Ġ Ġ{ ĊĠĠĠĠĠ Ġinstance !!. builder () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġbuild ers . add ( builder ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdo Lazy Init () Ġ{ ĊĠĠĠ Ġwhile (! builders . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġto Update Ġ= Ġbuild ers . toList () ĊĠĠĠĠĠ Ġbuild ers . clear () ĊĠĠĠĠĠ Ġto Update . forEach Ġ{ Ġinstance !!. it () Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠ Ġ} Ċ } Ċ