def METHOD_NAME(address: str, borough: str) -> AddressVerificationResult:
    """
    Attempt to verify the given address, returning the address, and whether it
    was actually verified. If the address was verified, the returned address
    may have changed.
    """
    search_text = get_geocoding_search_text(address, borough)
    features = geocoding.search(search_text)
    zipcode = ""
    if features is None:
        # Hmm, the geocoding service is unavailable. This
        # is unfortunate, but we don't want it to block
        # onboarding, so keep a note of it and let the
        # user continue.
        address_verified = False
    elif len(features) == 0:
        # The geocoding service is available, but the
        # address produces no results.
        raise forms.ValidationError(_("The address provided is invalid."))
    else:
        address_verified = True
        props = features[0].properties
        address = props.name
        zipcode = props.postalcode or ""
        borough = BOROUGH_GID_TO_CHOICE[props.borough_gid]
    return AddressVerificationResult(address, borough, address_verified, zipcode)