/**
   * Removes a given role from this manager.
   *
   * @param role the role to remove, cannot be <code>null</code>.
   * @return <code>true</code> if the role was removed (i.e., it was managed by this manager), or
   *     <code>false</code> if it was not found.
   */
  public boolean removeRole(String name) {
    if (name == null) {
      throw new IllegalArgumentException("Name cannot be null!");
    }

    checkPermissions();

    // Cannot remove predefined roles...
    if (isPredefinedRole(name)) {
      return false;
    }

    try {
      Role result = m_store.removeRole(name);
      if (result != null) {
        // FELIX-3755: Remove the role as (required)member from all groups...
        removeRoleFromAllGroups(result);

        unwireChangeListener(result);
        m_roleChangeReflector.roleRemoved(result);

        return true;
      }

      return false;
    } catch (Exception e) {
      throw new BackendException("Failed to remove role " + name + "!", e);
    }
  }