package Ġcom . ole k dia . mvp Ċ Ċ interface ĠI Component Provider < T Ġ: ĠIL ifecycle Component > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġpreviously Ġexisting Ġcomponent , Ġor Ġnew Ġcomponent Ġif Ġit Ġwasn 't Ġcreated Ġbefore ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< C Ġ: ĠT > Ġget OrCreate ( component Id : ĠString ): ĠC ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġpreviously Ġexisting Ġcomponent , Ġor Ġnew Ġcomponent Ġif Ġit Ġwasn 't Ġcreated Ġbefore . ĊĠĠĠĠ Ġ* ĠIt Ġwill Ġreturn Ġdifferent Ġinstances Ġfor Ġdifferent Ġparameters Ġwith Ġsame Ġid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< C Ġ: ĠT > Ġget OrCreate ( component Id : ĠString , Ġparam : ĠString ?): ĠC ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġpreviously Ġexisting Ġcomponent , Ġor Ġnull Ġif Ġit Ġwasn 't Ġcreated Ġbefore ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġ< C Ġ: ĠT > Ġget ( component Id : ĠString ): ĠC ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġpreviously Ġexisting Ġcomponent , Ġor Ġnull Ġif Ġit Ġwasn 't Ġcreated Ġbefore . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġ< C Ġ: ĠT > Ġget ( component Id : ĠString , Ġparam : ĠString ?): ĠC ? Ċ }