anchor.diff:  ** Client proxies
   ** Injection point metadata footnote:[`InjectionPoint.getMember()` is currently not supported.]
   * Scopes and contexts
  -** `@Dependent`, `@ApplicationScoped`, `@Singleton` and `@RequestScoped`
  +** `@Dependent`, `@ApplicationScoped`, `@Singleton`, `@RequestScoped` and `@SessionScoped`
  +** Custom scopes and contexts
   * Interceptors
   ** Business method interceptors: `@AroundInvoke`
   ** Interceptors for lifecycle event callbacks: `@PostConstruct`, `@PreDestroy`, `@AroundConstruct`
  
positive.code: [[limitations]]
  == Limitations
  
  * `@SessionScoped` and `@ConversationScoped` are not supported
  * Custom scopes and contexts are not supported
  * Decorators are not supported
  * Portable Extensions are not supported
  * `BeanManager` - only the following methods are implemented: `getBeans()`, `createCreationalContext()`, `getReference()`, `resolve()`, `getContext()`, `getEvent()` and `createInstance()`
  
negative.code: 
  === Synthetic Beans
  
  Sometimes it is very useful to register a synthetic bean, i.e. a bean that doesn't need to have a corresponding java class.
  In CDI this could be achieved using `AfterBeanDiscovery.addBean()` methods.
  In {project-name} we produce a `BeanRegistrarBuildItem` and leverage the `io.quarkus.arc.processor.BeanConfigurator` API to build a synthetic bean definition.
  
  [source,java]
  ----
  @BuildStep
  BeanRegistrarBuildItem syntheticBean() {
       return new BeanRegistrarBuildItem(new BeanRegistrar() {
  
              @Override
              public void register(RegistrationContext registrationContext) {
                   registrationContext.configure(String.class).types(String.class).qualifiers(new MyQualifierLiteral()).creator(mc -> mc.returnValue(mc.load("foo"))).done();
              }
          }));
  }
  ----
  
  
  NOTE: The output of a `BeanConfigurator` is recorded as bytecode. Therefore there are some limitations in how a synthetic bean instance is created. See also `BeanConfigurator.creator()` methods.
  
  