'Uses several techniques to try to find out what methods are allowed for
an URL.
:param fuzzable_request: A fuzzable_request instance that contains
(among other things) the URL to test.'

def discover(self, fuzzable_request):

    if (not self._exec):
        raise RunOnce()
    if self._exec_one_time:
        self._exec = False
    domain_path = fuzzable_request.get_url().get_domain_path()
    if (domain_path not in self._already_tested):
        self._already_tested.add(domain_path)
        (_allowed_methods, id_list) = self._identify_allowed_methods(domain_path)
        self._analyze_methods(domain_path, _allowed_methods, id_list)
