There is one big advantage is that we don't need to make RoleInterface extends IteratorAggregate. Having said this, my biggest problem in doing this is that "hasPermission" returning wrong result :/.