docs: @SuppressWarnings({ "resource" })
  	protected boolean runJavaCompiler(File classDirectory, Iterable<File> sourcePathDirectories,
  			Iterable<File> classPathEntries, boolean enableCompilerOutput,
  			boolean enableOptimization, IProgressMonitor progress) {
  		String encoding = this.encodingProvider.getDefaultEncoding();
  		if (Strings.isEmpty(encoding)) {
  			encoding = null;
  		}
  		if (progress.isCanceled()) {
  			return false;
  		}
  		final PrintWriter outWriter = getStubCompilerOutputWriter();
  		final PrintWriter errWriter;
  		if (enableCompilerOutput) {
  			errWriter = getErrorCompilerOutputWriter();
  		} else {
  			errWriter = getStubCompilerOutputWriter();
  		}
  		if (progress.isCanceled()) {
  			return false;
  		}
  		return getJavaCompiler().compile(
  				classDirectory,
  				sourcePathDirectories,
  				classPathEntries,
  				getBootClassPath(),
  				getJavaSourceVersion(),
  				encoding,
  				isJavaCompilerVerbose(),
  				enableOptimization ? getOptimizationLevel() : null,
  				outWriter,
  				errWriter,
  				getLogger(),
  				progress);
  	}