code: private void initOutputFormat() {
  		if (this.userCodeClassLoader == null) {
  			try {
  				this.userCodeClassLoader = LibraryCacheManager.getClassLoader(getEnvironment().getJobID());
  			} catch (IOException ioe) {
  				throw new RuntimeException("Library cache manager could not be instantiated.", ioe);
  			}
  		}
  		// obtain task configuration (including stub parameters)
  		Configuration taskConf = getTaskConfiguration();
  		taskConf.setClassLoader(this.userCodeClassLoader);
  		this.config = new TaskConfig(taskConf);
  
  		try {
  			this.format = config.<OutputFormat<IT>>getStubWrapper(this.userCodeClassLoader).getUserCodeObject(OutputFormat.class, this.userCodeClassLoader);
  
  			// check if the class is a subclass, if the check is required
  			if (!OutputFormat.class.isAssignableFrom(this.format.getClass())) {
  				throw new RuntimeException("The class '" + this.format.getClass().getName() + "' is not a subclass of '" + 
  						OutputFormat.class.getName() + "' as is required.");
  			}
  		}
  		catch (ClassCastException ccex) {
  			throw new RuntimeException("The stub class is not a proper subclass of " + OutputFormat.class.getName(), ccex);
  		}
  		
  		// configure the stub. catch exceptions here extra, to report them as originating from the user code 
  		try {
  			this.format.configure(this.config.getStubParameters());
  		}
  		catch (Throwable t) {
  			throw new RuntimeException("The user defined 'configure()' method in the Output Format caused an error: " 
  				+ t.getMessage(), t);
  		}
  	}
docs: Initializes the OutputFormat implementation and configuration.
  
  @throws RuntimeException
  Throws if instance of OutputFormat implementation can not be
  obtained.