@Target(value={TYPE,FIELD,METHOD,CONSTRUCTOR}) @Retention(value=SOURCE) public @interface PublicApi
PublicApi but not with ExtensionPoint are not meant to be
 subclassed in extensions. In this case, the annotation simply signifies that the interface is stable for callers.
 In particular, since it is not meant to be subclassed, new non-default methods may be added to an interface and
 new abstract methods may be added to a class.
 If a class or interface is annotated, then all public and protected fields, methods, and constructors that class
 or interface are considered stable in this sense. If a class is not annotated, but an individual field, method, or
 constructor is annotated, then only that particular field, method, or constructor is considered a public API.
 Classes, fields, method, and constructors _not_ annotated with @PublicApi may be modified or removed
 in any Druid release, unless they are annotated with ExtensionPoint (which implies they are a public API
 as well).ExtensionPointCopyright © 2011–2018. All rights reserved.