docs: @SuppressWarnings("unchecked")
      @Override
      public T create(CreationalContext<T> creationalContext) {
          InjectionPoint injectionPoint = getInjectionPoint(beanManager, creationalContext);
  
          // Note the config is cached per thread context class loader
          // This shouldn't matter though as the config object is updated with values dynamically
          // Also means that injecting config does things the same way as calling `getConfig().getValue()`
          Config config = ConfigProvider.getConfig();
  
          T instance = null;
  
          Type ipType = injectionPoint.getType();
          boolean optional = false;
          if (ipType instanceof ParameterizedType) {
              ParameterizedType pType = (ParameterizedType) ipType;
              Type rType = pType.getRawType();
              optional = (rType == Optional.class);
          }
          instance = (T) ConfigProducer.newValue(config, injectionPoint, ipType, optional);
          return instance;
      }