docs: public static Channel newJVM(String displayName, TaskListener listener, JVMBuilder vmb, FilePath workDir, ClasspathBuilder classpath) throws IOException {
          ServerSocket serverSocket = new ServerSocket();
          serverSocket.bind(new InetSocketAddress("localhost",0));
          serverSocket.setSoTimeout((int)TimeUnit.SECONDS.toMillis(10));
  
          // use -cp + FQCN instead of -jar since remoting.jar can be rebundled (like in the case of the swarm plugin.)
          vmb.classpath().addJarOf(Channel.class);
          vmb.mainClass(Launcher.class);
  
          if(classpath!=null)
              vmb.args().add("-cp").add(classpath);
          vmb.args().add("-connectTo","localhost:"+serverSocket.getLocalPort());
  
          listener.getLogger().println("Starting "+displayName);
          Proc p = vmb.launch(new LocalLauncher(listener)).stdout(listener).pwd(workDir).start();
  
          Socket s = serverSocket.accept();
          serverSocket.close();
  
          return forProcess("Channel to "+displayName, Computer.threadPoolForRemoting,
                  new BufferedInputStream(SocketChannelStream.in(s)),
                  new BufferedOutputStream(SocketChannelStream.out(s)),null,p);
      }