/**
   * Extracts a directory and all sub content to disk
   *
   * @param dirName the directory name to extract
   * @return the File used to extract the content to. A value of <code>null</code> is returned if
   *     the directory to extract does not exist or if content extraction is not supported. This
   *     method is derived from ZipBundleFile#extractDirectory(String).
   */
  protected synchronized File extractDirectory(String dirName) {
    Enumeration<String> entries = delegate.getEntryPaths(dirName);

    while (entries.hasMoreElements()) {
      String entryPath = entries.nextElement();
      if (entryPath.startsWith(dirName)) {
        getFile(entryPath, false);
      }
    }
    return getExtractFile(dirName);
  }
 @Override
 public Enumeration<String> getEntryPaths(String path) {
   return delegate.getEntryPaths(path);
 }