docs: @Override
      public Object getObject() throws RemoteObjectInstanceException {
          Object object;
  
          ClassLoader tccl = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
  
              @Override
              public ClassLoader run() {
                  return Thread.currentThread().getContextClassLoader();
              }
  
          });
  
          try {
              Class<?> interfaceToNarrowTo = Class.forName(interfaceNameToNarrowTo, false, tccl);
              object = PortableRemoteObject.narrow(remoteObject, interfaceToNarrowTo);
          } catch (ClassNotFoundException ex) {
              throw new RemoteObjectInstanceException("Failed to find class " + interfaceNameToNarrowTo + " from classloader: " + tccl, ex);
          } catch (ClassCastException ex) {
              throw new RemoteObjectInstanceException("Unable to narrow remote object to " + interfaceNameToNarrowTo, ex);
          }
  
          return object;
      }