docs: public static Class<?> generate_Tie(ClassLoader classLoader,
                                          String remoteClassName,
                                          Class<?> remoteInterface,
                                          String beanName,
                                          ClassDefiner classDefiner,
                                          int rmicCompatible,
                                          boolean portableServer)
                      throws ClassNotFoundException, EJBConfigurationException
      {
          Class<?> rtnClass = null;
          String tieClassName = JIT_Tie.getTieClassName(remoteClassName);
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled(); // d576626
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "generate_Tie: " + tieClassName + " : " + beanName);
  
          ArrayList<Method> compatibilityMethods = new ArrayList<Method>(); // d684761
          Method[] remoteMethods = remoteInterface.getMethods();
          String[] idlNames = getIdlMethodNames(remoteMethods,
                                                remoteInterface, // d576626
                                                compatibilityMethods); // d684761
  
          // Some problems have been found in the way the idlNames were formed,
          // so to support older Stubs (with the incorrect idlNames), the list
          // of idlNames will contain both the correct idlName and the old version
          // where the old version is added to the end of the list.
          // The corresponding method will have also been added to the
          // compatibilityMethods list... and these needed to be added to the
          // end of the list of remoteMethods.                               d684761
          if (compatibilityMethods.size() > 0)
          {
              int length = remoteMethods.length;
              Method[] allMethods = new Method[idlNames.length];
              System.arraycopy(remoteMethods, 0, allMethods, 0, length);
              for (Method extraMethod : compatibilityMethods)
              {
                  allMethods[length++] = extraMethod;
              }
              remoteMethods = allMethods;
          }
  
          try
          {
              byte[] classbytes = JIT_Tie.generateClassBytes(tieClassName,
                                                             remoteClassName,
                                                             remoteInterface,
                                                             remoteMethods,
                                                             idlNames,
                                                             rmicCompatible,
                                                             portableServer);
  
              rtnClass = classDefiner.findLoadedOrDefineClass(classLoader, tieClassName, classbytes);
          } catch (EJBConfigurationException ejbex)
          {
              FFDCFilter.processException(ejbex, CLASS_NAME + ".generate_Tie",
                                          "110");
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "generate_Tie failed: " + ejbex.getMessage());
  
              throw ejbex;
          } catch (Throwable ex)
          {
              FFDCFilter.processException(ex, CLASS_NAME + ".generate_Tie",
                                          "119");
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "generate_Tie failed: " + ex.getMessage());
  
              throw new ClassNotFoundException(tieClassName + " : " + ex.getMessage(), ex);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "generate_Tie: " + rtnClass);
  
          return rtnClass;
      }