code: @Override
    public <T> Provider<T> provider(Key<T> key)
    {
      Objects.requireNonNull(key);
  
      Provider<T> provider = (Provider) _providerMap.get(key);
  
      if (provider == null) {
        provider = lookupProvider(key);
  
        if (provider == null) {
          provider = autoProvider(key);
        }
  
        _providerMap.putIfAbsent(key, provider);
  
        provider = (Provider) _providerMap.get(key);
      }
  
      return provider;
    }
docs: Returns a bean instance provider for a key.