package Ġio . config 4 k . plugin Ċ Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation Ċ import Ġio . config 4 k . annotation . Generation St ance Ċ import Ġio . config 4 k . annotation . Properties Ċ import Ġio . config 4 k . async . Async Property Loader Ċ import Ġio . config 4 k . blocking . Property Loader Ċ import Ġjava . io . FileDescriptor Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . Print Stream Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Function Ċ import Ġkotlin . reflect . full . comp anion Object Ċ import Ġkotlin . reflect . full . comp anion Object Instance Ċ import Ġkotlin . reflect . full . declared Functions Ċ Ċ class ĠCompile Test Ġ: ĠClass Container Ġ{ ĊĠĠĠ Ġval Ġimports Ġ= ĠImports ( this ) ĊĠĠĠ Ġval Ġfile Annotations Ġ= ĠFile Annotations ( this ) ĊĊĠĠĠ Ġval Ġclasses : ĠMutable List < Compile Class > Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( klass : ĠCompile Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses . add ( klass ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcompile Test : ĠCompile Test ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( file Annotations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( imports ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( klass Ġin Ġclasses ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( klass ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġcompile Test ( block : ĠCompile Test . () Ġ-> ĠUnit ): ĠString Ġ{ ĊĠĠĠ Ġval Ġcompile Test Ġ= ĠCompile Test () ĊĠĠĠ Ġprintln ("$ compile Test Ġ- _ -------------------------------------------------------------------------------- ------ ") ĊĠĠĠ Ġcompile Test . block () ĊĠĠĠ Ġreturn Ġcompile Test . toString () Ċ } Ċ Ċ inline Ġfun ĠCompile Test . imports ( block : ĠImports . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġimports . block () Ċ } Ċ Ċ inline Ġfun ĠCompile Test . file Annotations ( block : ĠFile Annotations . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfile Annotations . block () Ċ } Ċ Ċ inline Ġfun ĠCompile Test . main Class ( block : ĠProperties Class . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd ( Properties Class (" TestClass ", Ġthis ). apply ( block )) Ċ } Ċ Ċ inline Ġfun ĠClass Container . compile Class ( name : ĠString , Ġblock : ĠCompile Class . ()-> Unit ) Ġ{ ĊĠĠĠ Ġadd ( Compile Class ( name , Ġcompile Test ). apply ( block )) Ċ } Ċ Ċ inline Ġfun ĠClass Container . properties Class ( name : ĠString , Ġblock : ĠProperties Class . ()-> Unit ) Ġ{ ĊĠĠĠ Ġadd ( Properties Class ( name , Ġcompile Test ). apply ( block )) Ċ } Ċ Ċ inline Ġfun ĠCompile Class . constructor ( block : ĠPrimary Constructor . () Ġ-> ĠUnit ) Ġ= Ġconstructor . block () Ċ inline Ġfun ĠProperties Class . properties Annotation ( block : ĠProperties Annotation . () Ġ-> ĠUnit ) Ġ= Ġproperties Annotation . block () Ċ Ċ interface ĠCompile Test Component Ġ{ ĊĠĠĠ Ġabstract Ġval Ġcompile Test : ĠCompile Test Ċ } Ċ Ċ interface ĠAnnot ated Container Ġ: ĠCompile Test Component Ġ{ ĊĠĠĠ Ġfun Ġadd ( annotation : ĠString ) Ċ } Ċ Ċ interface ĠClass Container Ġ: ĠCompile Test Component Ġ{ ĊĠĠĠ Ġfun Ġadd ( klass : ĠCompile Class ) Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAnnotation > ĠAnnot ated Container . add ( annotation : ĠK Class < T >, Ġvar arg Ġparameter : ĠString , Ġimport : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġif Ġ( import ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( annotation ) ĊĠĠĠĠĠĠĠ Ġannotation . simple Name !! ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġannotation . qualified Name !! ĊĠĠĠ Ġ} ĊĠĠĠ Ġadd ( parameter . join ToString ( prefix Ġ= Ġ"$ name (", Ġpostfix Ġ= Ġ") ")) Ċ } Ċ Ċ class ĠImports ( override Ġval Ġcompile Test : ĠCompile Test ) Ġ: ĠCompile Test Component Ġ{ ĊĠĠĠ Ġval Ġimports : ĠHashSet < String > Ġ= ĠHashSet () ĊĠĠĠ Ġfun Ġimport ( type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġimports . add (" import Ġ$ type ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimport ( type : ĠK Class <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġimport ( type . qualified Name !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠEnum < T >> Ġimport Enum ( enum : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġimport ("${ enum :: class . qualified Name !! }. $ enum ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠK Class <* >. unary Plus () Ġ= Ġimport ( this ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( import Ġin Ġimports ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( import ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFile Annotations ( override Ġval Ġcompile Test : ĠCompile Test ) Ġ: ĠAnnot ated Container Ġ{ ĊĠĠĠ Ġval Ġstatements : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġoverride Ġfun Ġadd ( annotation : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatements . add ("@ file :$ annotation ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( statement Ġin Ġstatements ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( statement ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠProperties Annotation ( override Ġval Ġcompile Test : ĠCompile Test ) Ġ: ĠCompile Test Component Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperty Annotation Name Ġ= ĠProperties :: class . qualified Name !! ĊĠĠĠĠĠĠĠ Ġval Ġproperties Visibility Name Ġ= ĠProperties . Properties Visibility :: class . qualified Name !! ĊĠĠĠĠĠĠĠ Ġval Ġgeneration St ance Name Ġ= ĠGeneration St ance :: class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġvisibility Ġ= Ġ"" ĊĠĠĠ Ġvar Ġgenerate Blocking Ġ= Ġ"" ĊĠĠĠ Ġvar Ġgenerate Async Ġ= Ġ"" ĊĠĠĠ Ġvar Ġcascade : ĠBoolean ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġimport Annotation Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( property Annotation Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . imports . remove If Ġ{ Ġit . contains ( property Annotation Name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( property Annotation Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisibility ( ĊĠĠĠĠĠĠĠ Ġvisibility : ĠProperties . Properties Visibility , ĊĠĠĠĠĠĠĠ Ġimport : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġcomplete Import : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete Import Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . visibility Ġ= Ġvisibility . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . import Enum ( visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . visibility Ġ= Ġ" Properties Visibility .$ visibility " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( properties Visibility Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . visibility Ġ= Ġ"${ properties Visibility Name }. $ visibility " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgeneration St ance ( generation St ance : ĠGeneration St ance , Ġimport : ĠBoolean , Ġcomplete Import : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete Import Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . import Enum ( generation St ance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration St ance . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( generation St ance Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Generation St ance .$ generation St ance " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ generation St ance Name .$ generation St ance " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Blocking ( generation St ance : ĠGeneration St ance , Ġimport : ĠBoolean Ġ= Ġtrue , Ġcomplete Import : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenerate Blocking Ġ= Ġgeneration St ance ( generation St ance , Ġimport , Ġcomplete Import ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Async ( generation St ance : ĠGeneration St ance , Ġimport : ĠBoolean Ġ= Ġtrue , Ġcomplete Import : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenerate Async Ġ= Ġgeneration St ance ( generation St ance , Ġimport , Ġcomplete Import ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("@ Properties (" ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visibility . isNotBlank ()) Ġappend ( visibility ). append (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( generate Blocking . isNotBlank ()) Ġappend ( generate Blocking ). append (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( generate Async . isNotBlank ()) Ġappend ( generate Async ). append (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cascade Ġ!= Ġnull ) Ġappend ( cascade ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (' )') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠCompile Class ( val Ġname : ĠString , Ġoverride Ġval Ġcompile Test : ĠCompile Test ) Ġ: ĠClass Container , ĠAnnot ated Container Ġ{ ĊĠĠĠ Ġval Ġannotations : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġval Ġclasses : ĠMutable List < Compile Class > Ġ= ĠArrayList () ĊĠĠĠ Ġval Ġconstructor Ġ= ĠPrimary Constructor ( compile Test ) ĊĠĠĠ Ġvar Ġtype Modifier Ġ= Ġ" class " ĊĠĠĠ Ġval Ġmodifiers : ĠMutable List < String > Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( annotation : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġannotations . add ("@ $ annotation ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( klass : ĠCompile Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses . add ( klass ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ modifiers . join ToString ( separator Ġ= Ġ"") } Ġ$ type Modifier Ġ$ name Ġ$ constructor Ġ{ Ġ\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( klass Ġin Ġclasses ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( klass ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (' }') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠProperties Class ( name : ĠString , Ġcompile Test : ĠCompile Test ) Ġ: ĠCompile Class ( name , Ġcompile Test ) Ġ{ ĊĠĠĠ Ġval Ġproperties Annotation Ġ= ĠProperties Annotation ( compile Test ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ properties Annotation \ n ${ super . toString () }" ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPrimary Constructor ( override Ġval Ġcompile Test : ĠCompile Test ) Ġ: ĠAnnot ated Container Ġ{ ĊĠĠĠ Ġval Ġannotations : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġval Ġparameters : ĠMutable List < String > Ġ= ĠArrayList () ĊĊĠĠĠ Ġfun Ġadd Property ( name : ĠString , Ġtype : ĠK Class <* >, Ġis Var : ĠBoolean Ġ= Ġfalse , Ġis Val : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompile Test . imports . import ( type ) ĊĠĠĠĠĠĠĠ Ġval Ġmodifier Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Var Ġ-> Ġ" var Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Val Ġ-> Ġ" val " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparameters . add ("$ modifier $ name : Ġ${ type . simple Name !! }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠParam ( name : ĠString , Ġtype : ĠK Class <* >) Ġ= Ġadd Property ( name , Ġtype ) ĊĠĠĠ Ġfun ĠVar ( name : ĠString , Ġtype : ĠK Class <* >) Ġ= Ġadd Property ( name , Ġtype , Ġis Var Ġ= Ġtrue ) ĊĠĠĠ Ġfun ĠVal ( name : ĠString , Ġtype : ĠK Class <* >) Ġ= Ġadd Property ( name , Ġtype , Ġis Val Ġ= Ġtrue ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( annotation : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġannotations . add ("@ $ annotation ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ annotations . join ToString ( separator Ġ= Ġ" Ġ" )} Ġpublic Ġconstructor (${ parameters . join ToString () })" ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠKotlin Compilation . Result . test Class (): ĠK Class < *> Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġclass Loader . load Class (" TestClass "). kotlin ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" TestClass Ġwas Ġnot Ġcompiled ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠK Class <* >. find Factory Implementation (): ĠK Class < *> Ġ{ ĊĠĠĠ Ġreturn Ġnested Classes . first OrNull Ġ{ Ġit . simple Name Ġ== Ġ" Properties Factory " Ġ&& Ġit . object Instance Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" no Ġfactory Ġimplementation Ġfound ") Ċ } Ċ Ċ data Ġclass ĠLoading Methods ( val Ġblocking Loader : ĠK Function < *> ?, Ġval Ġasync Loader : ĠK Function < *> ?) Ċ Ċ fun ĠK Class <* >. loading Methods (): ĠLoading Methods Ġ{ ĊĠĠĠ Ġvar Ġblocking Load : ĠK Function < *> ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġasync Load : ĠK Function < *> ? Ġ= Ġnull ĊĠĠĠ Ġcompanion Object ?. declared Functions ?. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġ" load " Ġ&& Ġit . parameters . size Ġ== Ġ 1 Ġ&& Ġit . returnType Ġ== Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . parameters . first (). type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Loader :: class Ġ-> Ġblocking Load Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Property Loader :: class Ġ-> Ġasync Load Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠLoading Methods ( blocking Load , Ġasync Load ) Ċ } ĊĊ