code: public ZipBuilder addDirectory(File sourceDir, String targetDir) throws IOException {
          addDirectory(sourceDir, sourceDir, targetDir, jarOutputStream);
          return this;
      }
docs: Recursively adds a directory tree to the archive. The archive must not be closed.
  <p>
  Example:<br>
  
  <pre>
  sourceDir = /opt/work/classes
  targetDir = WEB-INF/classes
  
  /opt/work/classes/com/acme/Foo.class -&gt; WEB-INF/classes/com/acme/Foo.class
  </pre>
  
  @param sourceDir
  Root directory of tree to be added
  @param targetDir
  Relative path within the archive corresponding to root. Regardless of the OS, this
  path must use slashes ('/') as separators.
  
  @return this for fluent syntax
  @throws IOException
  on I/O error