docs: public void processArguments(String[] args) throws IOException {
          List<File> classFiles = new ArrayList<File>();
          List<File> jarFiles = new ArrayList<File>();
          String[] fileArgs = null;
  
          for (int i = 0; i < args.length; i++) {
              if (args[i].equalsIgnoreCase("--config")) {
                  configFileParser = new TraceConfigFileParser(new File(args[++i]));
                  configFileParser.parse();
                  InstrumentationOptions options = configFileParser.getInstrumentationOptions();
                  if (options.getAddFFDC()) {
                      setInstrumentWithFFDC(true);
                  }
                  setTraceType(options.getTraceType());
                  setInstrumentationOptions(options);
              } else if (args[i].equalsIgnoreCase("--debug") || args[i].equals("-d")) {
                  setDebug(true);
              } else if (args[i].equalsIgnoreCase("--tr")) {
                  setTraceType(TraceType.TR);
              } else if (args[i].equalsIgnoreCase("--websphere")) {
                  setTraceType(TraceType.TR);
              } else if (args[i].equalsIgnoreCase("--java-logging")) {
                  setTraceType(TraceType.JAVA_LOGGING);
              } else if (args[i].equalsIgnoreCase("--jsr47")) {
                  setTraceType(TraceType.JAVA_LOGGING);
              } else if (args[i].equalsIgnoreCase("--none")) {
                  setTraceType(TraceType.NONE);
              } else if (args[i].equalsIgnoreCase("--no-trace")) {
                  setTraceType(TraceType.NONE);
              } else if (args[i].equalsIgnoreCase("--ffdc")) {
                  setInstrumentWithFFDC(true);
              } else if (args[i].equalsIgnoreCase("--compute-frames")) {
                  setComputeFrames(true);
              } else {
                  fileArgs = new String[args.length - i];
                  System.arraycopy(args, i, fileArgs, 0, fileArgs.length);
                  break;
              }
          }
  
          if (fileArgs == null || fileArgs.length == 0) {
              throw new IllegalArgumentException("Empty file lists are illegal");
          }
  
          for (int i = 0; i < fileArgs.length; i++) {
              File f = new File(fileArgs[i]);
              if (!f.exists()) {
                  throw new IllegalArgumentException(f + " does not exist");
              } else if (f.isDirectory()) {
                  classFiles.addAll(getClassFiles(f, null));
              } else if (f.getName().endsWith(".class")) {
                  classFiles.add(f);
              } else if (f.getName().endsWith(".jar")) {
                  jarFiles.add(f);
              } else if (f.getName().endsWith(".zip")) {
                  jarFiles.add(f);
              } else {
                  System.err.println(f + " is an unexpected file type; ignoring");
              }
          }
  
          setClassFiles(classFiles);
          setJarFiles(jarFiles);
      }