See `AccessControlMapper.add`.
        :param paths: see `AccessControlMapper.add`
        :param access_controls: see `AccessControlMapper.add`
        :param recursive: whether the access control list should be changed recursively for all nested collections

def add_or_replace(self, paths: Union[str, Iterable[str]],
                       access_controls: Union[AccessControl, Iterable[AccessControl]], recursive: bool=False):
        """
        See `AccessControlMapper.add`.
        :param paths: see `AccessControlMapper.add`
        :param access_controls: see `AccessControlMapper.add`
        :param recursive: whether the access control list should be changed recursively for all nested collections
        """