code: public BusinessRemoteWrapper getRemoteBusinessWrapper(WrapperId wrapperId)
      {
          int remoteIndex = wrapperId.ivInterfaceIndex;
          BusinessRemoteWrapper wrapper = null;
          String wrapperInterfaceName = "";
          if (remoteIndex < ivBusinessRemote.length)
          {
              wrapper = ivBusinessRemote[remoteIndex];
              wrapperInterfaceName = ivBMD.ivBusinessRemoteInterfaceClasses[remoteIndex].getName();
          }
  
          // Is the BusinessRemoteWrapper for the correct interface name?
          String interfaceName = wrapperId.ivInterfaceClassName;
          if ((wrapper == null) || (!wrapperInterfaceName.equals(interfaceName)))
          {
              // Nope, index must be invalid, so we need to search the entire
              // array to find the one that matches the desired interface name.
              // Fix up the WrapperId with index that matches this server.
              wrapper = null;
              for (int i = 0; i < ivBusinessRemote.length; ++i)
              {
                  wrapperInterfaceName = ivBMD.ivBusinessRemoteInterfaceClasses[i].getName();
                  if (wrapperInterfaceName.equals(interfaceName))
                  {
                      // This is the correct wrapper.
                      remoteIndex = i;
                      wrapper = ivBusinessRemote[remoteIndex];
                      wrapperId.ivInterfaceIndex = remoteIndex;
                      break;
                  }
              }
              // d739542 Begin
              if (wrapper == null) {
                  throw new IllegalStateException("Remote " + interfaceName + " interface not defined");
              }
              // d739542 End
          }
  
          registerServant(wrapper, remoteIndex);
  
          return wrapper;
      }
docs: d419704 - rewrote for new WrapperId fields and remove the todo.