docs: public static boolean getAsynchronousMethods(Method[] beanMethods,
                                                   boolean[] asynchMethodFlags,
                                                   MethodInterface methodInterface)
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "getAsynchronousMethods");
  
          Asynchronous asynchAnnotation = null;
          boolean asynchMethodFound = false;
  
          if (methodInterface != MethodInterface.SERVICE_ENDPOINT) { //d599046
              for (int i = 0; i < beanMethods.length; i++)
              {
                  // Check to make sure this beanMethod is not null because it can be if the method
                  // was a remove method.  Remove methods get special handling.
                  if (beanMethods[i] != null) {
  
                      // Only get the value from annotations if it is not already set by WCCM.  There is no way to
                      // turn off the asynchronous setting using annotations or xml (ie. it can only be turned on).
                      if (asynchMethodFlags[i] == false)
                      {
                          asynchAnnotation = null;
  
                          // Try to get method level annotation
                          asynchAnnotation = beanMethods[i].getAnnotation(Asynchronous.class);
  
                          if (asynchAnnotation == null)
                          {
                              // Method level annotation not found so check for class level annotation
                              asynchAnnotation = beanMethods[i].getDeclaringClass().getAnnotation(Asynchronous.class);
  
                              if (isTraceOn && tc.isDebugEnabled() &&
                                  asynchAnnotation != null) {
  
                                  // Class level @Asynchronous annotation found
                                  Tr.debug(tc, "The " + beanMethods[i].getName() + " method on the " +
                                               beanMethods[i].getDeclaringClass().getName() + " bean is configured asynchronous at the class level");
                              }
                          } else {
  
                              // Method level @Asynchronous annotation found
                              if (isTraceOn && tc.isDebugEnabled()) {
                                  Tr.debug(tc, "The " + beanMethods[i].getName() + " method on the " +
                                               beanMethods[i].getDeclaringClass().getName() + " bean is configured asynchronous at the method level");
                              }
                          }
  
                          // Update array of asynch methods with true or false for the current method
                          if (asynchAnnotation != null)
                          {
                              asynchMethodFlags[i] = true;
                              asynchMethodFound = true;
                          } else {
                              asynchMethodFlags[i] = false;
                          }
  
                      } // no annotation at method level
  
                  } else {
  
                      // bean method is null so set asynch method array entry to false (ie. the default value)
                      // F743-4582 Update - do not set this to false, as it would overwrite the value from WCCM
                      //asynchMethodFlags[i] = false;
                  }
              } // for all bean methods
          } // end if (methodInterface != MethodInterface.SERVICE_ENDPOINT)
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.exit(tc, "getAsynchonousMethods");
          }
          return (asynchMethodFound);
  
      }