code: @Override
      public BeanOFactory getBeanOFactory(BeanOFactoryType type, BeanMetaData bmd) {
          BeanOFactory factory = null;
          switch (type) {
              case CM_STATELESS_BEANO_FACTORY:
                  factory = ivCMStatelessBeanOFactory;
                  if (factory == null) {
                      factory = new CMStatelessBeanOFactory();
                      ivCMStatelessBeanOFactory = factory;
                  }
                  break;
  
              case BM_STATELESS_BEANO_FACTORY:
                  factory = ivBMStatelessBeanOFactory;
                  if (factory == null) {
                      factory = new BMStatelessBeanOFactory();
                      ivBMStatelessBeanOFactory = factory;
                  }
                  break;
  
              case CM_STATEFUL_BEANO_FACTORY:
                  factory = ivCMStatefulBeanOFactory;
                  if (factory == null) {
                      factory = new CMStatefulBeanOFactory();
                      ivCMStatefulBeanOFactory = factory;
                  }
                  break;
  
              case BM_STATEFUL_BEANO_FACTORY:
                  factory = ivBMStatefulBeanOFactory;
                  if (factory == null) {
                      factory = new BMStatefulBeanOFactory();
                      ivBMStatefulBeanOFactory = factory;
                  }
                  break;
  
              case SINGLETON_BEANO_FACTORY:
                  factory = ivSingletonBeanOFactory;
                  if (factory == null) {
                      factory = new SingletonBeanOFactory();
                      ivSingletonBeanOFactory = factory;
                  }
                  break;
  
              case MANAGED_BEANO_FACTORY:
                  factory = ivManagedBeanOFactory;
                  if (factory == null) {
                      factory = new ManagedBeanOFactory();
                      ivManagedBeanOFactory = factory;
                  }
                  break;
  
              default:
                  // Not expected this method would ever be called for an unsupported
                  // factory but throw something better than an NPE.
                  throw new UnsupportedOperationException("Bean type not supported in current environment: " + type);
          }
          return factory;
      }
docs: F88119