docs: public Object createBusinessObject(String businessInterfaceName,
                                         boolean useSupporting)
                      throws CreateException,
                      RemoteException,
                      ClassNotFoundException,
                      EJBConfigurationException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "createBusinessObject: " + businessInterfaceName); // d367572.7
  
          int localIndex = beanMetaData.getLocalBusinessInterfaceIndex(businessInterfaceName);
          if (localIndex != -1)
          {
              return createLocalBusinessObject(localIndex, null);
          }
  
          int remoteIndex = beanMetaData.getRemoteBusinessInterfaceIndex(businessInterfaceName);
          if (remoteIndex != -1)
          {
              container.getEJBRuntime().checkRemoteSupported(this, businessInterfaceName);
              return createRemoteBusinessObject(remoteIndex, null);
          }
  
          if (useSupporting)
          {
              Class<?> target = beanMetaData.classLoader.loadClass(businessInterfaceName);
              localIndex = beanMetaData.getAssignableLocalBusinessInterfaceIndex(target);
              remoteIndex = beanMetaData.getAssignableRemoteBusinessInterfaceIndex(target);
  
              if (localIndex != -1)
              {
                  if (remoteIndex != -1)
                  {
                      Tr.error(tc, "AMBIGUOUS_REFERENCE_TO_DUPLICATE_INTERFACE_CNTR0155E",
                               new Object[] { beanMetaData.enterpriseBeanName,
                                             beanMetaData._moduleMetaData.ivName,
                                             businessInterfaceName });
                      EJBConfigurationException ejbex = new EJBConfigurationException
                                      ("Another component has an ambiguous reference to interface: " + businessInterfaceName +
                                       " which has both local and remote implementions on bean: " + j2eeName);
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          Tr.debug(tc, "createBusinessObject : " + ejbex);
  
                      throw ejbex;
                  }
  
                  return createLocalBusinessObject(localIndex, null);
              }
  
              if (remoteIndex == -1)
              {
                  Tr.error(tc, "ATTEMPT_TO_REFERENCE_MISSING_INTERFACE_CNTR0154E",
                           new Object[] { beanMetaData.enterpriseBeanName,
                                         beanMetaData._moduleMetaData.ivName,
                                         businessInterfaceName });
                  EJBConfigurationException ejbex = new EJBConfigurationException
                                  ("Another component is attempting to reference local interface: " + businessInterfaceName +
                                   " which is not implemented by bean: " + j2eeName);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      Tr.debug(tc, "createBusinessObject : " + ejbex);
  
                  throw ejbex;
              }
  
              container.getEJBRuntime().checkRemoteSupported(this, businessInterfaceName);
              return createRemoteBusinessObject(remoteIndex, null);
          }
          else
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "createBusinessObject : IllegalStateException : " +
                               "Requested business interface not found : " +
                               businessInterfaceName);
  
              throw new IllegalStateException("Requested business interface not found : " + businessInterfaceName);
          }
      }