docs: public int runCompiler(String... args) {
  		try {
  			final BQRuntime runtime = createRuntime(args);
  			final CommandOutcome outcome = runtime.run();
  			if (!outcome.isSuccess() && outcome.getException() != null) {
  				Logger.getRootLogger().error(outcome.getMessage(), outcome.getException());
  			}
  			return outcome.getExitCode();
  		} catch (ProvisionException exception) {
  			final Throwable ex = Throwables.getRootCause(exception);
  			if (ex != null) {
  				Logger.getRootLogger().error(ex.getLocalizedMessage());
  			} else {
  				Logger.getRootLogger().error(exception.getLocalizedMessage());
  			}
  		} catch (Throwable exception) {
  			Logger.getRootLogger().error(exception.getLocalizedMessage());
  		}
  		return Constants.ERROR_CODE;
  	}