docs: private void initializeBeanMethodTransactionAttributes(boolean isEntity,
                                                             boolean addRemove,
                                                             MethodInterface methodInterface,
                                                             Method[] ejbMethods,
                                                             String[] entityNoTxAttrMethods,
                                                             String[] entityNoTxAttrMethodSignatures,
                                                             List<ContainerTransaction> transactionList,
                                                             List<ActivitySessionMethod> activitySessionList,
                                                             String[] methodNames,
                                                             Class<?>[][] methodParamTypes,
                                                             String[] methodSignatures,
                                                             TransactionAttribute[] transactionAttrs,
                                                             ActivitySessionAttribute[] activitySessionAttrs,
                                                             BeanMetaData bmd) throws EJBConfigurationException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "initializeBeanMethodTransactionAttributes: " + methodInterface);
  
          int numMethods = ejbMethods.length;
          int numExplicitMethods = numMethods - (addRemove ? 1 : 0);
  
          for (int i = 0; i < numExplicitMethods; i++) {
              // For Bean-managed TX (session beans only), initialize method Tx attrs
              // to TX_BEAN_MANAGED.  For other cases, initialize to TX_REQUIRED.
              // FIX_ME (RRS): I made this TX_REQUIRED to conform to the way it was in 4.0.1, but
              // it seems to me that this should perhaps be TX_NOT_SUPPORTED?
              // ejbTimeout must default to REQUIRES_NEW since REQUIRED is not
              // allowed per the EJB Specification.                         LI2281.11
              if (bmd.usesBeanManagedTx)
                  transactionAttrs[i] = TransactionAttribute.TX_BEAN_MANAGED;
  
              // LIDB441.5 - For Bean-managed AS (session beans only), initialize method AS attrs
              // to AS_BEAN_MANAGED.  For other cases, initialize to AS_UNKNOWN.
              activitySessionAttrs[i] = (bmd.usesBeanManagedAS) ? ActivitySessionAttribute.AS_BEAN_MANAGED : ActivitySessionAttribute.AS_UNKNOWN;
          }
  
          int metaMethodElementKind = methodInterface.getValue();
  
          // Only get and check method-level Tx attributes if container is managing Tx
          if (!bmd.usesBeanManagedTx) {
              // Process all Transaction Attributes from WCCM. If there is no transactionList,
              // assume this is an annotations only configuration scenario.
              if (transactionList != null) {
                  MethodAttribUtils.getXMLCMTransactions(transactionAttrs,
                                                         metaMethodElementKind,
                                                         methodNames,
                                                         methodParamTypes,
                                                         transactionList,
                                                         bmd); //PK93643
              }
  
              // Process all Transaction Attributes from Java Annotations,
              // and set defaults for all methods not explicitly configured.
              MethodAttribUtils.getAnnotationCMTransactions(transactionAttrs,
                                                            metaMethodElementKind,
                                                            ejbMethods,
                                                            bmd);
  
              // Per section 11.4.1 of EJB 1.1 spec:
              // - for EntityBeans: getEJBHome, getHandle, getPrimaryKey and isIdentical must be TX_NOT_SUPPORTED
              // - for SessionBeans: all EJBObject interface methods must be TX_NOT_SUPPORTED
              if (isEntity) {
                  MethodAttribUtils.checkTxAttrs(transactionAttrs,
                                                 methodNames,
                                                 methodSignatures, //PQ63130
                                                 entityNoTxAttrMethods,
                                                 entityNoTxAttrMethodSignatures, //PQ63130
                                                 TransactionAttribute.TX_NOT_SUPPORTED);
              } else if (addRemove) {
                  // For Session beans, the only EJBObject or EJBLocalObject method
                  // that could be in the list is the 'remove' method added to the
                  // end.  If it is present, force it to NOT_SUPPORTED.
                  // Note that there may be another 'remove' method in the list from
                  // the business interfaces.... but it is allowed for that one to
                  // have a different transaction attribute.                   d405948
                  transactionAttrs[numExplicitMethods] = TransactionAttribute.TX_NOT_SUPPORTED;
              }
  
              if (methodInterface == MethodInterface.TIMED_OBJECT) {
                  // Per EJB Specification, ejbTimeout must be TX_REQUIRES_NEW or
                  // TX_NOT_SUPPORTED.  However, internally, TX_REQUIRES_NEW will be
                  // implemented as TX_REQUIRED so that the EJB method shares the
                  // global transaction begun by scheduler QOS_ONLYONCE.     LI2281.11
                  // If timerQOSAtLeastOnceForRequired is specified, TX_REQUIRED is
                  // implemented as TX_REQUIRES_NEW, which uses scheduler
                  // QOS_ATLEASTONCE and then begins a new global transaction for the
                  // EJB method as expected.                                 RTC116312
                  for (int i = 0; i < numMethods; i++) {
                      TransactionAttribute txAttr = transactionAttrs[i];
                      if (txAttr == TransactionAttribute.TX_REQUIRES_NEW) {
                          transactionAttrs[i] = TransactionAttribute.TX_REQUIRED;
                      } else if (txAttr == TransactionAttribute.TX_REQUIRED &&
                                 ContainerProperties.TimerQOSAtLeastOnceForRequired) {
                          if (isTraceOn && tc.isDebugEnabled())
                              Tr.debug(tc, "updating " + ejbMethods[i] +
                                           " from TX_REQUIRED to TX_REQUIRES_NEW for QOS_ATLEASTONCE");
                          transactionAttrs[i] = TransactionAttribute.TX_REQUIRES_NEW;
                      }
                  }
              } else if (methodInterface == MethodInterface.LIFECYCLE_INTERCEPTOR &&
                         bmd.type == InternalConstants.TYPE_SINGLETON_SESSION) {
                  // F743-1751 - Like timer methods, lifecycle interceptor methods
                  // translate REQUIRED into REQUIRES_NEW for singleton.
                  for (int i = 0; i < numMethods; i++) {
                      if (transactionAttrs[i] == TransactionAttribute.TX_REQUIRED) {
                          transactionAttrs[i] = TransactionAttribute.TX_REQUIRES_NEW;
                      }
                  }
              }
  
          } else {
  
              if (bmd.wccm.enterpriseBean != null) {
                  MethodAttribUtils.chkBMTFromXML(transactionList, bmd.wccm.enterpriseBean, bmd.j2eeName);//d1414634
              }
  
              // no need to check annotations if all metadata came
              // from xml.
              if (!bmd.metadataComplete) {
                  MethodAttribUtils.chkBMTFromAnnotations(ejbMethods, bmd.j2eeName); //d395828
              }
          }
  
          // Only get method-level Activity Session attributes if container is managing AS
          if (!bmd.usesBeanManagedAS) {
              MethodAttribUtils.getActivitySessions(activitySessionAttrs,
                                                    metaMethodElementKind,
                                                    methodNames,
                                                    methodParamTypes,
                                                    activitySessionList,
                                                    bmd.enterpriseBeanName,
                                                    bmd.usesBeanManagedAS); // LIDB441.5
          } // if !usesBeanManagedAS
          else {
              if (bmd.wccm.enterpriseBean != null) {
                  MethodAttribUtils.chkBMASFromXML(activitySessionList, bmd.wccm.enterpriseBean, bmd.j2eeName);//d141634
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "initializeBeanMethodTransactionAttributes: " + methodInterface);
      }