def search_in_menu(menu, match):
    """ Recursive search in tree.

    The search procedure is insensitive to the cast.

    Parameters
    ----------
    menu: hierachic dict (mandatory)
        each key is a sub module of the module. Leafs contain a list with
        the url to the documentation.
    match: str (mandatory)
        the string used to filter the menu items

    Returns
    -------
    is_included: bool
        True if we found match in the tree, False otherwise.
    """
    # Initialize the default value: match not found
    is_included = False

    # If we are on a leaf, check in the module list
    if isinstance(menu, list):
        return is_included

    # Go through the current module sub modules
    for module_name, child_modules in menu.items():

        # Stop criteria
        if isinstance(child_modules, list):
            return is_included or match in module_name.lower()

        # Recursive search
        is_included = (
            is_included or match in module_name.lower() or
            search_in_menu(child_modules, match))

        # Stop criteria
        if is_included:
            return is_included

    return is_included