package Ġcom . example . core _ data Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġcom . example . core _ utils . di . App Scope Ċ import Ġcom . example . core _ utils . identity Ċ import Ġjavax . inject . Inject Ċ Ċ @ App Scope Ċ class ĠIntent Navigation Manager Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġfun Ġprint HashCode ( postfix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . identity (" Navigation ĠManager Ġ$ postfix ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġclass Map Ġ= Ġmutable Map Of < String , ĠClass <* >>() ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠAny . cast OrNull () Ġ= Ġthis Ġas ? ĠT ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠString . load Class OrNull (): ĠClass < out ĠT >? Ġ= ĊĠĠĠĠĠĠĠ Ġclass Map . get Or Put ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. cast OrNull () ĊĊĠĠĠ Ġfun Ġgo To Feature 2 ( context : ĠContext ) Ġ: ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . example . feature 2 . Feature 2 Activity ". load Class OrNull < Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠIntent ( context , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo To Feature 3 ( context : ĠContext ) Ġ: ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . example . feature 3 . Feature 3 Activity ". load Class OrNull < Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠIntent ( context , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo To Feature 4 ( context : ĠContext ) Ġ: ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . example . feature 4 . Feature 4 Activity ". load Class OrNull < Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠIntent ( context , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Not ĠN eeded Ġas Ġno Ġone Ġis Ġgoing Ġto ĠMain Ġactivity Ġthemselves Ċ // ĠĠĠ Ġfun Ġgo To MainActivity ( context : ĠContext ) Ġ: ĠIntent ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġ" com . example . android _ playground . MainActivity ". load Class OrNull < Activity >() Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠIntent ( context , Ġit ) Ġ} Ċ // ĠĠĠ Ġ} Ċ }