/**
  * Returns all parent roles for the given role.
  *
  * @param \TYPO3\Flow\Security\Policy\Role $role The role to get the parents for
  * @return array<TYPO3\Security\Policy\Role> Array of parent roles, indexed by role identifier
  */
 public function getAllParentRoles(\TYPO3\Flow\Security\Policy\Role $role)
 {
     $this->initializeRolesFromPolicy();
     $result = array();
     $parentRoles = $role->getParentRoles();
     foreach ($parentRoles as $currentParentIdentifier => $currentParent) {
         if (isset($result[$currentParentIdentifier])) {
             continue;
         }
         $result[$currentParentIdentifier] = $currentParent;
         $currentGrandParentRoles = $this->getAllParentRoles($currentParent);
         foreach ($currentGrandParentRoles as $currentGrandParentRoleIdentifier => $currentGrandParentRole) {
             if (!isset($result[$currentGrandParentRoleIdentifier])) {
                 $result[$currentGrandParentRoleIdentifier] = $currentGrandParentRole;
             }
         }
     }
     return $result;
 }