We add two new function, getRoleMember(role, index) and getRoleMemberCount(role) to AccessControl. The function and parameter names are borrowed from OpenZeppelin to make them familiar. These are quite lightweight, and AccessControlStorage already uses EnumerableSet, so it made sense to just add them to AccessControl instead of creating a new AccessControlEnumerable contract. We also add tests for positive and revert cases.
We add two new function, getRoleMember(role, index) and getRoleMemberCount(role) to AccessControl. The function and parameter names are borrowed from OpenZeppelin to make them familiar. These are quite lightweight, and AccessControlStorage already uses EnumerableSet, so it made sense to just add them to AccessControl instead of creating a new AccessControlEnumerable contract. We also add tests for positive and revert cases.