@Target(value=TYPE)
public @interface OptionalInject
AndroidEntryPoint-annotated activity / fragment /
 view / etc, allows injection to occur optionally based on whether or not the application is using
 Hilt.
 When using this annotation, you can use OptionalInjectCheck.wasInjectedByHilt(androidx.activity.ComponentActivity) to check
 at runtime if the annotated class was injected by Hilt. Additionally, this annotation will also
 cause a method, wasInjectedByHilt to be generated in the Hilt base class as well, that
 behaves the same as OptionalInjectCheck.wasInjectedByHilt(androidx.activity.ComponentActivity). The method is available to
 users that extend the Hilt base class directly and don't use the Gradle plugin.
 
Example usage:
  @OptionalInject
  @AndroidEntryPoint
 public final class MyFragment extends Fragment {
    @Inject Foo foo;
    @Override
   public void onAttach(Activity activity) {
     // Injection will happen here, but only if the Activity and the Application are also
     // AndroidEntryPoints and were injected by Hilt.
     super.onAttach(activity);
     if (!OptionalInjectCheck.wasInjectedByHilt(this)) {
       // Get Dagger components the previous way and inject.
     }
   }
 }
 
 This is useful for libraries that have to support Hilt users as well as non-Hilt users.
 Injection will happen if the parent type (e.g. the activity of a fragment) is an AndroidEntryPoint annotated class and if that parent was also injected via
 Hilt.
OptionalInjectCheck, 
Optional injection