Annotation Interface AssistedInject
Note that an assisted injection type cannot be scoped. In addition, assisted injection
 requires the use of a factory annotated with AssistedFactory (see the example below).
 
Example usage:
Suppose we have a type, DataService, that has two dependencies: DataFetcher
 and Config. When creating DataService, we would like to pass in an instance of
 Config manually rather than having Dagger create it for us. This can be done using
 assisted injection.
 
To start, we annotate the DataService constructor with AssistedInject and we
 annotate the Config parameter with Assisted, as shown below:
 
   final class DataService {
     private final DataFetcher dataFetcher;
     private final Config config;
     @AssistedInject
     DataService(DataFetcher dataFetcher, @Assisted Config config) {
       this.dataFetcher = dataFetcher;
       this.config = config;
     }
   }
 
 Next, we define a factory for the assisted type, DataService, and annotate it with
 AssistedFactory. The factory must contain a single abstract, non-default method which
 takes in all of the assisted parameters (in order) and returns the assisted type.
 
   @AssistedFactory
   interface DataServiceFactory {
     DataService create(Config config);
   }
 
 Dagger will generate an implementation of the factory and bind it to the factory type. The factory can then be used to create an instance of the assisted type:
   class MyApplication {
     @Inject DataServiceFactory dataServiceFactory;
     dataService = dataServiceFactory.create(new Config(...));
   }