@Override public <T>Provider<T> provider(InjectionPoint<T> ip){
  Objects.requireNonNull(ip);
  Provider<T> provider=lookupProvider(ip);
  if (provider != null) {
    return provider;
  }
  provider=autoProvider(ip);
  if (provider != null) {
    return provider;
  }
  return new ProviderNull(ip.key(),-10000,new InjectScopeSingleton());
}

@ Override public < T > Provider < T > provider ( InjectionPoint < T > ip ) { Objects . requireNonNull ( ip ) ; Provider < T > provider = lookupProvider ( ip ) ; if ( provider != null ) { return provider ; } provider = autoProvider ( ip ) ; if ( provider != null ) { return provider ; } return new ProviderNull ( ip . key ( ) , - 10000 , new InjectScopeSingleton ( ) ) ; }
creates an instance provider for a given injectionpoint , such as a method or field .
