def f(self, m):
        """
        The recursively composed version of filter function f.
        By default, returns logical **conjunction** of operator and single
        child operator
        """
        if len(self.children) == 0:
            return self._f(m)
        elif len(self.children) == 1:
            return self._f(m) and self.children[0].f(m)
        else:
            raise Exception(
                f"{self.__name__} does not support more than one child Matcher"
            )