code: public BeanMetaData createBeanMetaData(BeanInitData bid, EJBModuleMetaDataImpl mmd) // d640935
                      throws EJBConfigurationException, ContainerException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "createBeanMetaData: " + bid.ivJ2EEName);
  
          BeanMetaData bmd = ivEJBMDOrchestrator.createBeanMetaData(bid, mmd,
                                                                    ivContainer,
                                                                    ivInitAtStartup, ivInitAtStartupSet);
  
          // At this point we have constructed BeanMetaData from the merged WCCM and
          // Annotations metadata.  This seems like a fine spot to validate the merged
          // metadata before we go on to start binding artifacts related to the beans into
          // the name space.  For <= EJB2.1 beans we will put error messages into the
          // log if the metadata is bad.   For >= EJB 3.0 beans we will put out the same
          // error messages, but throw an exception in order to cause application start
          // to fail.  This strategy was chosen to not break existing apps that might be
          // slightly less than perfect, but still working ok as far as the customer was
          // concerned.
          ivEJBMDOrchestrator.validateMergedMetaData(bmd);
  
          // stopModule assumes homeRecord is set before BMD is inserted into
          // EJBModuleMetaDataImpl.ivBeanMetaDatas.                        RTC100347
          bmd.homeRecord = createHomeRecord(bmd, ivContainer.getHomeOfHomes()); // F91481
  
          // Add the BeanMetaData to the module.  This is needed to avoid creating
          // duplicate BMDs during startModule for EJB-in-WAR.
          mmd.ivBeanMetaDatas.put(bmd.enterpriseBeanName, bmd);
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "createBeanMetaData");
  
          return bmd;
      }
docs: Create bean metadata with the specified module and component data. The
  resulting BeanMetaData object is partially initialized; sufficiently that
  remote homes can be bound lazily into the namespace. Before the metadata
  is usable, {@link #finishBMDInit} must be called.