code: protected boolean initSettings(String[] args) throws Exception {
        if (settingsInitialized) {
           return true;
        }
        settingsInitialized = true;
        if (args != null && args.length > 0) {
           int secondArg = 0;
           boolean needSettingsArg = false;
           if (settings == null) {
              settings = initSettingsFromFile(args[0]);
              if (settings != null) {
                 secondArg = 1;
              } else {
                 needSettingsArg = true;
              }
           }
           if (secondArg < args.length) {
              if (needSettingsArg) {
                 settings = new CachingProperties(new Settings());
              }
              SettingsBindingService.getInstance().getFactory().getParser(new StringReader(args[secondArg])).parse(settings);
           }
        }
        boolean rv = settings != null;
        if (!rv) {
           log.severe(SETTINGS_HELP);
        }
        return rv;
     }
docs: Called from {@link #buildReport(java.lang.String[]) } and {@link #buildReport(java.lang.String[], java.io.OutputStream)
  }. Uses two optional arguments: the path to a file and a string with settings. Settings from a string with
  settings will be added to settings already present. This method will only execute once.
  
  @see #initSettingsFromFile(java.lang.String)
  @see SettingsBindingService#getFactory()
  
  @param args at most two are used, may be null
  @throws Exception when a failure occurs, also when settings are not initialized properly