package org.checkerframework.framework.qual;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* An annotation on a SourceChecker subclass to specify types of interest to the checker. If a
* checker is not annotated with this annotation, then the checker is interested in all types.
*
* <p>{@code Object[].class} implies that the checker is interested in all array types; all other
* array classes are ignored. A boxed type, such as {@code Integer.class}, implies that the checker
* is interested in both the boxed type, {@code Integer}, and the unboxed, primitive type, {@code
* int}.
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface RelevantJavaTypes {
/**
* Classes that are relevant to the checker. {@code Object[].class} implies that the checker is
* interested in all array types; all other array classes are ignored. A boxed type, such as
* {@code Integer.class}, implies that the checker is interested in both the boxed type, {@code
* Integer}, and the unboxed, primitive type, {@code int}.
*/
Class<?>[] value();
}