docs: static public void main(String[] sa)
      throws IOException, TarMalformatException {
  
          try {
              if (sa.length < 1) {
                  System.out.println(RB.singleton.getString(RB.DBBACKUP_SYNTAX,
                          DbBackup.class.getName()));
                  System.out.println();
                  System.out.println(RB.singleton.getString(RB.LISTING_FORMAT));
                  System.exit(0);
              }
  
              if (sa[0].equals("--save")) {
                  boolean overWrite = sa.length > 1
                                      && sa[1].equals("--overwrite");
  
                  if (sa.length != (overWrite ? 4
                                              : 3)) {
                      throw new IllegalArgumentException();
                  }
  
                  DbBackup backup = new DbBackup(new File(sa[sa.length - 2]),
                                                 sa[sa.length - 1]);
  
                  backup.setOverWrite(overWrite);
                  backup.write();
              } else if (sa[0].equals("--list")) {
                  if (sa.length < 2) {
                      throw new IllegalArgumentException();
                  }
  
                  String[] patternStrings = null;
  
                  if (sa.length > 2) {
                      patternStrings = new String[sa.length - 2];
  
                      for (int i = 2; i < sa.length; i++) {
                          patternStrings[i - 2] = sa[i];
                      }
                  }
  
                  new TarReader(new File(sa[1]), TarReader
                      .LIST_MODE, patternStrings, new Integer(DbBackup
                          .generateBufferBlockValue(new File(sa[1]))), null)
                              .read();
              } else if (sa[0].equals("--extract")) {
                  boolean overWrite = sa.length > 1
                                      && sa[1].equals("--overwrite");
                  int firstPatInd = overWrite ? 4
                                              : 3;
  
                  if (sa.length < firstPatInd) {
                      throw new IllegalArgumentException();
                  }
  
                  String[] patternStrings = null;
  
                  if (sa.length > firstPatInd) {
                      patternStrings = new String[sa.length - firstPatInd];
  
                      for (int i = firstPatInd; i < sa.length; i++) {
                          patternStrings[i - firstPatInd] = sa[i];
                      }
                  }
  
                  File tarFile       = new File(sa[overWrite ? 2
                                                             : 1]);
                  int  tarReaderMode = overWrite ? TarReader.OVERWRITE_MODE
                                                 : TarReader.EXTRACT_MODE;
  
                  new TarReader(
                      tarFile, tarReaderMode, patternStrings,
                      new Integer(DbBackup.generateBufferBlockValue(tarFile)),
                      new File(sa[firstPatInd - 1])).read();
              } else {
                  throw new IllegalArgumentException();
              }
          } catch (IllegalArgumentException iae) {
              System.out.println(RB.singleton.getString(RB.DBBACKUP_SYNTAXERR,
                      DbBackup.class.getName()));
              System.exit(2);
          }
      }