def verify_path2(path, kind=None, expect=True):
    """Verifies that a given path exists.

    :param path: path
    :type path: Path
    :param kind:

        ("file", "dir"), corresponding with paths to be
        checked as either files or directories.

    :type kind: str
    :param expect: Indicates if the path is expected to the indicated kind.
    :type expect: bool
    :returns:
        tuple (result, message)
        WHERE
        result(bool) indicates if the expectation was satisfied.
        message(str) is a description of the result.
    :rtype: tuple
    """
    if kind == 'file':
        exists = path.is_file()
        if exists and not expect:
            result = False
            msg = f'The file {path} already exists.'
        elif not exists and expect:
            result = False
            msg = f'The file {path} does not exist.'
        else:
            result = True
            msg = None
    elif kind == 'dir':
        exists = path.is_dir()
        if exists and not expect:
            result = False
            msg = f'The directory {path} already exists.'
        elif not exists and expect:
            result = False
            msg = f'The directory {path} does not exist.'
        else:
            result = True
            msg = None
    elif kind == None:
        exists = path.exists()
        if exists and not expect:
            result = False
            msg = f'The {path} already exists.'
        elif not exists and expect:
            result = False
            msg = f'The {path} does not exist.'
        else:
            result = True
            msg = None
    else:
        result = False
        msg = (
            f'{kind} is not a valid kind (None, dir, file) for this function.')
    return result, msg
