code: public String getDescription() throws ProgramInvocationException {
  		if (ProgramDescription.class.isAssignableFrom(this.mainClass)) {
  			
  			ProgramDescription descr;
  			if (this.program != null) {
  				descr = (ProgramDescription) this.program;
  			} else {
  				try {
  					descr =  InstantiationUtil.instantiate(
  						this.mainClass.asSubclass(ProgramDescription.class), ProgramDescription.class);
  				} catch (Throwable t) {
  					return null;
  				}
  			}
  			
  			try {
  				return descr.getDescription();
  			}
  			catch (Throwable t) {
  				throw new ProgramInvocationException("Error while getting the program description" + 
  						(t.getMessage() == null ? "." : ": " + t.getMessage()), t);
  			}
  			
  		} else {
  			return null;
  		}
  	}
docs: Returns the description provided by the Program class. This
  may contain a description of the plan itself and its arguments.
  
  @return The description of the PactProgram's input parameters.
  @throws ProgramInvocationException
  This invocation is thrown if the Program can't be properly loaded. Causes
  may be a missing / wrong class or manifest files.
  @throws JobInstantiationException
  Thrown if an error occurred in the user-provided pact assembler. This may indicate
  missing parameters for generation.