docs: static void validateInterfaceBasics(Class<?> wrapperInterface,
                                          EJBWrapperType wrapperType,
                                          String beanName)
                      throws EJBConfigurationException
      {
          // All business and component interfaces must be 'interfaces'!
          // Except the No-Interface View (LocalBean).                     F743-1756
          if (wrapperType != LOCAL_BEAN &&
              wrapperType != MANAGED_BEAN && // F743-34301.1
              !Modifier.isInterface(wrapperInterface.getModifiers()))
          {
              // Log the error and throw meaningful exception.              d457128.2
              Tr.error(tc, "JIT_INTERFACE_NOT_INTERFACE_CNTR5011E",
                       new Object[] { beanName,
                                     wrapperInterface.getName() });
              throw new EJBConfigurationException("Configured " + wrapperType + " interface is not an interface : " +
                                                  wrapperInterface.getName() + " of bean " + beanName);
          }
  
          // This may appear to be a good place to use a 'switch', but using
          // 'switch' with 'enum's performs very poorly, as it involves inner
          // classes, and repeated validation of the types.
  
          if (wrapperType == EJBWrapperType.BUSINESS_LOCAL ||
              wrapperType == EJBWrapperType.BUSINESS_REMOTE)
          {
              Class<?> invalidExtends = getInvalidBusinessExtends(wrapperInterface);
              if (invalidExtends != null)
              {
                  // Log the error and throw meaningful exception.           d457128.2
                  Tr.error(tc, "JIT_INVALID_EXTENDS_JAVAX_EJB_CNTR5012E",
                           new Object[] { beanName,
                                         wrapperInterface.getName(),
                                         invalidExtends.getName() });
                  throw new EJBConfigurationException("Configured " + wrapperType + " interface extends " +
                                                      invalidExtends.getName() + " : " +
                                                      wrapperInterface.getName() + " of bean " + beanName);
              }
  
              if (wrapperType == EJBWrapperType.BUSINESS_LOCAL &&
                  (Remote.class).isAssignableFrom(wrapperInterface))
              {
                  // Log the error and throw meaningful exception.           d457128.2
                  Tr.error(tc, "JIT_INVALID_EXTENDS_REMOTE_CNTR5013E",
                           new Object[] { beanName,
                                         wrapperInterface.getName() });
                  throw new EJBConfigurationException("Configured " + wrapperType + " interface extends " +
                                                      "javax.rmi.Remote : " +
                                                      wrapperInterface.getName() + " of bean " + beanName);
              }
          }
          else if (wrapperType == EJBWrapperType.LOCAL)
          {
              if (!(EJBLocalObject.class).isAssignableFrom(wrapperInterface))
              {
                  // Log the error and throw meaningful exception.           d457128.2
                  Tr.error(tc, "JIT_MUST_EXTEND_EJBLOCAL_CNTR5014E",
                           new Object[] { beanName,
                                         wrapperInterface.getName() });
                  throw new EJBConfigurationException("Configured " + wrapperType + " interface does not extend " +
                                                      (EJBLocalObject.class).getName() + " : " +
                                                      wrapperInterface.getName() + " of bean " + beanName);
              }
          }
          else if (wrapperType == EJBWrapperType.REMOTE)
          {
              if (!(EJBObject.class).isAssignableFrom(wrapperInterface))
              {
                  // Log the error and throw meaningful exception.           d457128.2
                  Tr.error(tc, "JIT_MUST_EXTEND_EJBOBJECT_CNTR5015E",
                           new Object[] { beanName,
                                         wrapperInterface.getName() });
                  throw new EJBConfigurationException("Configured " + wrapperType + " interface does not extend " +
                                                      (EJBObject.class).getName() + " : " +
                                                      wrapperInterface.getName() + " of bean " + beanName);
              }
          }
  
          // The optional WebService Endpoint interface must be Remote.
          // And must not contain any constant declarations.               LI3294-35
          else if (wrapperType == EJBWrapperType.SERVICE_ENDPOINT)
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              {
                  // JAX-RPC must implement Remote, but JAX-WS does not have that
                  // requirement... so just log this information to trace.     d545748
                  if (!(Remote.class).isAssignableFrom(wrapperInterface))
                  {
                      Tr.debug(tc, "Configured " + wrapperType +
                                   " interface does not         extend " +
                                   (Remote.class).getName() + " : " +
                                   wrapperInterface.getName() + " of bean " +
                                   beanName);
                  }
  
                  // WebServices has message CHKW6010E for this condition, but ignores
                  // the problem, so JITDeploy will too... though the condition will
                  // be traced for now.                                        d493833
                  Field[] fields = wrapperInterface.getFields();
                  for (Field field : fields)
                  {
                      int modifier = field.getModifiers();
                      if (Modifier.isStatic(modifier) &&
                          Modifier.isFinal(modifier))
                      {
                          Tr.debug(tc, "Configured " + wrapperType +
                                       " interface declares a constant : " + field.getName() +
                                       " on " + wrapperInterface.getName() +
                                       " of bean " + beanName);
                      }
                  }
              }
          }
  
          // For No-Interface View (LocalBean), the 'interface' is the
          // EJB implementation class, and must just be a valid one.
          // There are some additional requirments on the methods, but the
          // more advanced checking for that will be done when the methods
          // are generated.                                                F743-1756
          else if (wrapperType == LOCAL_BEAN)
          {
              // For performance, the EJB Class will not be validated here,
              // as it is assumed to be validated separately already.
          }
      }