@Retention(value=RUNTIME)
 @Target(value=TYPE)
 @Documented
public static @interface ProductionSubcomponent.Factory
This follows all the rules of Component.Factory, except it must appear in classes
 annotated with ProductionSubcomponent instead of Component.
 
If a subcomponent defines a factory, its parent component(s) will have a binding for that factory type, allowing an instance that factory to be injected or returned from a method on that component like any other binding.