docs: public EJBModuleMetaDataImpl createEJBModuleMetaDataImpl(EJBApplicationMetaData ejbAMD, // F743-4950
                                                               ModuleInitData mid,
                                                               SfFailoverCache statefulFailoverCache,
                                                               EJSContainer container) {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "createEJBModuleMetaDataImpl");
  
          EJBJar ejbJar = mid.ivEJBJar;
  
          EJBModuleMetaDataImpl mmd = mid.createModuleMetaData(ejbAMD);
          mmd.ivInitData = mid;
          mmd.ivMetadataComplete = mid.ivMetadataComplete;
          mmd.ivJ2EEName = mid.ivJ2EEName;
          mmd.ivName = mid.ivName;
          mmd.ivAppName = mid.ivAppName;
          mmd.ivLogicalName = mid.ivLogicalName;
          mmd.ivApplicationExceptionMap = createApplicationExceptionMap(ejbJar);
          mmd.ivModuleVersion = ejbJar == null ? BeanMetaData.J2EE_EJB_VERSION_3_0 : ejbJar.getVersionID();
  
          // Determine if the SetRollbackOnly behavior should be as it was in 2.x
          // modules (where SetRollbackOnly would need to be invoked within the
          // actual EJB instance), or use the 3.x behavior (where
          // SetRollbackOnly can be invoke within and ejb instance that is itself
          // invoked from within the ejb instance that began the transaction).
          // For EJB 3.x applications, the LimitSetRollbackOnlyBehaviorToInstanceFor property
          // is usd to indicate that the 2.x behavior should be used.
          // Likewise, 2.x applications can use the ExtendSetRollbackOnlyBehaviorBeyondInstanceFor
          // property to get the 3.x behavior.
          // d461917.1
          if (mmd.ivModuleVersion >= BeanMetaData.J2EE_EJB_VERSION_3_0) {
              if ((LimitSetRollbackOnlyBehaviorToInstanceFor == null) ||
                  (!LimitSetRollbackOnlyBehaviorToInstanceFor.contains(mmd.ivAppName))) {
                  mmd.ivUseExtendedSetRollbackOnlyBehavior = true;
              }
  
          } else { // not a 3.0 module
              if ((ExtendSetRollbackOnlyBehaviorBeyondInstanceFor != null) &&
                  (ExtendSetRollbackOnlyBehaviorBeyondInstanceFor.contains("*") ||
                   ExtendSetRollbackOnlyBehaviorBeyondInstanceFor.contains(mmd.ivAppName))) {
                  mmd.ivUseExtendedSetRollbackOnlyBehavior = true;
              }
          }
  
          // Get the failover instance ID and SFSB Failover value to use for this module if
          // a SfFailoverCache object was created.
          if (statefulFailoverCache != null) {
              mmd.ivSfsbFailover = getSFSBFailover(mmd, container);
              mmd.ivFailoverInstanceId = getFailoverInstanceId(mmd, statefulFailoverCache);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "createEJBModuleMetaDataImpl: " + mmd);
          return mmd;
  
      }