package Ġno . apps . bed rock . di . cond uctor Ċ Ċ import Ġcom . blue lin el abs . cond uctor . Controller Ċ import Ġdagger . android . Has Android Injector Ċ import Ġdagger . internal . Preconditions Ċ Ċ object ĠConduct or Injection Ġ{ ĊĠĠĠ Ġfun Ġinject ( controller : ĠController ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPreconditions . checkNotNull ( controller , Ġ" controller ") ĊĠĠĠĠĠĠĠ Ġval Ġhas Dispatch ing Controller Injector Ġ= Ġfind Has Controller Injector ( controller ) ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Injector Ġ= Ġhas Dispatch ing Controller Injector . android Injector () ĊĠĠĠĠĠĠĠ ĠPreconditions . checkNotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller Injector , Ġ"% s . controller Injector () Ġreturned Ġnull ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Dispatch ing Controller Injector . java Class . canonical Name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcontroller Injector . inject ( controller ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Has Controller Injector ( controller : ĠController ): ĠHas Android Injector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfind Injector Parent ( controller ) Ġ?: Ġcontroller . activity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ? ĠHas Android Injector ) Ġ?: Ġ( it . application Ġas ? ĠHas Android Injector ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" No Ġinjector Ġwas Ġfound Ġfor Ġ${ controller . java Class . canonical Name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġtail rec Ġfun Ġfind Injector Parent ( controller : ĠController ): ĠHas Android Injector ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġparent Controller Ġ= Ġcontroller . parent Controller Ġ?: Ġreturn Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHas Android Injector Ġ-> Ġparent Controller ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfind Injector Parent ( parent Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }