'Parses a phone number from the candidate using phonenumberutil.parse and
verifies it matches the requested leniency. If parsing and verification succeed, a
corresponding PhoneNumberMatch is returned, otherwise this method returns None.
Arguments:
candidate -- The candidate match.
offset -- The offset of candidate within self.text.
Returns the parsed and validated phone number match, or None.'

def _parse_and_verify(self, candidate, offset):

    try:
        if ((not fullmatch(_MATCHING_BRACKETS, candidate)) or _PUB_PAGES.search(candidate)):
            return None
        if (self.leniency >= Leniency.VALID):
            if ((offset > 0) and (not _LEAD_PATTERN.match(candidate))):
                previous_char = self.text[(offset - 1)]
                if (self._is_invalid_punctuation_symbol(previous_char) or self._is_latin_letter(previous_char)):
                    return None
            last_char_index = (offset + len(candidate))
            if (last_char_index < len(self.text)):
                next_char = self.text[last_char_index]
                if (self._is_invalid_punctuation_symbol(next_char) or self._is_latin_letter(next_char)):
                    return None
        numobj = parse(candidate, self.preferred_region, keep_raw_input=True)
        if ((region_code_for_country_code(numobj.country_code) == 'IL') and (len(national_significant_number(numobj)) == 4) and ((offset == 0) or ((offset > 0) and (self.text[(offset - 1)] != U_STAR)))):
            return None
        if _verify(self.leniency, numobj, candidate):
            numobj.country_code_source = None
            numobj.raw_input = None
            numobj.preferred_domestic_carrier_code = None
            return PhoneNumberMatch(offset, candidate, numobj)
    except NumberParseException:
        pass
    return None
