package Ġnz . co . j ed sim son . lg p . core . environment Ċ Ċ import Ġnz . co . j ed sim son . lg p . core . modules . Module Ċ Ċ /** Ċ Ġ* ĠA Ġbuilder Ġthat Ġcan Ġbuild Ġa Ġ[ Component Loader ]. Ċ Ġ* Ċ Ġ* ĠPri mar ily Ġused Ġwhen Ġcreating Ġan Ġimplementation Ġof Ġ[ Component Loader ] Ġso Ġthat Ġthe Ġloader Ċ Ġ* Ġprovides Ġa Ġsimple Ġway Ġto Ġbe Ġbuilt , Ġparticularly Ġwhen Ġused Ġthrough ĠJava . ĠIn ĠKotlin , Ġit Ġis Ċ Ġ* Ġpreferred Ġto Ġuse Ġnamed Ġarguments Ġto Ġthe Ġconstructor Ġof Ġthe Ġloader . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT Component Loader ĠA Ġtype Ġthat Ġthis Ġbuilder Ġis Ġresponsible Ġfor Ġbuilding . Ċ Ġ*/ Ċ interface ĠComponent Loader Builder < out ĠT Component Loader > Ġ{ ĊĠĠĠ Ġfun Ġbuild (): ĠT Component Loader Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Module ] Ġthat Ġis Ġable Ġto Ġload Ġcomponents . Ċ Ġ* Ċ Ġ* ĠThe Ġimplement er Ġcontrols Ġhow Ġa Ġcomponent Ġthe Ġloader Ġis Ġresponsible Ġfor Ġis Ġloaded Ċ Ġ* Ġand Ġconsumers Ġshould Ġbe Ġind ifferent Ġto Ġthe Ġimplementation Ġdetails . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT Component ĠThe Ġtype Ġof Ġcomponent Ġthat Ġthis Ġloader Ġis Ġable Ġto Ġload . Ċ Ġ*/ Ċ interface ĠComponent Loader < out ĠT Component > Ġ: ĠModule Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġa Ġcomponent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ returns ĠA Ġcomponent Ġof Ġtype Ġ[ T Component ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload (): ĠT Component Ċ } Ċ Ċ /** Ċ Ġ* ĠException Ġgiven Ġwhen Ġa Ġ[ Component Loader ] Ġfails Ġto Ġload Ġthe Ġcomponent Ġit Ġis Ġresponsible Ġfor Ġloading . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmessage ĠA Ġmessage Ġthat Ġdescribes Ġwhat Ġcaused Ġthe Ġcomponent Ġloading Ġto Ġfail . Ċ Ġ* Ġ@ param Ġinner Exception ĠAn Ġoptional Ġexception Ġthat Ġwas Ġthe Ġcause Ġof Ġthe Ġcomponent Ġload Ġfailure . Ċ Ġ*/ Ċ class ĠComponent Load Exception ( message : ĠString , Ġinner Exception : ĠException ?) Ġ: ĠException ( message , Ġinner Exception )