@Documented @Retention(value=RUNTIME) @Target(value={TYPE_USE,TYPE_PARAMETER}) public @interface Dependent
Example: Consider a field, lock, that is only initialized if the enclosing
 object (the receiver), is marked as ThreadSafe. Such a field can be declared as:
 
 private @Nullable @Dependent(result=NonNull.class, when=ThreadSafe.class)
   Lock lock;
 | Modifier and Type | Required Element and Description | 
|---|---|
| Class<? extends Annotation> | resultThe class of the refined qualifier to be applied. | 
| Class<? extends Annotation> | whenThe qualifier class of the receiver that causes the  resultqualifier to be applied. | 
public abstract Class<? extends Annotation> result
public abstract Class<? extends Annotation> when
result qualifier to be applied.