private <T>void addProvider(@NotNull Provider<T> provider) throws ProviderConflictException {
  Class<T> type=provider.type();
  Annotation qualifier=provider.getQualifier();
  String key=PokeHelper.makeProviderKey(type,qualifier);
  addNewKeyToComponent(key,this);
  provider.setComponent(this);
  providers.put(key,provider);
}

private < T > void addProvider ( @ NotNull Provider < T > provider ) throws ProviderConflictException { Class < T > type = provider . type ( ) ; Annotation qualifier = provider . getQualifier ( ) ; String key = PokeHelper . makeProviderKey ( type , qualifier ) ; addNewKeyToComponent ( key , this ) ; provider . setComponent ( this ) ; providers . put ( key , provider ) ; }
add provider to this component and notify the root component this component is managing the provider .
