docs: public static boolean getXMLAsynchronousMethods(boolean[] asynchMethodFlags,
                                                      MethodInterface methodInterface,
                                                      String[] methodNames,
                                                      Class<?>[][] methodParamTypes,
                                                      EnterpriseBean wccmEnterpriseBean)
                      throws EJBConfigurationException {
  
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          boolean asynchMethodFound = false; //d621123
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.entry(tc, "getXMLAsynchronousMethods", new Object[] {
                                                                      asynchMethodFlags, wccmEnterpriseBean, methodInterface });
          }
  
          //iterate through the asynch-methodTypes in the deployment descriptor
          // and match them with the methods defined in the ejbMethods array.
          // then for each match, set the asynchMethodsFlags array at the same
          // index to true. all others should be false (or left as they were...)
  
          //first verify if all methods are set to asynch (i.e. if the asynch applies
          // to the entire bean)
  
          if (wccmEnterpriseBean.getKindValue() == EnterpriseBean.KIND_SESSION &&
              //d599046 - check SERVICE_ENDPOINT
              methodInterface != MethodInterface.SERVICE_ENDPOINT)
          {
              Session sb = (Session) wccmEnterpriseBean;
              //F00743.9717
              List<AsyncMethod> asynchMethods = sb.getAsyncMethods();
              for (AsyncMethod am : asynchMethods) {
  
                  String methodName = am.getMethodName(); //d603858
                  if (methodName == null || "".equals(methodName.trim())) {
                      //error in ejb-jar.xml! method-name element is required
                      Tr.error(tc, "INVALID_ASYNC_METHOD_ELEMENT_MISSING_METHOD_NAME_CNTR0203E", sb.getName());
                      throw new EJBConfigurationException("Async method declared without a required method-name");
                  }
  
                  List<String> parms = am.getMethodParamList();
  
                  if ("*".equals(methodName) && parms != null) {
                      //error in ejb-jar.xml! cannot specify parms with wildcard method
                      Tr.error(tc, "INVALID_ASYNC_METHOD_ELEMENT_SPECIFIED_PARMS_WITH_WILDCARD_METHOD_CNTR0204E", sb.getName());
                      throw new EJBConfigurationException("Cannot specify parameters when specifying a wildcard method-name for async methods");
                  }
  
                  //style type 1 - unqualified wildcard:
                  if ("*".equals(methodName))
                  {
                      //in this case, all methods are asynchronous:
                      for (int i = 0; i < asynchMethodFlags.length; i++) {
                          asynchMethodFlags[i] = true;
                      }
                      asynchMethodFound = true; //d621123
  
                      //if this is the case, there is no need for further processing
                      if (isTraceOn && tc.isEntryEnabled()) {
                          Tr.exit(tc, "getXMLAsynchronousMethods - all methods are marked async");
                      }
                      return asynchMethodFound; //d621123
                  }
  
                  // if we are here, then methodName is not a wildcard - style type 2 (no parms) & 3 (parms)
  
                  //iterate over method array and check method name and parms (if specified):
                  for (int i = 0; i < methodNames.length; i++) {
                      if (methodNames[i] != null && methodNames[i].equals(methodName)) { //d599046 - null check
                          if (parms == null || DDUtil.methodParamsMatch(parms, methodParamTypes[i])) { // RTC100828
                              asynchMethodFlags[i] = true;
                              asynchMethodFound = true; //d621123
                          }
                      }
                  } // end for (int i=0; i<ejbMethods.length; i++)
              } // end for (AsyncMethod am : asynchMethods)
  
              if (isTraceOn && tc.isDebugEnabled()) {
                  for (int i = 0; i < methodNames.length; i++) {
                      Tr.debug(tc, methodNames[i] + Arrays.toString(methodParamTypes[i]) + " == " + //d599046 - null check
                                   (asynchMethodFlags[i] ? "Asynchronous" : "Synchronous"));
                  }
              }
  
          } // end if (wccmEnterpriseBean.isSession())
          else {
              if (isTraceOn && tc.isDebugEnabled())
                  Tr.debug(tc, "Not a session bean");
          }
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.exit(tc, "getXMLAsynchronousMethods");
          }
          return (asynchMethodFound); //d621123
      }