@bakura10 You're right, this introduces a bug. Since `hasRole()` looks recursively for that role, this will throw an exception if we try to add a role that already is children of other role.
I was sugested this check to avoid multiple providers conflict. But will no longer support multiple providers. :D