private EntryPoint acquire(final RunningInfo info) throws Exception {
    EntryPoint result = RemoteUtil.executeWithClassLoader(() -> {
      Registry registry = LocateRegistry.getRegistry(info.host, info.port, getClientSocketFactory());
      Remote remote = Objects.requireNonNull(registry.lookup(info.name));

      if (myValueClass.isInstance(remote)) {
        EntryPoint entryPoint = myValueClass.cast(remote);
        return RemoteUtil.substituteClassLoader(entryPoint, myValueClass.getClassLoader());
      }
      else {
        return RemoteUtil.castToLocal(remote, myValueClass);
      }
    }, getClass().getClassLoader()); // should be the loader of client plugin
    // init hard ref that will keep it from DGC and thus preventing from System.exit
    info.entryPointHardRef = result;
    return result;
  }
private EntryPoint acquire(final RunningInfo info)