ModuleManager
The ModuleManager is responsible for managing Module implementations throughout the Tealium instance lifecycle.
This class provides the means of interacting with other Module implementations, either by fetching a specific Module implementation or by observing which Modules are enabled.
Nothing is emitted while the modules are being created or updated, so a subscriber arriving mid-pass waits for that pass to complete instead of being handed the answer of the previous one. Once emitting, null / emptyList() means the Module is not enabled, never that it has not been created yet. The resolved Modules are emitted again only when they change by identity or order, so a Module reconfigured in place by Module.updateConfiguration is not re-emitted. A value that varies over time for the same Module is not re-emitted: observe it through the Module itself.