docs: private Map<Method, ArrayList<EJBMethodInfoImpl>> createEJBMethodInfoMap(final BeanMetaData bmd, final Method[] allMethodsOfEJB) {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.entry(tc, "createEJBMethodInfoMap: " + bmd.enterpriseBeanName);
          }
  
          final HashMap<Method, ArrayList<EJBMethodInfoImpl>> map = new HashMap<Method, ArrayList<EJBMethodInfoImpl>>();
  
          // Determine which public methods of the EJB are business methods
          // and populate the EJBMethodInfo map with entries for each business method.
          if (bmd.isMessageDrivenBean()) {
              // As described section 5.4.9 Message Listener Interceptor Methods for Message-Driven
              // Beans, the AroundInvoke business method interceptor methods are supported for
              // message-driven beans. These interceptor methods may be defined on the bean class
              // or on a interceptor class and apply to the handling of the invocation of the
              // bean's message listener method(s).  Therefore, only the methods of the
              // message listener interface need to be processed.
              EJBMethodInfoImpl[] methodInfos = bmd.localMethodInfos;
              for (Method method : allMethodsOfEJB) {
                  EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(methodInfos, method); //d494984.1
                  if (info != null) {
                      ArrayList<EJBMethodInfoImpl> list = new ArrayList<EJBMethodInfoImpl>();
                      list.add(info);
                      map.put(method, list);
                  }
              }
          } else if (bmd.isSessionBean() || bmd.isManagedBean()) {
              // As described in section 4.3.9 Business Method Delegation, the session bean's
              // business interface, component interface, or web service endpoint defines the
              // business methods callable by a client.  Therefore, only process methods
              // of business, component, and webservices interfaces.
              EJBMethodInfoImpl[] localInfos = bmd.localMethodInfos;
              EJBMethodInfoImpl[] remoteInfos = bmd.methodInfos;
              EJBMethodInfoImpl[] webServiceInfos = bmd.wsEndpointMethodInfos;
  
              for (Method method : allMethodsOfEJB) {
                  ArrayList<EJBMethodInfoImpl> list = new ArrayList<EJBMethodInfoImpl>();
                  if (localInfos != null) {
                      EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(localInfos, method); //d494984.1
                      if (info != null) {
                          list.add(info);
                      }
                  }
                  if (remoteInfos != null) {
                      EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(remoteInfos, method); //d494984.1
                      if (info != null) {
                          list.add(info);
                      }
                  }
                  if (webServiceInfos != null) {
                      EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(webServiceInfos, method); //d494984.1
                      if (info != null) {
                          list.add(info);
                      }
                  }
                  if (!list.isEmpty()) {
                      map.put(method, list);
                  }
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.exit(tc, "createEJBMethodInfoMap: " + bmd.enterpriseBeanName);
          }
          return map;
      }