code: public JobExecutionResult run(JobWithJars prog, int parallelism, boolean wait) throws CompilerException, ProgramInvocationException {
  		return run(getOptimizedPlan(prog, parallelism), prog.getJarFiles(), wait);
  	}
docs: Runs a program on the nephele system whose job-manager is configured in this client's configuration.
  This method involves all steps, from compiling, job-graph generation to submission.
  
  @param prog The program to be executed.
  @param wait A flag that indicates whether this function call should block until the program execution is done.
  @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 execution
  on the nephele system failed.
  @throws JobInstantiationException Thrown, if the plan assembler function causes an exception.