ProviderOption
One setting a provider (a store's, a dataset backend's) reads from its configuration, as it declares it: its key, what it means (description, the configuration reference's text), the type of its value and its default (null when it has none), and where it may be set (scope). A provider lists every option it reads, and reads each through it, so the host binds, checks and documents exactly those: an option of Scope.TYPE is set for every instance of the provider's type under wow.<type>.<key>, and each instance may set it over that; a key a provider does not declare fails the start, naming the declared ones.
A provider declares its options with the factories (string, duration, int, boolean, enumeration, map). Given a default, a factory returns a Defaulted option, which a config reads as a value that is always there (config.option(o) is a T); without one, the value may be missing (a T?). A map option is a prefix whose sub-keys pass through as they are (properties.* of a client): a config reads it with its options(option). An enumeration lists its values, which the host's configuration metadata offers as hints.
Inheritors
Properties
The values it takes, for an enumeration; empty for any other option.