docs: public static void main(String[] a) {
  
          CodeSwitcher s = new CodeSwitcher();
  
          if (a.length == 0) {
              showUsage();
  
              return;
          }
  
          File listFile = null;
          File baseDir  = null;
  
          for (int i = 0; i < a.length; i++) {
              String p = a[i];
  
              if (p.startsWith("+")) {
                  s.vSwitchOn.addElement(p.substring(1));
              } else if (p.startsWith("--basedir=")) {
                  baseDir = new File(p.substring("--basedir=".length()));
              } else if (p.startsWith("--pathlist=")) {
                  listFile = new File(p.substring("--pathlist=".length()));
              } else if (p.startsWith("-")) {
                  s.vSwitchOff.addElement(p.substring(1));
              } else {
                  s.addDir(p);
              }
          }
  
          if (baseDir != null) {
              if (listFile == null) {
                  System.err.println(
                      "--basedir= setting ignored, since only used for list files");
              } else {
                  if (!baseDir.isDirectory()) {
                      System.err.println("Skipping listfile since basedir '"
                                         + baseDir.getAbsolutePath()
                                         + "' is not a directory");
  
                      listFile = null;
                  }
              }
          }
  
          if (listFile != null) {
              try {
                  BufferedReader br =
                      new BufferedReader(new FileReader(listFile));
                  String st, p;
                  int    hashIndex;
                  File   f;
  
                  while ((st = br.readLine()) != null) {
                      hashIndex = st.indexOf('#');
                      p         = ((hashIndex > -1) ? st.substring(0, hashIndex)
                                                    : st).trim();
  
                      if (p.length() < 1) {
                          continue;
                      }
  
                      f = (baseDir == null) ? (new File(p))
                                            : (new File(baseDir, p));
  
                      if (f.isFile()) {
                          s.addDir(f);
                      } else {
                          System.err.println("Skipping non-file '" + p.trim()
                                             + "'");
                      }
                  }
              } catch (Exception e) {
                  System.err.println("Failed to read pathlist file '"
                                     + listFile.getAbsolutePath() + "'");
              }
          }
  
          if (s.size() < 1) {
              printError("No path specified, or no specified paths qualify");
              showUsage();
          }
  
          s.process();
  
          if (s.vSwitchOff.size() == 0 && s.vSwitchOn.size() == 0) {
              s.printSwitches();
          }
      }