code: public <T> Provider<T> getCurrentInstanceProvider(Key<T> key) {
  		checkArgument(isValidBinding(key), "Cannot get provider for key: %s", key);
  		ThreadLocal<T> threadLocal = (ThreadLocal<T>) threadLocalCache.computeIfAbsent(key, $ ->
  				ThreadLocal.withInitial(() -> getCurrentInstance(key)));
  		return threadLocal::get;
  	}
docs: endregion