package Ġcom . e lo uy i . y eb i . feature . user Ċ Ċ import Ġcom . e lo uy i . y eb i . Y eb i Bot Ċ import Ġcom . e lo uy i . y eb i . feature . Attribute Key Ċ import Ġcom . e lo uy i . y eb i . feature . Y eb i Feature Ċ import Ġcom . e lo uy i . y eb i . feature . user . internal . User API Impl Ċ Ċ public Ġclass ĠUser Feature Ġinternal Ġconstructor ( internal Ġval Ġconfig : ĠConfig ){ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscope : ĠY eb i Bot ĊĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġuser API : ĠUser API ĊĊĠĠĠ Ġpublic Ġclass ĠConfig Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject ĠFeature Ġ: ĠY eb i Feature < Config , ĠUser Feature > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġkey : ĠAttribute Key < User Feature > Ġ= ĠAttribute Key (" User Feature ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( block : ĠConfig . () Ġ-> ĠUnit ): ĠUser Feature Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfig (). apply ( block ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUser Feature ( config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinstall ( feature : ĠUser Feature , Ġscope : ĠY eb i Bot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature . scope Ġ= Ġscope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature . user API Ġ= ĠUser API Impl ( scope ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }