/**
  * Start Selenese Runner.
  *
  * @param args command line arguments.
  */
 public void run(String[] args) {
   int exitCode = 1;
   try {
     IConfig config = new DefaultConfig(args);
     String[] filenames = config.getArgs();
     if (filenames.length == 0) help();
     log.info("Start: " + PROG_TITLE + " {}", getVersion());
     Runner runner = new Runner();
     runner.setCommandLineArgs(args);
     setupRunner(runner, config, filenames);
     Result totalResult = runner.run(filenames);
     runner.finish();
     if (exitStrictly) exitCode = totalResult.getLevel().strictExitCode;
     else exitCode = totalResult.getLevel().exitCode;
   } catch (IllegalArgumentException e) {
     help("Error: " + e.getMessage());
   } catch (Throwable t) {
     t.printStackTrace();
   }
   exit(exitCode);
 }