code: public JobSubmissionResult run(JobWithJars jobWithJars, int parallelism, SavepointRestoreSettings savepointSettings)
  			throws CompilerException, ProgramInvocationException {
  		ClassLoader classLoader = jobWithJars.getUserCodeClassLoader();
  		if (classLoader == null) {
  			throw new IllegalArgumentException("The given JobWithJars does not provide a usercode class loader.");
  		}
  
  		OptimizedPlan optPlan = getOptimizedPlan(compiler, jobWithJars, parallelism);
  		return run(optPlan, jobWithJars.getJarFiles(), jobWithJars.getClasspaths(), classLoader, savepointSettings);
  	}
docs: Runs a program on the Flink cluster to which this client is connected. The call blocks until the
  execution is complete, and returns afterwards.
  
  @param jobWithJars The program to be executed.
  @param parallelism The default parallelism to use when running the program. The default parallelism is used
  when the program does not set a parallelism by itself.
  
  @throws CompilerException Thrown, if the compiler encounters an illegal situation.
  @throws ProgramInvocationException Thrown, if the program could not be instantiated from its jar file,
  or if the submission failed. That might be either due to an I/O problem,
  i.e. the job-manager is unreachable, or due to the fact that the
  parallel execution failed.