This class is designed for plugins to consume
(call its methods).
@PublicApi can expect
that programs compiled against a given version will remain binary compatible with later versions of the
@PublicApi as per each product's API policy as long as the client does not implement/extend
@PublicApi interfaces or classes (refer to each product's API policy for the exact
guarantee---usually binary compatibility is guaranteed at least across minor versions).
interfaces and classes are not designed to be implemented or extended by clients,
we may perform certain types of binary-incompatible changes to these classes and interfaces, but these will not
affect well-behaved clients that do not extend/implement these types (in general, only classes and interfaces
are safe to extend/implement).