def extract(self, path, outdir, concurrency_safe=False, **kwargs):
    """Extracts an archive's contents to the specified outdir with an optional filter.

    Keyword arguments are forwarded to the instance's self._extract() method.

    :API: public

    :param string path: path to the zipfile to extract from
    :param string outdir: directory to extract files into
    :param bool concurrency_safe: True to use concurrency safe method.  Concurrency safe extraction
      will be performed on a temporary directory and the extacted directory will then be renamed
      atomically to the outdir.  As a side effect, concurrency safe extraction will not allow
      overlay of extracted contents onto an existing outdir.
    """
    if concurrency_safe:
      with temporary_dir() as temp_dir:
        self._extract(path, temp_dir, **kwargs)
        safe_concurrent_rename(temp_dir, outdir)
    else:
      # Leave the existing default behavior unchanged and allows overlay of contents.
      self._extract(path, outdir, **kwargs)