docs: public static PlanExecutor createRemoteExecutor(String hostname, int port, Configuration clientConfiguration,
  			List<URL> jarFiles, List<URL> globalClasspaths) {
  		if (hostname == null) {
  			throw new IllegalArgumentException("The hostname must not be null.");
  		}
  		if (port <= 0 || port > 0xffff) {
  			throw new IllegalArgumentException("The port value is out of range.");
  		}
  		
  		Class<? extends PlanExecutor> reClass = loadExecutorClass(REMOTE_EXECUTOR_CLASS);
  		
  		List<URL> files = (jarFiles == null) ?
  				Collections.<URL>emptyList() : jarFiles;
  		List<URL> paths = (globalClasspaths == null) ?
  				Collections.<URL>emptyList() : globalClasspaths;
  
  		try {
  			PlanExecutor executor = (clientConfiguration == null) ?
  					reClass.getConstructor(String.class, int.class, List.class)
  						.newInstance(hostname, port, files) :
  					reClass.getConstructor(String.class, int.class, Configuration.class, List.class, List.class)
  						.newInstance(hostname, port, clientConfiguration, files, paths);
  			return executor;
  		}
  		catch (Throwable t) {
  			throw new RuntimeException("An error occurred while loading the remote executor ("
  					+ REMOTE_EXECUTOR_CLASS + ").", t);
  		}
  	}