Since `HierarchicalRoleInterface` extends `RoleInterface`, a call to `$this->valid()` is actually useless.

As I pointed in the PR description, I wonder if I should remove the `empty()` check. I think probably not, because if I remove the check, it will create a new `RecursiveRoleIterator` for an empty array later on `getChildren()`.