docs: private <T> void bindInterface(NameSpaceBinder<T> binder,
                                     HomeRecord hr,
                                     HomeWrapperSet homeSet,
                                     int numInterfaces,
                                     boolean singleGlobalInterface,
                                     String interfaceName,
                                     int interfaceIndex,
                                     boolean local) throws NamingException, RemoteException, CreateException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "bindInterface: " + hr.getJ2EEName() +
                           ", " + interfaceIndex +
                           ", " + interfaceName +
                           ", local=" + local);
  
          // Create the object to be bound.
          T bindingObject = binder.createBindingObject(hr, homeSet, interfaceName, interfaceIndex, local);
  
          // Bind the object to configured locations.
          boolean deferred = homeSet == null;
          if (hr.bindToContextRoot()) // F743-34301
          {
              binder.bindBindings(bindingObject, // F69147.2
                                  hr, numInterfaces, singleGlobalInterface,
                                  interfaceIndex, interfaceName, local, deferred);
          }
  
          // Bind session and managed bean objects to java:global/app/module.
          if (hr.bindToJavaNameSpaces()) // F743-34301, d660700
          {
              T javaBindingObject = binder.createJavaBindingObject(hr, homeSet, interfaceName, interfaceIndex, local, bindingObject); // F69147.2
              bindObjectToJavaNameSpaces(binder, javaBindingObject, hr, singleGlobalInterface, interfaceName, interfaceIndex, local);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "bindInterface");
      }