@Target(value={TYPE,METHOD,CONSTRUCTOR,FIELD}) @Retention(value=RUNTIME) @Documented public @interface API
@API is used to annotate public types, methods, constructors, and
 fields within a framework or application in order to publish their
 status() and level of stability and to indicate how they are intended
 to be used by consumers() of the API.
 If @API is present on a type, it is considered to hold for all
 public members of the type as well. However, a member of such an annotated
 type is allowed to declare a API.Status of lower stability. For example,
 a class annotated with @API(status = STABLE) may declare a constructor
 for internal usage that is annotated with @API(status = INTERNAL).
| Modifier and Type | Required Element and Description | 
|---|---|
API.Status | 
status
The current status of the API. 
 | 
public abstract API.Status status
public abstract String[] consumers
The supplied packages can be fully qualified package names or patterns containing asterisks that will be used as wildcards.
Defaults to "*", signifying that the API is intended to be
 consumed by any package.