docs: def extract_build(self, path='.', tests=None, full_symbols=False):
          """
          Download and extract the build and requested extra artifacts
  
          @type path:
          @param path:
  
          @type tests:
          @param tests:
  
          @type full_symbols:
          @param full_symbols:
          """
          if self._target == 'js':
              self.extract_zip('jsshell.zip', path=os.path.join(path))
          else:
              if self._platform.system == 'Linux':
                  self.extract_tar('tar.bz2', path)
              elif self._platform.system == 'Darwin':
                  self.extract_dmg(path)
              elif self._platform.system == 'Windows':
                  self.extract_zip('zip', path)
                  # windows builds are extracted under 'firefox/'
                  # move everything under firefox/ up a level to the destination path
                  firefox = os.path.join(path, 'firefox')
                  for root, dirs, files in os.walk(firefox):
                      newroot = root.replace(firefox, path)
                      for dirname in dirs:
                          os.mkdir(os.path.join(newroot, dirname))
                      for filename in files:
                          os.rename(os.path.join(root, filename), os.path.join(newroot, filename))
                  shutil.rmtree(firefox, onerror=onerror)
              elif self._platform.system == 'Android':
                  self.download_apk(path)
              else:
                  raise FetcherException("'%s' is not a supported platform" % self._platform.system)
  
          if tests:
              # validate tests
              tests = set(tests or [])
              if not tests.issubset(self.TEST_CHOICES):
                  invalid_test = tuple(tests - self.TEST_CHOICES)[0]
                  raise FetcherException("'%s' is not a supported test type" % invalid_test)
  
              os.mkdir(os.path.join(path, 'tests'))
              if 'common' in tests:
                  try:
                      self.extract_tar('common.tests.tar.gz', path=os.path.join(path, 'tests'))
                  except FetcherException:
                      self.extract_zip('common.tests.zip', path=os.path.join(path, 'tests'))
              if 'reftests' in tests:
                  try:
                      self.extract_tar('reftest.tests.tar.gz', path=os.path.join(path, 'tests'))
                  except FetcherException:
                      self.extract_zip('reftest.tests.zip', path=os.path.join(path, 'tests'))
              if 'gtest' in tests:
                  try:
                      self.extract_tar('gtest.tests.tar.gz', path=path)
                  except FetcherException:
                      self.extract_zip('gtest.tests.zip', path=path)
                  if self._platform.system == 'Windows':
                      libxul = 'xul.dll'
                  elif self._platform.system == 'Linux':
                      libxul = 'libxul.so'
                  elif self._platform.system == 'Darwin':
                      libxul = 'XUL'
                  else:
                      raise FetcherException("'%s' is not a supported platform for gtest" % self._platform.system)
                  os.rename(os.path.join(path, 'gtest', 'gtest_bin', 'gtest', libxul),
                            os.path.join(path, 'gtest', libxul))
                  shutil.copy(os.path.join(path, 'gtest', 'dependentlibs.list.gtest'),
                              os.path.join(path, 'dependentlibs.list.gtest'))
          if self._flags.coverage:
              self.extract_zip('code-coverage-gcno.zip', path=path)
  
          if not self._flags.asan and not self._flags.valgrind:
              if full_symbols:
                  symbols = 'crashreporter-symbols-full.zip'
              else:
                  symbols = 'crashreporter-symbols.zip'
              os.mkdir(os.path.join(path, 'symbols'))
              self.extract_zip(symbols, path=os.path.join(path, 'symbols'))
  
          self._layout_for_domfuzz(path)
          self._write_fuzzmanagerconf(path)