docs: boolean validateSettings() throws IllegalArgumentException {
          // Validate values which do not require user input first to avoid unnecesary
          // work on the user part.
  
          // dates
          if (startDate != null && stopDate != null) {
              if (startDate.after(stopDate)) {
                  // stop date is before the start date.
                  throw new IllegalArgumentException(getLocalizedString("CWTRA0026E"));
              }
          }
  
          // Validate levels if specified.
          if (maxLevel != null && minLevel != null) {
              // We have both a max and min level. Check that the min level is
              // equal to or less than the max level
              if (minLevel.intValue() > maxLevel.intValue()) {
                  // Min is greater than Max level. Report error
                  throw new IllegalArgumentException(getLocalizedString("CWTRA0027E"));
              }
          }
  
          // Required options
          if (binaryRepositoryDir == null) {
              File[] servers = listRepositoryChoices();
              File repositoryDirFile = null;
              if (servers.length > 1) {
                  System.out.println(getLocalizedString("LVM_SelectServerPrompt"));
                  int i = 0;
                  for (File s : servers) {
                      i++;
                      System.out.println(i + ") " + getLogDirName(s));
                  }
                  String serverNum = null;
                  int serverNumInt = 0;
                  BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                  while (repositoryDirFile == null) {
                      System.out.print("[1-" + i + "]: ");
                      try {
                          serverNum = input.readLine();
                          serverNumInt = Integer.parseInt(serverNum);
                          if ((serverNumInt >= 1) && (serverNumInt <= i)) {
                              repositoryDirFile = servers[serverNumInt - 1];
                          }
                      } catch (NumberFormatException e) {
                          // Line does not contain a number.
                      } catch (IOException e) {
                          // Assume user just want to exit.
                          return true;
                      }
                  } // end while loop
              } else if (servers.length == 1) {
                  repositoryDirFile = servers[0];
              }
  
              if (repositoryDirFile != null) {
                  // appears we have a repositoryDir
                  try {
                      setBinaryRepositoryDir(repositoryDirFile.getCanonicalPath());
                      System.out.println(getLocalizedParmString("CWTRA0030I", new Object[] { binaryRepositoryDir }));
                  } catch (IOException e) {
                      // TODO We don't want to print stack traces so what should we be doing here?
                      //e.printStackTrace();
                  }
              }
  
              if (binaryRepositoryDir == null) {
                  throw new IllegalArgumentException(getLocalizedString("CWTRA0024E"));
              }
          }
  
          return false;
  
      }