docs: private void validateTimeoutCallbackMethod(BeanMetaData bmd, MethodMap.MethodInfo methodInfo) // d666251
                      throws EJBConfigurationException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "validateTimeoutCallbackMethod : " + methodInfo.getMethod());
  
          Method method = methodInfo.getMethod();
          String specificCause = "";
  
          int modifiers = method.getModifiers();
          if (Modifier.isStatic(modifiers)) {
              specificCause += " The 'static' modifier is not allowed.";
          }
  
          if (Modifier.isFinal(modifiers)) {
              specificCause += " The 'final' modifier is not allowed.";
          }
  
          if (method.getReturnType() != Void.TYPE) {
              specificCause += " The return type must be 'void'.";
          }
  
          if (!hasTimeoutCallbackParameters(methodInfo)) {
              specificCause += " The method must take 0 parameters or a Timer parameter.";
          }
  
          if (!hasEmptyThrowsClause(method)) {
              specificCause += " The method must not throw any exceptions.";
          }
  
          if (!"".equals(specificCause)) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "validateTimeoutCallbackMethod :" + specificCause);
  
              Tr.error(tc, "INVALID_TIMEOUT_CALLBACK_SIGNATURE_CNTR0209E",
                       new Object[] { bmd.enterpriseBeanName, bmd._moduleMetaData.ivName, method });
              throw new EJBConfigurationException("CNTR0327E: The " + method +
                                                  " method does not have the required method signature for a" +
                                                  " timeout callback method." + specificCause);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "validateTimeoutCallbackMethod : valid");
      }