https://github.com/ansible/ansible/blob/adcdee9bb0031577698246fcfc51f8af63a56a17/lib/ansible/playbook/task.py#L124

##### SUMMARY
Handlers can not be referenced with the `FQCN : handler name` notation if the handler name contains the role name.

Not sure what the reasoning is behind this, but a `httpd` role can't have a `restart httpd` handler name if you want to notify it with `notify: 'httpd : restart httpd'`

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
task handler fqcn

##### ANSIBLE VERSION
```
ansible 2.9.10
  config file = /home/twouters/.ansible.cfg
  configured module search path = ['/home/twouters/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.3 (default, May 17 2020, 18:15:42) [GCC 10.1.0]
```

##### CONFIGURATION
Default configuration

##### OS / ENVIRONMENT
All (N/A)

##### STEPS TO REPRODUCE
```
➜  issues-70582 $ find ./
./
./roles
./roles/test
./roles/test/handlers
./roles/test/handlers/main.yml
./roles/test/tasks
./roles/test/tasks/main.yml
./pb.yml
```

`pb.yml`
```yaml
---

- hosts: localhost
  roles:
    - test
```

`roles/test/tasks/main.yml`
```yaml
---

- name: always trigger handler
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 1'

- name: always trigger handler 2
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 2 test'
```

`roles/test/handlers/main.yml`
```yaml
---

- name: handler 1
  debug:
    msg: this is handler 1

- name: handler 2 test
  debug:
    msg: this handler is not found
```

##### EXPECTED RESULTS
Two handlers are detected.

##### ACTUAL RESULTS
Only the handler that doesn't contain the role name in its name gets detected

```
➜  issues-70582 $ ansible-playbook pb.yml           
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not
match 'all'

PLAY [localhost] ***********************************************************************************************

TASK [Gathering Facts] *****************************************************************************************
ok: [localhost]

TASK [test : always trigger handler] ***************************************************************************
changed: [localhost]

TASK [test : always trigger handler 2] *************************************************************************
ERROR! The requested handler 'test : handler 2 test' was not found in either the main handlers list nor in the listening handlers list
```
"""Closure to wrap ``StrategyBase._process_pending_results`` and invoke the task debugger"""
    @functools.wraps(func)
    def inner(self, iterator, one_pass=False, max_passes=None, do_handlers=False):
        status_to_stats_map = (
            ('is_failed', 'failures'),
            ('is_unreachable', 'dark'),
            ('is_changed', 'changed'),
            ('is_skipped', 'skipped'),
        )
        
        prev_host_states = iterator._host_states.copy()
        results = func(self, iterator, one_pass=one_pass, max_passes=max_passes, do_handlers=do_handlers)
        _processed_results = []
        for result in results:
            task = result._task
            host = result._host
            _queued_task_args = self._queued_task_cache.pop((host.name, task._uuid), None)
            task_vars = _queued_task_args['task_vars']
            play_context = _queued_task_args['play_context']
            
            try:
                prev_host_state = prev_host_states[host.name]
            except KeyError:
                prev_host_state = iterator.get_host_state(host)
            while result.needs_debugger(globally_enabled=self.debugger_active):
                next_action = NextAction()
                dbg = Debugger(task, host, task_vars, play_context, result, next_action)
                dbg.cmdloop()
                if next_action.result == NextAction.REDO: