def has_role_collective(self, identifiers, role_s, logical_operator):
        """
        :param identifiers: a collection of identifiers
        :type identifiers:  subject_abcs.IdentifierCollection

        :param role_s: a collection of 1..N Role identifiers
        :type role_s: Set of String(s)

        :param logical_operator:  indicates whether all or at least one
                                  permission check is true (any)
        :type: any OR all (from python standard library)

        :returns: a Boolean
        """
        self.assert_realms_configured()

        # interim_results is a set of tuples:
        interim_results = self.has_role(identifiers, role_s, log_results=False)

        results = logical_operator(has_role for role, has_role
                                   in interim_results)

        if results:
            self.notify_event(identifiers,
                              list(role_s),
                              'AUTHORIZATION.GRANTED',
                              logical_operator)
        else:
            self.notify_event(identifiers,
                              list(role_s),
                              'AUTHORIZATION.DENIED',
                              logical_operator)

        return results
:param identifiers: a collection of identifiers
        :type identifiers:  subject_abcs.IdentifierCollection

        :param role_s: a collection of 1..N Role identifiers
        :type role_s: Set of String(s)

        :param logical_operator:  indicates whether all or at least one
                                  permission check is true (any)
        :type: any OR all (from python standard library)

        :returns: a Boolean