I don't know that the name mangling is useful here (or pretty much anywhere). Going down that path, the implementation in `__getstate__` needlessly prohibits subclassing.

Just returning `provider_factory(self._provider_name)` is good enough, with a comment explaining why we don't cache the resulting instance. If possible, avoid having to do anything with `__getstate__` by relying on dynamic getters.