def METHOD_NAME(task_block):
    """
    Get all plugins used on tasks.
    Recursively process "block", "include_tasks" and "import_tasks".
    """
    _result = set()
    for tasks in task_block:
        for task in tasks:
            original_task = task
            if "." in task:
                task = task.split(".")[-1]
            if task == "block":
                _result.update(METHOD_NAME(tasks["block"]))
            elif task in ["include_tasks", "import_tasks"
                          "ansible.builtin.include_tasks",
                          "ansible.builtin.import_tasks"]:
                parent = os.path.dirname(playbook)
                include_task = tasks[task]
                if isinstance(include_task, dict):
                    include_file = os.path.join(
                        parent, include_task["file"]
                    )
                else:
                    include_file = os.path.join(parent, include_task)
                _result.update(get_plugins_from_playbook(include_file))
            elif task in ["include_role",
                          "ansible.builtin.include_role"]:
                _result.add(f"_{tasks[original_task]['name']}")
            elif task.startswith("ipa"):
                # assume we are only interested in 'ipa*' modules/roles
                _result.add(task)
            elif task == "role":
                # not really a "task", but we'll handle the same way.
                _result.add(f"_{tasks[task]}")
    return _result