This method checks Role inheritance using a depth-first traversal of the Role list.
The highest priority parent (i.e., the parent most recently added) is checked first,
and its respective parents are checked similarly before the lower-priority parents of
the Role are checked.