package Ġxyz . cut ec loud s . earth chan . core . init Ċ Ċ import Ġcom . google . inject . Injector Ċ import Ġorg . reflection s . Reflection s Ċ import Ġxyz . cut ec loud s . earth chan . core . Command Processor And Registry Ċ import Ġxyz . cut ec loud s . earth chan . core . commands . Command Ċ import Ġxyz . cut ec loud s . earth chan . core . commands . IC ommand Ċ import Ġxyz . cut ec loud s . earth chan . extensions . class Of Ċ import Ġxyz . cut ec loud s . earth chan . extensions . invoke Ċ Ċ class ĠBot Initializer ( ĊĠĠĠ Ġreflection s : ĠReflection s Ċ ) Ġ{ ĊĠĠĠ Ġconstructor ( base Package : ĠString ) Ġ: Ġthis ( Reflection s ( base Package )) ĊĊĠĠĠ Ġprivate Ġval Ġcommand Classes : ĠSet < Class < out ĠICommand >> ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . command Classes Ġ= Ġreflection s . getSub Types Of < IC ommand >( class Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter To ( HashSet ()) Ġ{ Ġit . is Annotation Present ( class Of < Command >()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize ( injector : ĠInject or ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregistry : ĠCommand Processor And Registry Ġ= Ġinjector () ĊĊĠĠĠĠĠĠĠ Ġcommand Classes . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand : ĠICommand Ġ= Ġinjector ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġit . getAnnotation < Command >( class Of ()). value ) Ġregistry . register ( k , Ġcommand ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ